1二级C语言上机考试复习资料,共有50套题目一、程序填空题1、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。例如:b所指变量t中的学号、姓名、和三门课的成绩依次是:10002、ZhangQi、93、85、87,修改后输出t中的数据应为:10004、LiJie、93、85、87。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#includestdio.h#includestring.hstructstudent{longsno;charname[10];floatscore[3];};voidfun(structstudent*b){/**********found**********/b__1__=10004;/**********found**********/strcpy(b__2__,LiJie);}main(){structstudentt={10002,ZhangQi,93,85,87};inti;printf(\n\nTheoriginaldata:\n);printf(\nNo:%ldName:%s\nScores:,t.sno,t.name);for(i=0;i3;i++)printf(%6.2f,t.score[i]);printf(\n);/**********found**********/fun(__3__);printf(\nThedataaftermodified:\n);printf(\nNo:%ldName:%s\nScores:,t.sno,t.name);for(i=0;i3;i++)printf(%6.2f,t.score[i]);printf(\n);}2、给定程序中,函数fun的功能是计算下式例如,若形参e的值为1e-3,函数的返回值2.985678。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#includestdio.hdoublefun(doublee){inti;doubles,x;/**********found**********/s=0;i=__1__;x=1.0;while(xe){/**********found**********/__2__;/**********found**********/x=(2.0*i-1)/((__3__)*(2.0*i));s=s+x;}returns;}main(){doublee=1e-3;printf(\nTheresultis:%f\n,fun(e));}3、给定程序中,函数fun的功能是:将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:defadhkjsdf3537。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#includestdio.hvoidfun(char*s){inti,j=0,k=0;chart1[80],t2[80];for(i=0;s[i]!='\0';i++)if(s[i]='0'&&s[i]='9'){/**********found**********/t2[j]=s[i];___1___;}elset1[k++]=s[i];t2[j]=0;t1[k]=0;/**********found**********/for(i=0;ik;i++)___2___;/**********found**********/for(i=0;i___3___;i++)s[k+i]=t2[i];}main(){chars[80]=ba3a54j7sd567sdffs;printf(\nTheoriginalstringis:%s\n,s);fun(s);printf(\nTheresultis:%s\n,s);}4、给定程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵:123456789计算结果为10065010149请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#includestdio.h#defineN4/**********found**********/voidfun(int(*t)___1___){inti,j;for(i=1;iN;i++){for(j=0;ji;j++){/**********found**********/___2___=t[i][j]+t[j][i];/**********found**********/___3___=0;}}}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;printf(\nTheoriginalarray:\n);for(i=0;iN;i++){for(j=0;jN;j++)printf(%2d,t[i][j]);printf(\n);}fun(t);printf(\nTheresultis:\n);for(i=0;iN;i++){for(j=0;jN;j++)printf(%2d,t[i][j]);printf(\n);}}5、给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。2不得增行或删行,也不得更改程序的结构!#includestdio.hvoidfun(char*s,char*p){inti,j,n,x,t;n=0;for(i=0;s[i]!='\0';i++)n++;for(i=1;in-2;i=i+2){/**********found**********/___1___;/**********found**********/for(j=___2___+2;jn;j=j+2)if(s[t]s[j])t=j;if(t!=i){x=s[i];s[i]=s[t];s[t]=x;}}for(i=1,j=0;in;i=i+2,j++)p[j]=s[i];/**********found**********/p[j]=___3___;}main(){chars[80]=baawrskjghzlicda,p[50];printf(\nTheoriginalstringis:%s\n,s);fun(s,p);printf(\nTheresultis:%s\n,p);}6、给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#includestdio.h#includestdlib.h#defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(SLIST*p){SLIST*t,*s;t=p-next;s=p;while(t-next!=NULL){s=t;/**********found**********/t=t-___1___;}/**********found**********/printf(%d,___2___);s-next=NULL;/**********found**********/free(___3___);}SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;iN;i++){q=(SLIST*)malloc(sizeof(SLIST));q-data=a[i];p-next=q;p=q;}p-next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h-next;if(p==NULL)printf(\nThelistisNULL!\n);else{printf(\nHead);do{printf(-%d,p-data);p=p-next;}while(p!=NULL);printf(-End\n);}}main(){SLIST*head;inta[N]={11,12,15,18,19,22,25,29};head=creatlist(a);printf(\nOutputfromhead:\n);outlist(head);printf(\nOutputfromtail:\n);while(head-next!=NULL){fun(head);printf(\n\n);printf(\nOutputfromheadagain:\n);outlist(head);}}7、给定程序中,函数fun的功能是:计算N×N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。例如,若N=3,有下列矩阵:123456789fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#includestdio.h#defineN4fun(intt[][N],intn){inti,sum;/**********found**********/___1___;for(i=0;in;i++)/**********found**********/sum+=___2___;for(i=0;in;i++)/**********found**********/sum+=t[i][n-i-___3___];returnsum;}main(){intt[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;printf(\nTheoriginaldata:\n);for(i=0;iN;i++){for(j=0;jN;j++)printf(%4d,t[i][j]);printf(\n);}printf(Theresultis:%d,fun(t,N));}8、给定程序中,函数fun的功能是:找出100~999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,然后输出;符合条件的整数个数作为函数值返回。例如,当x值为5时,100~999之间各位上数字之和为5的整数有:104、113、122、131、140、203、212、221、230、302、31