《经典C语言100套填空题.docx》由会员分享,可在线阅读,更多相关《经典C语言100套填空题.docx(100页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第01套给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。例如,输入一个数:27638496,新的数:为739。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include void fun(unsigned long *n) unsigned long x=0, i; int t;i=l;while(*n)/*found*/100 t=*n %_1_;/* foun
2、d */if(t%2!=_2_) x=x+t*i; i=i*10;*n =*n /10;)/*found*/*n=_3_;main() unsigned long n=-l;while(n99999999lln0) printf(Please input(0n100000000):); scanf(%ld,&n);fun(&n);printf(nThe result is:%ldn,n);)解题思路:第一处:t是通过取模的方式来得到*n的个位数字,所以应填:10。第二处:判断是否是奇数,所以应填:0.第三处:最后通形参n来返回新数x,所以应填:Xo第02套给定程序中,函数fun的功能是将形参给
3、定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include FILE *void fun(char *s, int a, double f)-1fp; char ch;fp = fopen(,filel.txtn, uwn); fprintf(fp,%s %d %fn, s, a, f); fclose(fp);fp = fopen(nfilel.txt, Y); prin
4、tf(MnThe result :nnu); ch = fgetc(fp);while (!feof(_2_) putchar(_3_); ch = fgetc(fp); putchar(1n);fclose(fp);)main() char a10=MHeUo!M; int b=12345;double c=98.76;fun(a,b,c);解题思路:本题是考察先把给定的数据写入到文本文件中,再从该文件读出并显示在屏幕上。第一处:定义文本文件类型变量,所以应填:FILE *。第二处:判断文件是否结束,所以应填:fp。第三处:显示读出的字符,所以应填:ch。第03套程序通过定义学生结构体变量,
5、存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #define N 5typedef struct student long sno;char name 10;float score3; STU;void fun(char * filename, S
6、TU n) FILE *fp;/*found*/fiI enamefpfpfp = fopen(_l_,rb+);/* found */fseek(_2_,-lL*sizeof(STU), SEEK_END);/*found*/fwrite(&n, sizeof(STU),1,_3_);fclose(fp);main() STU tN=10001 JMaChao”,91,92,77,10002,nCaoKaiM,75,60,88,10003JLiSi”,85,70,78,10004,TangFang,90,82,87,10005,ZhangSann,95,80,88);STU n=10006,
7、HZhaoSiH,55,70,68, ssN;int i,j; FILE *fp;fp = fopen(student.dat,wb);fwrite(t, sizeof(STU), N, fp);fclose(fp);fp = fopen(Mstudent.datrbH);fread(ss, sizeof(STU), N, fp);fclose(fp);printf(nThe original data :nnH);for (j=O;jN;j+) printf(MnNo:%ld Name:%-8s Scores: M,ssj.sno, ssj.name);for (i=0; i3; i+) p
8、rintf(%6.2f H, ssj.scorei);printf(,nM);fun(Hstudent.datn, n);printf(nThe data after modifing :nnH);fp = fopenCtudent.dat1, nrbM);fread(ss, sizeof(STU), N, fp);fclose(fp);for (j=0; jN; j+) printf(MnNo:%ld Name:%-8s Scores: n,ssj.sno, ssj.name);for (i=0; i3; i+) printf(M%6.2f H, ss|jj.scorei);printf(,
9、nH);解题思路:本题是考察如何从文件中读出数据,再把结构中的数据写入文件中。第一处:从指定的文件中读出数据,所以应填:filename。第二处:读取文件fp的最后一条记录,所以应填:fpo第三处:再把读出的记录,写入文件fp指定的位置上,所以应填:fpo第04套程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。请在程序的下划线处填入正确的内容并把下划线删除,使
10、程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #define N 5typedef struct student long sno;char name10;float score3; STU;void fun(char *filename) FILE *fp; int i, j;STU sN, t;/*found*/“rb”fwritefp = fopen(filename,_1_);fread(s, sizeof(STU), N, fp);fclose(fp);for (i=0; iN-l;i+)f
11、or (j=i+l; jN; j+)/*found*/if (si.sno _2_ s|jj.sno) t = si;si= sj;sj= t;fp = fopen(filename,wb);/*found*/_3_(s, sizeof(STU), N, fp);/*二进制输出*/ fclose(fp); main() STU tN=10005,MZhangSanH,95,80,88,10003,MLiSiM,85,70,78),10002,uCaoKain,75,60,88,10004/FangFangn,90,82,87,10001,HMaChaoM,91,92,77, ssN;int i
12、,j; FILE *fp;fp = fopen(student.dat,wb);fwrite(t, sizeof(STU),5, fp);fclose(fp);printf(nnThe original data :nnn);for (j=0; jN; j+) printf(HnNo:%ld Name:%-8s Scores: H,tj.sno, lj.name);for (i=0; i3; i+) printf(H%6.2f , tj.scorei);prinlf(n);)fun(,student.datH);printf(nnThe data after sorting :nnH);fp
13、= fopen(studenl.datJTb”);fread(ss, sizeof(STU),5, fp);fclose(fp);for (j=0; jN; j+) printf(MnNo:%ld Name:%-8s Scores: H,ssj.sno, ss|j.name);for (i=0; i.第三处:把已排序的结构数据,重新写入文件,所以应填:fwrite。第05套给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。请在程序的下划线处填入
14、正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKI.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #include void fun(char *s, int a, double f)/*found*/-1fp;FILE *char str100, strlflOO, str2100;int al; double fl;fp = fopenClel.txf, nwM);fprintf(fp, n%s %d %fn, s, a, f);/*found*/2;fcIose(fp)fp = fopen(Hfilel.txt,rn)
15、;/* found */ fscanf(_3_,%s%s%sH, str, strl, str2);fpfclose(fp); al = atoi(strl); fl = atof(str2); printf(MnThe result :nn%s %d str, al, fl);) main() char a10=MHello!M; int b=12345; double c=98.76; fun(a,b,c);)解题思路:本题是考察先把给定的数据写入到文本文件中,再从该文件读出并转换成相应的整数、浮点数显示在屏幕上。第一处:定义文本文件类型变量,所以应填:FILE *。第二处:关闭刚写入的文
16、件,所以应填:fclose(fp)。第三处:从文件中读出数据,所以应填:fp。第06套给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。当调用正确时,程序输出:xl=5.000000, x2=3.000000, xl*xl+xl*x2=40.000(M)0请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include double fl (double x) return x*x; double f2(double x, double y) return x
17、*y;/*found*/_1_ fun(int i, double x, double y)doub I e if(i=l)/*found*/ return _2_(x);flelsereturn _3_(x, y);main() double xl=5, x2=3, r;r = fun(l, xl, x2);r+= fun(2, xl, x2);printf(nxl=%f, x2=%f, x 1*x 1+x 1*x2=%fnn*,x 1, x2, r);解题思路:本题是根据给定的公式来计算函数的值。第一处:程序中使用双精度double类型进行计算,所以函数的返回值类型也为double,所以应
18、填:doubleo第二处:当i等于1时,则返回代函数的值,所以应填:f1o第三处:如果i不等于1,则返回f2函数的值,所以应填:f2o第07套程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能是输出这位学生的信息。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include lypedef struct int num;char name9;char sex;struct int year,month,day ; birthday;flo
19、at score3;STU;/*found*/void show(STU1)tt int i;printf(Hn%d %s %c %d-%d-%d”, tt.num, tt.name, tt.sex, tt.birthday.year, tt.birthday.month, tt.birthday.day);for(i=0; i3; i+)/* found */tt. scoreiprintf(MnM);)main() STU std=1/,Zhanghua,;M;1961,10,8,76.5,78.0,82.0; printf(MnA student data:n);/*found*/ sh
20、ow(3);stdI 解题思路:本题是利用结构体变存储了一名学生的信息。第一处:tt变量在函数体fun已经使用,所以应填:tto 第二处:利用循环分别输出学生的成绩数据,所以应填:tt. scorei.第三处:函数的调用,所以应填:std。第08套给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩.函数fun的功能是将该学生的各科成绩都乘以一个系数a.请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include typedef st
21、ruct int num;char name9; float score3;STU; void show(STU tt) int i; printf(H%d %s : U,tt.num,tt.name); for(i=0; i3; i+) printf(,%5.1f,tt.scorei); printf(MnH);)/* found */ void modify(1*ss,float a)STU int i;for(i=0; i2*=a;score i) main() STU std=1/Zhanghua,76.5,78.0,82.0; float a;printf(MnThe origina
22、l number and name and scores :nn); show(std);printf(HnInput a number :“); scanf(%f&a);&stdmodify(3,a);printf(nA result of modifying :nH);show(std);解题思路:本题是利用结构体存储学生记录并由实参SS返回。第一处:实参SS是一个结构型指针变量,所以应填:STU第二处:该学生的各科成绩都乘以一个系数a,所以应填:scor/i。第三处:函数的调用,由于函数定义时使用的指针结构型变置,所以应填:&std.第09套给定程序中,函数fun的功能是将不带头节点的单
23、向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #include #define N 6typedef struct node int data;struct node *next; NODE;void fun(NODE *h) NODE *p,*q; int t;p = h;while (p)/*
24、 found */q =_1_;p-next/*found*/while (_2_)q if (p-data q-data) t = p-data; p-data = q-data; q-data = t;q = q-next;)/*found*/p =_3_;p-nextNODE *creatlist(int a) NODE *h,*p,*q; int i;h=NULL;for(i=0; idata=ai;q-next = NULL;if(h = NULL) h = p = q;else p-next = q; p = q;)return h;)void outlist(NODE *h) N
25、ODE *p;p=h;if(p=NULL) printfCThe list is NULL!nu);else printf(MnHead ); do printf(M-%d, p-data); p=p-next;while(p!=NULL);printf(M-Endnn);) main() NODE head;int a(N=0,10,4,2,8,6;head=creatlist(a);printf(MnThe original list:nn);outlist(head);fun(head);printf(nnThe list after inverting :nM);outlist(hea
26、d);)解题思路:本题是考察使用链表方法,使用两重while循环语句,对链表的结点数据进行升序排列。第一处:由于外循环变量使用p指针,内循环变量使用q指针,所以q指向必须指向p的 next指针,因此应填写:p-next。第二处:判断内循环q指针是否结束,所以应填:q。第三处:外循环控制变量p指向自己的next指针,所以应填:p-next.第10套给定程序中,函数fun的功能是:判定形参a所指的NXN (规定N为奇数)的矩阵是否是“幻方”,若是,函数返回值为1;不是,函数返回值为0.”幻方”的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。例如,以下3X3的矩阵就是一个“幻方”:
27、492357816请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #define N 3int fun(int (*a)N) int i,j,m 1,m2,row,colum;m 1=m2=0;for(i=0; iN; i+)j=N-i-l; ml+=aii; m2+=aij;if(ml !=m2) return 0;for(i=0; iN; i+) row=colum=_1_;for(j=0; jN; j+) row+=aij; colum+=aji;
28、/*fou nd */if(row!=colum)_2_(row!=ml) return 0;return _3.main()intxNN,ij;printf(Enter number for array:n);for(i=0; iN; i+)for(j=0; jN; j+) scanf(H%dM,&xij);printf(nArray:nH);for(i=0; iN; i+) for(j=0;jN;j+) printf(H%3d,xij);printf(nM);if(fun(x) printf(The Array is a magic squareAn); else printf(nThe
29、Array isnt a magic square.nK);解题思路:第一处:行列变量row和co I urn的值初始化为0。第二处:两个条件只要有一个不满足就返回0,所以应填:|。第三处:如果矩阵是“幻方”,则返回1。第11套给定程序中,函数fun的功能是将带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6,4、2。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK 1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #inc
30、lude #define N 5typedef struct node int data;struct node *next; NODE;void fun(NODE *h) NODE *p,*q,*r;/* found */p = h-_1_;next/*found*/if (p=2) return;0q = p-next;p-next = NULL;while (q) r = q-next; q-next = p;/*found*/p = q;q =_3_;rh-next = p;)NODE *creatlist(int a) NODE *h,*p,*q; int i;h =(NODE *)
31、malloc(sizeof(NODE);h-next = NULL;for(i=0; idata=ai;q-next = NULL;if (h-next = NULL) h-next = p = q;else p-next = q; p = q;)return h;void outlist(NODE *h) NODE *p;p = h-next;if(p=NULL) printf(MThe list is NULL!nu);else printf(nnHead );do printf(M-%dH, p-data); p=p-next;while(p!=NULL);printf(H-EndnH)
32、;)main() NODE *head;int aN=2,4,6,8,10;head=creatlist(a);printf(MnThe original list:nM);outlist(head);fun(head);printf(nThe list after inverting :nM);outlist(head);)解题思路:本题是考察使用链表方法,对链表的结点数据进行降序排列。第一处:使用结构指针P,来控制链表的结束,p必须指向h结构指针的next指针,来定位P的初始位置。所以应填写:h-next.第二处:判断p指针是否结束,所以应填写:0.第三处:q指向原q的next指针,所以应
33、填:r。第12套给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include #include #define N 5lypedef struct node int data;struct node *next; NODE;NODE *next_1_* fun(NODE *h) NODE *p,*
34、q,*r;p = h;if(p = NULL)return NULL;q = p-next;p-next = NULL; while (q)/*found*/ r = q-_2_;q-next = p;p = q;/* found*/ q =_3.return p;)NODE *creatlist(int a) NODE *h,*p,*q; int i; h=NULL;for(i=0; idata=ai;q-next = NULL;if(h = NULL) h = p = q;else p-next = q; p = q;)return h;void outlist(NODE *h) NODE
35、 *p;P=h;if(p=NULL) printfCThe list is NULL!nn);else printf(MnHead );do printf(M-%dM, p-data); p=p-next; while(p!=NULL);printf(M-EndnM);main() NODE *head;int aN=2,4,6,8,10);head=creatlist(a);printf(nThe original list:nn);outlist(head);head=fun(head);printf(nThe list after inverting :n);outlist(head);
36、解题思路:本题是考察使用链表方法,对链表的结点数据进行降序排列,最后通过函数进行返回。第一处:由于链表中的所有结果要求通过函数进行返回,所以应填:NODE *。第二处:中间变量用来保存q的next指针,所以应填:next。第三处:q指向原q的next指针,所以应填:r。第13套给定程序中,函数fun的功能是将带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中
37、。不得增行或删行,也不得更改程序的结构!给定源程序:#include #include #define N 6typedef struct node int data;struct node next; NODE;void fun(NODE *h) NODE *p,*q; int t;/*fou nd */h-nextp-nextp =_1_;while (p)/*found*/q =_2_;while (q)(/*found*/if (p-data _3_ q-data) t = p-data; p-data = q-data; q-data = t;q = q-next;p = p-nex
38、t;)NODE *creatlist(int a) NODE *h,*p,*q; int i;h =(NODE *)malloc(sizeof(NODE);h-next = NULL;for(i=0; idata=ai;q-next = NULL;if (h-next = NULL) h-next = p = q;else p-next = q; p = q;)return h;void outlist(NODE *h) NODE *p;p = h-next;if(p=NULL) printf(The list is NULL!nM);else printf(nHead );do printf
39、(,-%d, p-data); p=p-next;while(p!=NULL);printf(Endn); main() NODE *head;int aNJ=0,10,4,2,8,6);head=creatlist(a);printf(HnThe original list:n);outlist(head);fun(head);printf(nnThe list after sorting :nH);outlist(head);)解题思路:本题是考察使用链表方法,对链表的结点数据进行升序排列。第一处:使用结构指针P,来控制链表的结束,p必须指向h结构指针的next指针,来定位P的初始位。所以
40、应填写:h-next.第二处:使用while循环,对链表中结点的数据进行排序,q必须指向p结构指针的next 指针。所以应填写:p-next.第三处:如果当前结点中的数据大于(大于等于)循环中的结点数据,那么进行交换,所以应填写:(或=)。第14套给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。规定在_2处使f指向函数口,在_3处使f指向函数当调用正确时,程序输出:x 1=5.000000, x2=3.000000, xl*xl+xl*x2=40.00000ft请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include double fl (double x) return x*x;double f2(double x, double y) return x*y;double fun(double a, double