计算机二级 C语言习题集.docx
- 文档编号:10039480
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:180
- 大小:60.51KB
计算机二级 C语言习题集.docx
《计算机二级 C语言习题集.docx》由会员分享,可在线阅读,更多相关《计算机二级 C语言习题集.docx(180页珍藏版)》请在冰豆网上搜索。
计算机二级C语言习题集
2011计算机二级C语言习题集.txt“我羡慕内些老人羡慕他们手牵手一直走到最后。
━交话费的时候,才发现自己的话那么值钱。
一、程序填空题
1.给定程序中,函数fun的功能是:
将形参n所指变量中,各位上为偶数的去除,剩余的数按原来从高到低的顺序
组成一个新的数,并通过形参指针n传回所指变量。
例如:
输入一个数:
27638496,新的数为:
739。
#include
voidfun(unsignedlong*n)
{unsignedlongx=0,i;intt;
i=1;
while(*n)
/**********found**********/
{t=*n%10;
/**********found**********/
if(t%2!
=0)
{x=x+t*i;i=i*10;}
*n=*n/10;
}
/**********found**********/
*n=x;
}
main()
{unsignedlongn=-1;
while(n>99999999||n<0)
{printf("Pleaseinput(0 ");scanf("%ld",&n);} fun(&n); printf("\nTheresultis: %ld\n",n); } 2.给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文 件中逐个读入并显示在终端屏幕上。 #include voidfun(char*s,inta,doublef) { /**********found**********/ FILE*fp; charch; fp=fopen("file1.txt","w"); fprintf(fp,"%s%d%f\n",s,a,f); fclose(fp); fp=fopen("file1.txt","r"); printf("\nTheresult: \n\n"); ch=fgetc(fp); /**********found**********/ while(! feof(fp)){ /**********found**********/ putchar(ch);ch=fgetc(fp);} putchar('\n'); fclose(fp); } main() {chara[10]="Hello! ";intb=12345; doublec=98.76; fun(a,b,c); } 3.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。 所有学生数据均以二进制方式输出 到文件中。 函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生 原来的数据,其它学生的数据不变。 #include #defineN5 typedefstructstudent{ longsno; charname[10]; floatscore[3]; }STU; voidfun(char*filename,STUn) {FILE*fp; /**********found**********/ fp=fopen(filename,"rb+"); /**********found**********/ fseek(fp,-1L*sizeof(STU),SEEK_END); /**********found**********/ fwrite(&n,sizeof(STU),1,fp); fclose(fp); } main() {STUt[N]={{10001,"MaChao",91,92,77},{10002,"CaoKai",75,60,88}, {10003,"LiSi",85,70,78},{10004,"FangFang",90,82,87}, {10005,"ZhangSan",95,80,88}}; STUn={10006,"ZhaoSi",55,70,68},ss[N]; inti,j;FILE*fp; fp=fopen("student.dat","wb"); fwrite(t,sizeof(STU),N,fp); fclose(fp); fp=fopen("student.dat","rb"); fread(ss,sizeof(STU),N,fp); fclose(fp); printf("\nTheoriginaldata: \n\n"); for(j=0;j {printf("\nNo: %ldName: %-8sScores: ",ss[j].sno,ss[j].name); for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]); printf("\n"); } fun("student.dat",n); printf("\nThedataaftermodifing: \n\n"); fp=fopen("student.dat","rb"); fread(ss,sizeof(STU),N,fp); fclose(fp); for(j=0;j {printf("\nNo: %ldName: %-8sScores: ",ss[j].sno,ss[j].name); for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]); printf("\n"); } } 4.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。 所有学生数据均以二进制方式输出 到文件中。 函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二 进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。 #include #defineN5 typedefstructstudent{ longsno; charname[10]; floatscore[3]; }STU; voidfun(char*filename) {FILE*fp;inti,j; STUs[N],t; /**********found**********/ fp=fopen(filename,"rb"); fread(s,sizeof(STU),N,fp); fclose(fp); for(i=0;i for(j=i+1;j /**********found**********/ if(s[i].sno>s[j].sno) {t=s[i];s[i]=s[j];s[j]=t;} fp=fopen(filename,"wb"); /**********found**********/ fwrite(s,sizeof(STU),N,fp); fclose(fp); } main() {STUt[N]={{10005,"ZhangSan",95,80,88},{10003,"LiSi",85,70,78}, {10002,"CaoKai",75,60,88},{10004,"FangFang",90,82,87}, {10001,"MaChao",91,92,77}},ss[N]; inti,j;FILE*fp; fp=fopen("student.dat","wb"); fwrite(t,sizeof(STU),5,fp); fclose(fp); printf("\n\nTheoriginaldata: \n\n"); for(j=0;j {printf("\nNo: %ldName: %-8sScores: ",t[j].sno,t[j].name); for(i=0;i<3;i++)printf("%6.2f",t[j].score[i]); printf("\n"); } fun("student.dat"); printf("\n\nThedataaftersorting: \n\n"); fp=fopen("student.dat","rb"); fread(ss,sizeof(STU),5,fp); fclose(fp); for(j=0;j {printf("\nNo: %ldName: %-8sScores: ",ss[j].sno,ss[j].name); for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]); printf("\n"); } } 5.给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文 本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。 #include #include voidfun(char*s,inta,doublef) { /**********found**********/ FILE*fp; charstr[100],str1[100],str2[100]; inta1;doublef1; fp=fopen("file1.txt","w"); fprintf(fp,"%s%d%f\n",s,a,f); /**********found**********/ fclose(fp); fp=fopen("file1.txt","r"); /**********found**********/ fscanf(fp,"%s%s%s",str,str1,str2); fclose(fp); a1=atoi(str1); f1=atof(str2); printf("\nTheresult: \n\n%s%d%f\n",str,a1,f1); } main() {chara[10]="Hello! ";intb=12345; doublec=98.76; fun(a,b,c); } 6.给定程序中,函数fun的功能是根据形参i的值返回某个函数的值,当调用正确时,程序输出: x1=5.000000,x2=3.000000x1*x1+x1*x2=40.000000 #include doublef1(doublex) {returnx*x;} doublef2(doublex,doubley) {returnx*y;} /**********found**********/ doublefun(inti,doublex,doubley) {if(i==1) /**********found**********/ returnf1(x); else /**********found**********/ returnf2(x,y); } main() {doublex1=5,x2=3,r; r=fun(1,x1,x2); r+=fun(2,x1,x2); printf("\nx1=%f,x2=%f,x1*x1+x1*x2=%f\n\n",x1,x2,r); } 7.程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。 函数fun的功能是输出这位学生的信 息。 #include typedefstruct {intnum; charname[9]; charsex; struct{intyear,month,day;}birthday; floatscore[3]; }STU; /**********found**********/ voidshow(STUtt) {inti; printf("\n%d%s%c%d-%d-%d",tt.num,tt.name,tt.sex, tt.birthday.year,tt.birthday.month,tt.birthday.day); for(i=0;i<3;i++) /**********found**********/ printf("%5.1f",tt.score[i]); printf("\n"); } main() {STUstd={1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0}; printf("\nAstudentdata: \n"); /**********found**********/ show(std); } 8.给定程序通过赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。 函数fun的功能是 将该学生的各科成绩者乘以一个系数a。 #include typedefstruct {intnum; charname[9]; floatscore[3]; }STU; voidshow(STUtt) {inti; printf("%d%s: ",tt.num,tt.name); for(i=0;i<3;i++) printf("%5.1f",tt.score[i]); printf("\n"); } /**********found**********/ voidmodify(STU*ss,floata) {inti; for(i=0;i<3;i++) /**********found**********/ ss->score[i]*=a; } main() {STUstd={1,"Zhanghua",76.5,78.0,82.0}; floata; printf("\nTheoriginalnumberandnameandscores: \n"); show(std); printf("\nInputanumber: ");scanf("%f",&a); /**********found**********/ modify(&std,a); printf("\nAresultofmodifying: \n"); show(std); } 9.给定程序中,涵数fun的功能是将不带头结点的单向链表结点数据域中的数据从小到大排序。 即若原链表结点数 据域从头至尾的数据为: 10、4、2、8、6,排序后链表结点数据域从头至尾为: 2、4、6、8、10。 #include #include #defineN6 typedefstructnode{ intdata; structnode*next; }NODE; voidfun(NODE*h) {NODE*p,*q;intt; p=h; while(p){ /**********found**********/ q=p->next; /**********found**********/ while(q) {if(p->data>q->data) {t=p->data;p->data=q->data;q->data=t;} q=q->next; } /**********found**********/ p=p->next; } } NODE*creatlist(inta[]) {NODE*h,*p,*q;inti; h=NULL; for(i=0;i {q=(NODE*)malloc(sizeof(NODE)); q->data=a[i]; q->next=NULL; if(h==NULL)h=p=q; else{p->next=q;p=q;} } returnh; } voidoutlist(NODE*h) {NODE*p; p=h; if(p==NULL)printf("ThelistisNULL! \n"); else {printf("\nHead"); do {printf("->%d",p->data);p=p->next;} while(p! =NULL); printf("->End\n"); } } 10.给定程序中,函数fun的功能是: 叛定形参a所指的N×N(规定N为奇数)的矩阵是否是“幻方”,若是,函数 返回值为1;不是,函数返回值为0。 “幻方”的叛定条件是: 矩阵每行、每列、主对角线及反对角线上元素之和 都相等。 例如: 以下3×3的矩阵就是一个“幻方”: 492 357 816 #include #defineN3 intfun(int(*a)[N]) {inti,j,m1,m2,row,colum; m1=m2=0; for(i=0;i {j=N-i-1;m1+=a[i][i];m2+=a[i][j];} if(m1! =m2)return0; for(i=0;i /**********found**********/ row=colum=0; for(j=0;j {row+=a[i][j];colum+=a[j][i];} /**********found**********/ if((row! =colum)||(row! =m1))return0; } /**********found**********/ return1; } main() {intx[N][N],i,j; printf("Enternumberforarray: \n"); for(i=0;i for(j=0;j printf("Array: \n"); for(i=0;i {for(j=0;j printf("\n"); } if(fun(x))printf("TheArrayisamagicsquare.\n"); elseprintf("TheArrayisn'tamagicsquare.\n"); } 11.给定程序中,函数fun的功能是将带头结点的单向链表逆置。 即若原链表中从头至尾结点数据域依次为: 2、 4、6、8、10,逆置后,从头至尾结点数据域依次为: 10、8、6、4、2。 #include #include #defineN5 typedefstructnode{ intdata; structnode*next; }NODE; voidfun(NODE*h) {NODE*p,*q,*r; /**********found**********/ p=h->next; /**********found**********/ if(p==0)return; q=p->next; p->next=NULL; while(q) {r=q->next;q->next=p; /**********found**********/ p=q;q=r; } h->next=p; } NODE*creatlist(inta[]) {NODE*h,*p,*q;inti; h=(NODE*)malloc(sizeof(NODE)); h->next=NULL; for(i=0;i {q=(NODE*)malloc(sizeof(NODE)); q->data=a[i]; q->next=NULL; if(h->next==NULL)h->next=p=q; else{p->next=q;p=q;} } returnh; } voidoutlist(NODE*h) {NODE*p; p=h->next; if(p==NULL)printf("ThelistisNULL! \n"); else {printf("\nHead"); do {printf("->%d",p->data);p=p->next;} while(p! =NULL); printf("->End\n"); } } 12.给定程序中,函数fun的功能是将不带头结点的单向链表逆置。 即若原链表中从头至尾结点数据域依次为: 2 、4、6、8、10,逆置后,从头至尾结点数据域依次为: 10、8、6、4、2 #include #include #defineN5 typedefstructnode{ intdata; structnode*next; }NODE; /**********found**********/ NODE*fun(NODE*h) {NODE*p,*q,*r; p=h; if(p==NULL) returnNULL; q=p->next; p->next=NULL; while(q) { /*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机二级 C语言习题集 计算机 二级 语言 习题集