文档介绍:该【C程序设计期末复习练习题及参考答案1 】是由【jimilu】上传分享,文档一共【12】页,该文档可以免费在线阅读,需要了解更多关于【C程序设计期末复习练习题及参考答案1 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。精选可编辑《C次序方案》期末复习练习题及参考答案(1)一、〕inta[2][3]={0};B〕inta[][3]={{1,2},{0}};√C〕inta[2][3]={{1,2},{3,4},{5,6}};D〕inta[][3]={1,2,3,4,5,6};(intx,inty〕{ return(x+y);}main(){inta=2,b=5,c=8;printf〔"%\n",fun((int)fun(a+c,b),a-c)〕;}次序运行后的输出结果是:A)编译出错√B)9C)21 D),那么不精确的fun函数的函数原型是main(){…inta[50],n;…fun(n,&a[9]);…}A〕voidfun〔intm,intx[]〕;B〕voidfun〔ints,inth[41]〕;C〕voidfun〔intp,int*s〕;√D〕voidfun〔intn,inta〕;:#defineMAX10inta[MAX],i;main(){printf("\n");sub1();sub3(a);sub2();sub3(a);}sub2(){inta[MAX],i,max=5; for(i=0;i<max;i++)a[i]=i;}sub1()精选可编辑{for(i=0;i<MAX;i++)a[i]=i+i;}sub3(inta[]){inti; for(i=0;i<MAX;i++)printf("%d",a[i]); printf("\n");}A)024681012141618012341012141618B)01234024681012141618C)012345678901234√D)02468101214161802468**********.以下次序实行后的输出结果是#include<>main(){ inta[3][3],*p,i; p=&a[0][0]; for(i=1;i<9;i++){p[i]=i+1;} printf("%d\n",a[1][2]);}A〕3√B〕6C〕9D〕〔〕。√A)main〔〕函数可以在任何所在出现。B)main〔〕函数必须出现在次序的结实位置。C)main〔〕函数必须出现在所欲函数之前。D)main〔〕函数必须出现在所有函数之后。用C语言编写的C次序称为〔〕。√A)源次序B)目标次序C)汇编次序D)命令次序设有定义inta=5,b;实行以下语句后,b的值不为2的是〔〕。√A)b=a%2;B)b=a/2;C)b=6-(--a);D)b=2;以下次序实行后的输出结果是〔〕。#include<>intmain(){ intx=0,a=10,b=20,c=15; if(a>b) if(b<c) x=1; else x=2; printf("%d\n",x); return0;精选可编辑}√A)0B)1C)2D)3已经清楚字母'b'的ASCII码值为98,如ch为字符型变量,这表达式ch='b'+'5'-'2'的值是〔〕。A)'d'√B)'e'C)100D)102有以下次序#include<>main(){hara[]="language",b[]="programe";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k)) printf("%c",*(p1+k));}次序的输出结果是〔〕。√A)gaeB)gueC)guaD)gam有以下次序#include<>voidmain(){ inti,j=4; for(i=j;i<=2*j;i++) switch(i/j) { case0: case1:printf("*");break; case2:printf("#"); }}次序的输出结果是〔〕。√A)****#B)*#**#C)#**#D)**##有以下次序main(){inti,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<3;j++) {if(j%2)continue; x++; } x++; }精选可编辑printf("x=%d\n",x);}次序的输出结果是〔〕。√A)x=8B)x=5C)x=7D)x=6以下次序实行后的输出结果是〔〕。#include<>intmain(){ intx=1,y=0,a=0,b=0; switch(x) { case1: switch(y) { case0:a++;break; case1:b++;break; } case2:a++;b++;break; case3:a++;b++; } printf("a=%d,b=%d\n",a,b);return0;}A)a=1,b=0B)a=2,b=2C)a=1,b=1√D)a=2,b=1假设有下面的语句,那么精确的说法是〔〕。inta[10]={6,7,8,9,10};A)将5个初值依次赋给a[1]至a[5]。√B)将5个初值依次赋给a[0]至a[4]。C)将5个初值依次赋给a[6]至a[10]。D)因为数组长度与初值的个数纷歧样,因而此语句不精确。有以下函数定义,那么以下差错的函数调用是〔〕。intMul(inta,intb){ returna*b;}A)if(Mul(x,y)); B)z=Mul(Mul(x,y),Mul(x,y));√C) z=Mul(Mul(x,y),x,y); D)Mul(x,y);以下次序的运行结果是〔〕。#include<>floatfun(intx,inty){returnx+y;}intmain(){ inta=2,b=5,c=8; printf("%\n",fun((int)fun(a+c,b),a-c)); return0;}A)编译出错√B)9 C)21 D)=0;voidfun(intm){m+=k;k+=m;printf("m=%dk=%d",m,k++);}main(){inti=4;fun(i++);printf("i=%dk=%d\n",i,k);}A)m=4k=5i=5k=5 √B)m=4k=4i=5k=5C)m=4k=4i=4k=5 D)m=4k=5i=4k=5有以下次序main(){inti,s=1;for(i=1;i<50;i++)if(!(i%5)&&!(i%3))s+=i;printf("%d\n",s);}次序的输出结果是A)409B)277C)1√D)91假设变量已正判定义,有以下次序段inta=3,b=5,c=7; if(a>b) a=b;c=a; if(c!=a) c=b; printf("%d,%d,%d\n",a,b,c);其输出结果是A)次序段有语法错√B)3,5,3C)3,5,5D)3,5,7假设有定义:floatx=;inta=1,b=3,c=2;,那么精确的switch语句是A)switch(x){:printf("*\n");:printf("**\n");}B)switch((int)x);{case1:printf("*\n");case2:printf("**\n");}√C)switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}D)switch(a+b){case1:printf(**\n);}casec:printf(**\n);}以下次序的输出结果是精选可编辑#include""main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}A)a=4,b=4 √B)a=4,b=5 C)a=5,b=4 D)a=5,b=5二、填空题1、C语言中全然的数据典范有:?????整型???、?????实型???、????字符型????。2、在次序方案中,需要用到常量Pi,。假设将Pi定义为标志常量,其代码为:#;假设将Pi定义为常变量,其代码为:constfloatPi=;。3、设a是一维数组,p是指向数组元素的指针变量,且初始化为p=a;假设要通过指针p引用数组a的下标为i的那个元素,其代码为:*(p+i)。4、实行以下语句inta=8;?a+=a-=a*a;后,a的值是????-112?????。5、有如下语句:char?A[]={〞Iamastudent〞};该字符串的长度是???14,A[3]=??’m’?。6、标志〞a〞跟’a’的区不是??????〞a〞是字符串常量,而’a’是字符常量。??7、所谓“指针〞的确是???????所在???????????。??“&〞运算符的感染是??????取运算东西的所在????????????????????。“*〞运算符的感染是????????取指针变量所指的内容。???????????????????。?三、次序运行结果分析题1.#include<>structSTU{ charnum[10]; floatscore[3];};main(){ structSTUs[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p=s; inti; floatsum=0; for(i=0;i<3;i++)精选可编辑 {sum=sum+p->score[i];} printf("%\n",sum);}次序的运行结果是:.#include<>main(){chars[100];charc,i;scanf("%c",&c);scanf("%d",&i);scanf("%s",s);printf("%d,%c,%s\n",c,i,s);}已经清楚字符’a’的ASCII码值为97,那么当次序输出:a<空格>97<空格>123<回车>,次序运行结果是:97,a,1233.#include<>inta=13,b=8;intmax(inta,intb){ intc; c=a>b?a:b; return(c);}main(){ inta=5; printf("Max=%d\n",max(a,b));} 次序运行结果是:Max=。#include<>intmain(){ inti,j; for(i=0;i<4;i++) { for(j=0;j<i;j++) putchar('#'); for(j=0;j<4;j++) putchar('*'); printf("\n"); } return0; }次序运行结果是:,运行结果是____3628800_____。#include<>intmain(){ intfun(intn); intn=10,y; y=fun(10); printf("%d\n",y); return0;}intfun(intn){ intf; if(n<0) {f=0;printf("error!");} elseif(n==0||n==1) f=1; else f=fun(n-1)*n; returnf; }(char*p1,char*p2)比较输出字符串是否相当,假设相当那么前去0,否那么前去其他值。当运行以下次序时,运行结果是___-7_____。#include<>#defineN10 intstrcmp(char*p1,char*p2) {intk; if(p1==NULL||p2==NULL)return-1;//揣摸p1跟p2是否为空指针 while(1) {if(k=*p1-*p2)break; elseif(*p1==0||*p2==0) break; p1++; p2++; } returnk; }intmain(){ chara[]="China";charb[]="Japan";printf("%d",strcmp(a,b)); return0;}:已经清楚数组array中以保存num个有效整数,并按从小到大年夜排序,现在再输出一个整数x,并拔出到数组中,保持数组的数有序,同时更新num的值。假设输出要拔出的数:70那么拔出一个数后的数组包含5个数,次序运行结果是:24557099110#include<>voidfun(int*w,intx,int*n){ inti,p; p=0; w[*n]=x;精选可编辑 while(x>w[p])p++; for(i=*n;i>p;i--)w[i]=w[i-1]; w[p]=x; ++*n;}intmain(){ intarray[60]={24,55,99,110}; intnum=4,x,i; printf("请输出要拔出的数:"); scanf("%d",&x); fun(array,x,&num); printf("拔出一个数后的数组包含%d个数,分不为:\n",num); for(i=0;i<num;i++) printf("%d",array[i]); printf("\n"); return0;}。#include<>#include<>main(){charstr1[20]="abc",*p1=str1,*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);},运行结果是____________。#include<>voidsearch_s(int(*p)[5],intn,intm,intre[4][2]);voidmain(){intscore[4][5]={{60,90,92,66,55},{75,40,58,40,90},{60,80,66,90,55},{78,45,56,90,57} }; intresult[4][2]={0};//第一列表示称心条件,第二列表示平均分数 search_s(score,4,5,result); for(inti=0;i<4;i++) if(result[i][0]==1) printf("No.%dhasselected,Theaverageis%d\n",i+1,result[i][1]);}voidsearch_s(int(*p)[5],intn,intm,intre[4][2]){ inti,j; intflag; intsum,temp; for(i=0;i<n;i++) {sum=0;flag=0; for(j=0;j<m;j++)精选可编辑 { temp=*(*(p+i)+j); sum=sum+temp; if(temp<60) {if(flag==1){re[i][0]=1; }elseflag=1; } } re[i][1]=sum/m; }}四、,在标有下划线的空白处填入适当的表达式或语句,使次序残缺并符合题目恳求。由键盘输出一个班的某课程的后生成果,打算其平均分,然后输出。〔注:应用静态数组实现〕#include<>#include<>main(){ int*p=NULL,n,i,sum;printf("pleaseenterarraysize:");scanf("%d",&n);p=(int*)malloc(n*sizeof(int));if(p==NULL){printf("noenoughmemory!\n");exit(0); //或者return;}printf("pleaseenterthescore:");for(i=0;i<n;i++){ scanf("%d",p+i);}sum=0;for(i=0;i<n;i++){sum=sum+*(p+i);}printf("aver=%d\n",sum/n);free(p);},然后在string所保存字符串中的每个字符间加一个空格。#include<>#defineMAX100