求大佬帮写一个C语言程序,麻烦加上注解 5C

给出n个学生的考试成绩表,每条记录由学号、姓名和分数和名次组成,设计算法完成下列操作:(1)设计一个显示对学生信息操作的菜单函数如下所示:  1、录入学生基本信息  2、直接插入排序3、折半插入排序 4、冒泡排序5快速排序、6简单选择排序、 8、输出学生信息0、退出等基本操作

1个回答

来自:https://blog.csdn.net/printf88/article/details/78862839

已经调试通过,满意请采纳,急需积分

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
int n;  
typedef struct student{  
    char num[20];  
    char name[25];  
    int score;    
}*Stu,StuNode;  
 
void Build(Stu stu)  
{  
    FILE *fp;  
    char name[20];  
    int score,i;  
    char num[20];  
    fp=fopen("E:\\Student.txt","w");  
    printf("请输入学生人数:");  
    scanf("%d",&n);  
 
    printf("请输入学生信息(学号,姓名,成绩):\n");  
    for(i=1;i<=n;i++)  
    {  
        scanf("%s %s %d",num,name,&score);  
        fprintf(fp,"%s %s %d\n",num,name,score);  
    }  
    printf("登录成功.\n");  
    fclose(fp);  
}  
void ReadFile(Stu &stu)  
{//读文件,存到Stu结构体中  
    FILE *fp;  
    int i;  
    stu=(Stu)malloc(sizeof(StuNode)*(n+1));  
    fp=fopen("E:\\Student.txt","r");  
    for(i=1;i<=n;i++)  
        fscanf(fp,"%s %s %d",stu[i].num,stu[i].name,&stu[i].score);  
 
    fclose(fp);  
}  
 
void Display(Stu stu)  
{//显示数据  
    int i;  
    int temp=1,index=0;  
    for(i=1;i<=n;i++)  
    {  
        printf("%2d %15s %15s %5d\n",temp,stu[i].num,stu[i].name,stu[i].score);  
        if(i<n && stu[i].score==stu[i+1].score)  
            index++;          
        else  
        {  
            temp+=index+1;  
            index=0;  
        }  
    }  
     
    free(stu);  
}  
 
void Swap(StuNode &a,StuNode &b)  
{  
    StuNode temp;  
    temp=a;  
    a=b;  
    b=temp;  
}  
 
void InsertSort(Stu stu)  
{//直接插入排序  
    int i,j;  
    int key;  
    char name[20];  
    char num[20];  
    StuNode temp;  
    stu=(Stu)malloc(sizeof(StuNode)*(n+1));  
    ReadFile(stu);  
     
    for(i=n;i>=1;i--)  
    {  
        temp=stu[i];  
        j=i-1;  
        while(j>=1 && temp.score> stu[j].score)  
        {  
            stu[j+1]=stu[j];  
            j--;  
        }  
        j+=1;  
        stu[j]=temp;  
    }  
    Display(stu);  
}  
 
void BubbleSort(Stu stu)  
{//冒泡排序  
    int i,j,peace;  
    stu=(Stu)malloc(sizeof(StuNode)*(n+1));  
    ReadFile(stu);  
    peace=1;  
    for(i=1;i<=n-1 && peace;i++)  
    {  
        peace=0;  
        for(j=1;j<=n-j;j++)  
        {  
            if(stu[j].score < stu[j+1].score)  
            {  
                Swap(stu[j],stu[j+1]);  
                peace=1;  
            }  
        }  
    }  
    Display(stu);  
}  
int Partition(Stu stu,int low,int high)  
{//快速排序--排序  
    int Pi;  
    stu[0]=stu[low];  
     
    Pi=stu[0].score;  
    while(low<high)  
    {  
        while(low<high && stu[high].score<=Pi)  
            high--;  
        stu[low]=stu[high];  
        while(low<high && stu[low].score>=Pi)  
            low++;  
        stu[high]=stu[low];  
    }  
    stu[low]=stu[0];  
    return low;  
}  
void QuickSort(Stu stu,int low,int high)  
{//快速排序--二分  
    int Pi;  
    if(low<high)  
    {  
        Pi=Partition(stu,low,high);  
        QuickSort(stu,low,Pi-1);  
        QuickSort(stu,Pi+1,high);  
    }  
}  
void SeletionSort(Stu stu)  
{//选择排序  
    int i,j,temp;  
    stu=(Stu)malloc(sizeof(StuNode)*(n+1));  
    ReadFile(stu);  
    for(i=1;i<=n-1;i++)  
    {  
        int key=stu[i].score;  
        for(j=i+1;j<=n;j++)  
        {  
            if(key<stu[j].score)  
            {  
                temp=j;  
                key=stu[j].score;  
            }  
        }  
        if(i!=j)  
            Swap(stu[i],stu[temp]);  
    }  
    Display(stu);  
}  
void HeapAdjust(Stu stu,int s,int m)  
{//调整堆  
    int j;  
    StuNode rc;  
    rc=stu[s];  
     
    for(j=2*s;j<=m;j*=2)  
    {  
        if(j<m && stu[j].score>stu[j+1].score)  
            j++;  
        if(!(rc.score>stu[j].score))  
            break;  
        stu[s]=stu[j];  
            s=j;  
    }  
    stu[s]=rc;  
}  
void HeapSort(Stu stu)  
{//堆排序  
    int i;  
    ReadFile(stu);  
    for(i=n/2;i>0;i--)  
        HeapAdjust(stu,i,n);  
    for(i=n;i>1;i--)  
    {  
        Swap(stu[1],stu[i]);  
        HeapAdjust(stu,1,i-1);  
    }  
    Display(stu);  
}  
 
void Merge(Stu stu,int low,int mid,int high)  
{//归并排序--归并  
    if(low>=high)  
        return ;  
    int i,j,k;  
    StuNode temp[1005];  
    i=low;j=mid+1;k=0;  
    while(i<=mid && j<=high)  
    {  
        if(stu[i].score>stu[j].score)  
            temp[k++]=stu[i++];  
        else  
            temp[k++]=stu[j++];  
    }  
    while(i<=mid)  
        temp[k++]=stu[i++];  
    while(j<=high)  
        temp[k++]=stu[j++];  
    for(i=low;i<=high;i++)  
    {  
        stu[i]=temp[i-low];  
        printf("%d ",stu[i].score);  
    }  
    putchar('\n');  
     
}  
 
void MergeSort(Stu stu,int low,int high)  
{//归并排序--二分  
    if(low>=high)  
        return ;  
    int mid=(low+high)/2;  
    MergeSort(stu,low,mid);  
    MergeSort(stu,mid+1,high);  
    Merge(stu,low,mid,high);  
}  
 
int main()  
{  
    Stu stu;  
    int key;  
    while(1)  
    {  
        printf("    ----------------------\n");  
        printf("    1.录入学生基本信息。\n");  
        printf("    2.直接插入排序。\n");  
        printf("    3.冒泡排序。\n");  
        printf("    4.快速排序。\n");  
        printf("    5.简单选择排序。\n");  
        printf("    6.堆排序。\n");  
        printf("    7.2-路归并排序。\n");  
        printf("    8.输出学生信息。\n");  
        printf("    9.退出。\n");  
        printf("    ----------------------\n");  
        scanf("%d",&key);  
                 
        switch(key)  
        {  
            case 1:  
                Build(stu);  
                break;  
            case 2:  
                InsertSort(stu);  
                break;  
            case 3:  
                BubbleSort(stu);  
                break;  
            case 4:  
                ReadFile(stu);  
                QuickSort(stu,1,n);  
                Display(stu);  
                break;  
            case 5:  
                SeletionSort(stu);  
                break;  
            case 6:  
                HeapSort(stu);  
                break;  
            case 7:  
                ReadFile(stu);  
                MergeSort(stu,1,n);  
                Display(stu);  
                break;  
            case 8:  
                ReadFile(stu);  
                Display(stu);  
                break;  
            default:  
                return 0;  
        }  
    }  
} 
dabocaiqq
请你们大家多多姿瓷我菠菜菌 回复weixin_44343824: 采纳后可帮你修改
2 个月之前 回复
weixin_44343824
weixin_44343824 有问题,我运行不了,而且·我需要的是直接插入排序,折半插入排序,冒泡排序,快速排序,简单选择排序
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
求C++大佬帮我排查一下程序的问题
是下面的一个判断回文数的小程序: int main() { string a; cin >> a; const int c = a.length(); string b; for (int i = 0; i < c; i++) b[i] = a[c - i - 1]; if (a == b)cout << "yes"; else cout << "no"; } ```这个程序在visual studio 2019里没有提示错误,但是实际运行时总提示“string subscription out of range”,这是哪里错了呢? ```
用C语言编写简单学生学籍管理系统。有一段已经定义好的函数,求大佬帮忙编写完整。在线急等。求各位大佬帮帮忙,重谢!!
``` #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> typedef struct { int Id; //学号 char name[10]; //姓名 char sex[2]; //性别 int room; //宿舍号 int tel; //电话号码 } StudentInfo; //定义学生信息的结构体类型 typedef struct { int Id; char courseNo[10]; //课程编号 char courseName[20];//课程名 double a; // 课程学分 double b; // 平时成绩 double c; // 实验成绩 double d; // 卷面成绩 double e; // 综合成绩 double f; // 实际学分 } MarkInfo; //定义课程信息的结构体类型 void ReadFile(); //读取文件 void DisplayMainMenu(); //显示主菜单 void DataInput(); //数据录入 void DataQuery(); //数据查询 void DataDelete(); //数据删除 void DataSort(); //数据排序 void QueryById(int ); //按学号查询 void QueryByRoom(int ); //按宿舍查询 void QueryMark(int ); //按成绩查询 void sort1(); //按综合成绩排序 void sort2(); //按实得学分排序 void markput(); //成绩输出 StudentInfo si[30]; // 学生信息结构数组 MarkInfo mi[150]; // 学生成绩结构数组 int sp=0; // 学生信息结构数组中学生数 int mp=0; // 学生成绩结构数组中成绩数 void ReadFile( )//读取文件 { FILE *fp; if((fp = fopen("A.txt","r"))==NULL) printf("cant open the file\n"); while (!feof(fp)) { fscanf(fp,"%d%s%s%d%d",&si[sp].Id,si[sp].name,&si[sp].sex,&si[sp].room,&si[sp].tel); sp++; } fclose (fp); fp = fopen("B.txt","r"); while (!feof(fp)) { fscanf(fp,"%d%s%s%d%d%d%d",&mi[mp].Id,mi[mp].courseNo,mi[mp].courseName,&mi[mp].a,&mi[mp].b,&mi[mp].c, &mi[mp].d); if (mi[mp].c == -1) mi[mp].e = 0.3*(mi[mp].b/1.0)+0.7*(mi[mp].d/1.0); else mi[mp].e = 0.15*(mi[mp].b/1.0)+0.15*(mi[mp].c/1.0)+0.7*(mi[mp].d/1.0); if(mi[mp].e >= 90. ) mi[mp].f = mi[mp].a; else if ( mi [mp].e >= 80. ) mi[mp].f = mi[mp].a *0.8; else if ( mi[mp].e >= 70. ) mi[mp].f = mi[mp].a *0.75; else if ( mi[mp].e >= 60. ) mi[mp].f = mi[mp].a *0.6; else mi[mp].f = 0; mp++; } fclose(fp); } void DisplayMainMenu() //显示主菜单 { printf ("\n 1) 数据录入 \n 2) 数据查询 \n 3) 数据删除 \n 4) 数据排序 \n 5) 程序结束\n "); } void DataInput()//数据查询 { FILE *fp; int i; printf ("学生的学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩\n"); while(1) { scanf("%d%s%s%d%d%d%d",&mi[mp].Id,mi[mp].courseNo,mi[mp].courseName,&mi[mp].a,&mi[mp].b,&mi[mp].c, &mi[mp].d); if(mi[mp].Id==-1) break; if (mi[mp].c == -1) mi[mp].e = 0.3*mi[mp].b+0.7*mi[mp].d; else mi[mp].e = 0.15*mi[mp].b+0.15*mi[mp].c+0.7*mi[mp].d; if ( mi[mp].e >= 90. ) mi[mp].f = mi[mp].a; else if ( mi [mp].e >= 80. ) mi[mp].f = mi[mp].a *0.8; else if ( mi[mp].e >= 70. ) mi[mp].f = mi[mp].a *0.75; else if ( mi[mp].e >= 60. ) mi[mp].f = mi[mp].a *0.6; else mi[mp].f = 0; mp++; } fp = fopen("B.txt","r+"); for(i=0;i<mp;i++) { fprintf(fp,"%d%s%s%d%d%d%d",&mi[i].Id,mi[i].courseNo,mi[i].courseName,&mi[i].a,&mi[mp].b,&mi[i].c, &mi[i].d); fclose(fp); } } void DataQuery()//数据查询 { int x,y,z; printf("\n 1) 学生基本情况查询\n 2) 成绩查询\n");//--------------------------选择查询内容 scanf("%d",&x); if (x == 1) // 查询学生信息 { printf ("1) 按学号查询 2) 按宿舍查询\n");//-------------------------------选择查询方式 scanf("%d",&y); if (y == 1 ) { printf ("输入学号\n");//-----------------------------------------------按学生学号查询 scanf ("%d",&z); QueryById(z); } if (y == 2) { } if ( x ==2) // 查询成绩信息---------------------------------------查询学生成绩(输入学号) { printf ("输入学号\n"); scanf ("%d",&y); QueryMark(y); } } } void DataDelete()//数据删除 { FILE *fp; int x; int i=0; int k,d; printf( "输入学号\n"); scanf( "%d",&x); while( si[i].Id != x) i++; if (i<sp-1) { for ( k=i; k<sp-1; k++) { si[k] = si[k+1]; } } if ( i<sp) sp--; d = 0; for (k=0;k<mp;k++) { if ( mi[k].Id == x ) d++; else mi[k-d] = mi[k]; } mp = mp - d; fp = fopen("D:B.txt","r+"); for(i=0;i<mp;i++) fprintf(fp,"%d%s%s%d%d%d%d",&mi[i].Id,mi[i].courseNo,mi[i].courseName,&mi[i].a,&mi[i].b,&mi[i].c, &mi[i].d); } void sort1() { int i,j; MarkInfo t; for (i=mp-1;i>=1;i--) { for (j=0;j<i;j++) { if (mi[j].e>mi[j+1].e) { t=mi[j]; mi[j] = mi[j+1]; mi[j+1] = t; } } } markput(); } ``` 这段函数是定义好的,求大佬帮帮忙编写完! 要求:使用下面的数据,用C语言设计一个简单的学籍管理系统,实现出最基本的功能。 学生基本信息文件(A.TXT)及其内容:A.TXT文件不需要编程录入数据,可用文本编辑工具直接生成: 学号 姓名 性别 宿舍号码 电话号码 01 张成成 男 501 87732111 02 李成华 女 101 87723112 03 王成凤 女 101 87723112 04 张明明 男 502 87734333 05 陈东 男 501 87732111 06 李果 男 502 87734333 07 张园园 女 102 87756122 … …. .. … ……….. 学生成绩基本信息文件(B.TXT)及其内容: 学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得学分 01 A01 大学物理 3 66 78 82 02 B03 高等数学 4 78 -1 90 01 B03 高等数学 4 45 -1 88 02 C01 VF 3 65 76 66 … …. ………. .. .. … (一) 功能要求及说明: (1) 数据录入功能: 对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算。 综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%; 如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70% . 实得学分的计算: 采用等级学分制. 综合成绩在90-100之间 ,应得学分=学分*100% 综合成绩在80-90之间 ,应得学分=学分*80% 综合成绩在70-80之间 ,应得学分=学分*75% 综合成绩在60-70之间 ,应得学分=学分*60% 综合成绩在60以下 ,应得学分=学分*0% (2)查询功能:分为学生基本情况查询和成绩查询两种 A:学生基本情况查询: A1----输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。 A2---输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。 B:成绩查询: B1:输入一个学号时,查询出此生的所有课程情况,格式如下: 学 号:xx 姓 名:xxxxx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx … … … … ……… … … 共修:xx科,实得总学分为: xxx (3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。 (4 ) 排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
C语言问题求大佬解答啊啊
![图片说明](https://img-ask.csdn.net/upload/202002/07/1581008815_303988.jpg) 这个为什么答案老是不对啊 ``` #include<stdio.h> int cn(int a,int b); int main() { int n,a,b,s; scanf("%d%d",&a,&b); s=cn(a,b); printf("%d\n",s); return 0; } /* 请在这里填写答案 */ int g(int a) { int i,q=0; for(i=1;i<=a;i++) if(a%i==0) q++; return q; } int gg(int a) {int i,q=1; for(i=1;i<=a;i++) if(g(i)>g(a)) q=0; return q; } int cn(int a,int b) { int j,max=g(a),m; for(j=a;j<=b;j++) {if(g(j)>max&&gg(j)==1) {max=g(j); m=j;}} return m; } ```
c语言写的txt中两个数据变量之间产生乱码?求求大佬
![图片说明](https://img-ask.csdn.net/upload/202001/25/1579936213_688671.png) ``` #include "stdio.h" #define N 2 int main() { int i = 0; typedef struct student { char name[4] ;//="0,0,0,0"; // 姓名 char num[4] ;//="0,0,0,0"; // 学号 char age[4] ;//="0,0,0,0"; // 年龄 char sex[3] ;//="0,0,0"; // 性别 char score[2];//="0,0,0,0"; // 成绩 }stu; stu students[5]; FILE *fp ;//= NULL; printf("请输入学生的信息:\n"); for (; i < N; i++) { printf("str[%d] -> ", i); scanf("%s,%s,%s,%s,%s", students[i].name, students[i].num, students[i].age, students[i].sex, students[i].score); } fp = fopen("students.txt", "w+"); fwrite(students, sizeof(struct student), 2, fp); fclose(fp); return 0; } ```
关于spring中的@Transactional注解,求大佬帮帮忙解惑
各位大佬你们好,现在我遇见了一个问题让我很困惑,请大佬们看图片1,这种写法是没有问题的,程序能正常回滚 ![图片说明](https://img-ask.csdn.net/upload/201910/23/1571838653_859329.png) 现在下面的写法,导致我很困惑,我预想的是:aa方法会往数据库插入一条数据,而bb方法因为出现异常,则不会插入数据,但是事实上,bb依然会往数据库插入数据,也就是说,@Transactional注解加到bb方法上,是无效的,这是为什么呢?? ![图片说明](https://img-ask.csdn.net/upload/201910/23/1571838665_660703.png)
初学java,写了个求质数的一个文件,请大佬帮我看下对不对
想表达的是输入一个数字,看这个数字是不是质数,并输出相应结果。 另外还想问一下有没有更加简便的方法 ``` Scanner sc = new Scanner(System.in); int num = sc.nextInt(); if(num==1) { System.out.println("这不是质数"); return; } for(int i = 2;i <= num;i++) { if(num%i==0&&num!=i) { System.out.println("这不是质数"); break; } if(num==i){ System.out.println("这是质数"); } } ```
c语言 文件程序设计 跪求谢谢大佬来解答
假设文件address.txt中已存放3位联系人信息,编写程序,从键盘输入1位联系人信息,序号:4,姓名:小鹿,性别:女,电话号码:15821889977,把该联系人添加到文件里。然后从文件中读出全部信息,并在屏幕上显示。![图片说明](https://img-ask.csdn.net/upload/201912/25/1577251897_143277.png)
Maven Bundle 问题(求大佬们指点迷津)
问一下各位大佬(如下图) ![图片说明](https://img-ask.csdn.net/upload/202002/12/1581479339_535791.png) 这两个依赖加了type类型后都报了这样的错误 这个插件也加了 <plugin> <groupId>org.apache.felix</groupId>       <artifactId>maven-bundle-plugin</artifactId>       <extensions>true</extensions>   </plugin> ![图片说明](https://img-ask.csdn.net/upload/202002/12/1581479400_233670.png) 之前以为是maven版本问题换成3.6.1也还是解决不了,求大佬指点迷津
为什么void sort(struct struct_name *student);没有被执行?
`include<stdio.h> struct struct_name { char name[20]; char num[20]; float score; }student[3]; void sort(struct struct_name *p) { struct struct_name temp,*p1; int i, j; printf("lololololol"); for(i=0;i<3;i++){ for(j=0;j<3-1-i;j++){ if(p->score<(p+1)->score){ temp=*p; *p=*p1; *p1=temp; } p++; } } } int main() { struct_name student [3]={{"Tom","15",97.2},{"Boy","16",98.1},{"Smith","18",99.0}}; void sort(struct struct_name *student); int i; for(i=0;i<3;i++){ printf("姓名:%s\n学号:%s\n成绩:%.1f\n",student[i].name,student[i].num,student[i].score); } return 0; }
301重定向怎么做,不带www的网站跳到带www的网站求大佬!
301重定向怎么做,不带www的网站跳到带www的网站求大佬! ![图片说明](https://img-ask.csdn.net/upload/202002/12/1581474950_132593.jpg)
c语言怎样更改指针的指向?求大佬解答!
**c语言书上的。。。自己没事做,但是- -!脑子有点懵~~** 题目是:三个数字abc比大小。用指针,按从大到小顺序输出。但是不能改变abc原来的值。 (我自己yy的题目,书上交换两个但是我想交换三个应该也可以的吧......结果....,事与愿违,,) 主函数 ``` #include <stdio.h> int main() { void notexchange(int *,int *,int *); int a,b,c,*pa,*pb,*pc; printf("请输入三个数字\n"); scanf("%d%d%d",&a,&b,&c); pa=&a; pb=&b; pc=&c; notexchange(pa,pb,pc); printf("%o\t%o\t%o\t\n",pa,pb,pc); printf("三个数字的大小为\n%d\t%d\t%d\t\n",*pa,*pb,*pc); printf("abc的值为:\n%d\t%d\t%d\t\n",a,b,c); return 0; } ``` 对三个数字就行比对 ``` void notexchange(int *pa,int *pb,int *pc){ void notchange(int *x,int *y); if(*pa<*pb)notchange(pa,pb); if(*pa<*pc)notchange(pa,pc); if(*pb<*pc)notchange(pb,pc); } ``` 对两个数字的交换 ``` void notchange(int *a,int *b){ int temp; temp=a; a=b; b=temp; } ``` 最后的运行结果是如图: ![图片说明](https://img-ask.csdn.net/upload/201912/12/1576157699_931126.png) 我试过了几种不同的交换方式,发现abc的原始值都发生了变化,我的想法是大小顺序排出来了,但是abc的原始值还是不变的。劳犯大佬帮看下这三个方法哪个有问题?感谢!
在Linux(Ubuntu版)下编写运行C语言程序出错
新手写了一个文件后尝试编译,结果无法生成相应编译文件![图片说明](https://img-ask.csdn.net/upload/202002/06/1580957684_335810.png) 请问有可能是什么原因? 下完gcc后又出现了![图片说明](https://img-ask.csdn.net/upload/202002/06/1580959965_330415.png) 这样的情况,请问又是什么原因呢? gcc已经下好了![图片说明](https://img-ask.csdn.net/upload/202002/06/1580963070_792872.png) 但是,还是不能生成编译文件![图片说明](https://img-ask.csdn.net/upload/202002/06/1580963294_682621.png) 求大佬解答orz
爬虫报错,Document is empty,请大佬帮我看看!
``` import requests import re from pyquery import PyQuery as pq import time import csv headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36', def get_url(i): url = 'https://movie.douban.com/subject/30163509/comments?start='+str(i*20)+'&limit=20&sort=new_score&status=P&percent_type=l' r= requests.get(url,headers) html = r.content.decode('utf-8',errors = 'ignore') doc = pq(html) data = doc('.mod-bd .comment-item').items() with open('Aliencomment.csv','a+',newline='',encoding='utf_8_sig') as f: writer = csv.DictWriter(f,fieldnames=['点赞数', '姓名','时间', '评论']) writer.writeheader() for i in data: comment = i.find('.short').text() info = dict() info['时间'] = i.find('.comment-time ').text() info['评论'] = i.find('.short').text() info['点赞数'] = i.find('.votes').text() info['姓名'] = i.find('a').text().strip(' 有用 ') to_save_text(str(comment)) writer.writerow(info) print('good') def to_save_text(t): with open('Aliencom.txt','a+',encoding='utf-8') as f: f.write(t+'\n') print("txt写入成功") f.close() def main(): for i in range(21): get_url(i) time.sleep(2) if __name__ =='__main__': main() ``` ![图片说明](https://img-ask.csdn.net/upload/202002/14/1581609910_474535.jpg) 运行报错了,在摸索学习中,希望大佬能指点下应该怎么修改!感激!
C语言输出小数点后第n位数字
![图片说明](https://img-ask.csdn.net/upload/202002/13/1581606053_231502.png) 要求输出结果依次为2 4 6 我输出结果和这个题目要求一致,但是OJ提交却显示失败,求大佬帮助 #include <stdio.h> #include <stdlib.h> int main() {int t,n,i,m,j,k; char a[50]; scanf("%d",&t); while(t--){ scanf("%s%d",a,&n); m=0; m=(int)strlen(a); k=0; j=0; for(i=0;i<m;i++){ if(a[i]=='.'){ k=i+n; j=m-i-1; break; } } if(j>=n){ if(n>=1&&n<=6){ printf("%d\n",a[k]-'0'); } } } return 0; } ``` ```
如何用C语言编程分析高阶函数并有图像
![图片说明](https://img-ask.csdn.net/upload/202001/09/1578548226_118452.png) 这里只需要C语言运行得到相应信息,MATLAB只是用来验证C语言运行结果是否正确。 这次是学校嵌入式实习,要用树莓派,其他操作没什么问题,就是有点没有思路,头秃了。。。。 本人还是C语言新手,麻烦大佬们了。。。。
求51单片机可以1602LCD显示时间并可以用矩阵按钮控制修改时间的代码(C语言)
求51单片机可以1602LCD显示时间并可以用矩阵按钮控制修改时间的代码(C语言) 有没有大佬有C语言代码?我实验要用到,谢谢!
C语言AES求大佬帮助?
只有五天时间来写这个题目,然而我非常菜,已经写不完了,恳求大佬帮助一下! ![图片说明](https://img-ask.csdn.net/upload/201910/08/1570503767_829527.png) ![图片说明](https://img-ask.csdn.net/upload/201910/08/1570503778_610408.png) 万分感谢!
c语言位运算,萌新求大佬指点
定义函数void DecToBin(int a, char b[33]); 函数功能是将整数a转换为它对应的32位二进制机器数,将32位二进制机器数以字符串形式存于字符数组b(以'\0'字符结束)。 比如:a=160,则函数调用结束后,b数组存储的串为"00000000000000000000000010100000"; a=-1,则函数调用结束后,b数组存储的串为"11111111111111111111111111111111"; 从键盘输入一个整数a,调用该函数,然后输出存储于b数组的表示二进制机器数的字符串。 输入提示信息、输入与输出格式自拟。 要求:不允许使用%2运算,只能利用位运算符(如:移位运算,与运算等)实现程序功能。 程序源代码:
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
进程通信方式总结与盘点
​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只可操作少量的...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
入职阿里5年,他如何破解“技术债”?
简介: 作者 | 都铎 作为一名技术人,你常常会听到这样的话: “先快速上线” “没时间改” “再缓一缓吧” “以后再解决” “先用临时方案处理” …… 当你埋下的坑越来越多,不知道哪天哪位同学就会踩上一颗雷。特别赞同“人最大的恐惧就是未知,当技术债可说不可见的时候,才是最让人不想解决的时候。” 作为一个程序员,我们反对复制粘贴,但是我们经常会见到相似的代码,相同的二方包,甚至整个代码...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:【程序员管小亮】 专栏——深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
你也能看懂的:蒙特卡罗方法
蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或...
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问