C语言程序设计考前复习资料.docx
- 文档编号:7099689
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:40
- 大小:40.91KB
C语言程序设计考前复习资料.docx
《C语言程序设计考前复习资料.docx》由会员分享,可在线阅读,更多相关《C语言程序设计考前复习资料.docx(40页珍藏版)》请在冰豆网上搜索。
C语言程序设计考前复习资料
二级C语言笔试试卷(2009第一次)
(共100分)
注意事项:
1.一、二题为客观题,请将答案涂在机读答题卡上
2.三、四、五、六题为主观题,请将答案做在答题纸上
一.单项选择题。
(每小题1分,共20分)
1.一个C程序的执行是从(A)。
(A)本程序的main函数开始,到main函数结束
(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
(C)本程序的main函数开始,到本程序文件的最后一个函数结束
(D)本程序文件的第一个函数开始,到本程序main函数结束
2.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是(D)。
(A)x&&y;(B)x<=y;
(C)x||y+z&&y–z;(D)!
((x z||1); 3.以下有关宏替换的叙述不正确的是(D)。 (A)宏替换不占用运行时间(B)宏名无类型 (C)宏替换只是字符串替换;(D)宏替换是在运行时进行的 4.已知函数的调用形式: fread(buffer,size,count,fp);其中buffer代表的是(C)。 (A)一个整型变量,代表要读入的数据项总数 (B)一个文件指针,指向要读的文件 (C)一个指针,指向要读入数据的存放地址 (D)一个存储区,存放要读的数据项 5.在位运算中,操作数每左移一位,其结果相当于(A)。 (A)操作数乘以2(B)操作数除以2 (C)操作数除以4(D)操作数乘以4 6.数字字符0的ASCII值为48,若有以下程序 #include voidmain() { chara='1',b='2'; printf("%c,",b++); printf("%d\n",b-a); } 程序运行后的输出结果是(C)。 A)3,2B)50,2 C)2,2 D)2,50 7.有以下程序 #include voidmain() { intm=12,n=34; printf("%d%d",m++,++n); printf("%d%d\n",n++,++m); } 程序运行后的输出结果是(C)。 A)12353514B)12353513 C)12343514 D)12343513 8.已有定义intk=2;int*ptr1,*ptr2,且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是(B) A)k=*ptr1+*ptr2;B)ptr2=k; C)ptr1=ptr2;D)k=*ptr1*(*ptr2); 9若有定义inti=2,a[10],*p=&a[i];则与*p++等价的是(A)。 A)a[i++]B)a[i]++C)a[i]D)a[++i] 10.有定义inta=3,b=4,c=5;执行完表达式a++>--b&&b++>c--&&++c后,a,b,c的值分别为(B)。 A)345B)435C)444D)445 11.已知: intx=1,y=2,z=0;则执行: z=x>y? 10: 20后,z的值为(B)。 A)10B)20C)1D)2 12.若已定义x和y为double类型,则表达式x=2,y=x+10/4的值是(C)。 A)2B)4C)4.0D)4.5 13.有定义语句: intb;charc[10];,则正确的输入语句是(B)。 A)scanf("%d%s",&b,&c); B)scanf("%d%s",&b,c); C)scanf("%d%s",b,c); D)scanf("%d%s",b,&c); 14.在一个源程序文件中定义的全局变量,其作用域为(B)。 A)定义所处的整个源程序文件B)从定义处开始到本源程序文件结束 C)整个主函数D)所处C程序的所有源程序文件中 15.在下面C语言的函数说明语句中,正确的是(A)。 A)intfun(intx,inty);B)intfun(intx,y); C)intfun(x,y);D)intfun(intx;inty); 16.有以下程序 #include voidmain() { intm,n,p; scanf("m=%dn=%dp=%d",&m,&n,&p); printf("%d%d%d\n",m,n,p); } 若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是(A)。 A)m=123n=456p=789 B)m=123 n=456 p=789 C)m=123,n=456,p=789 D)123 456 789 17.已知E的ASCII码是69,则执行以下语句的结果是(C) printf("%c",'E'-'8'+'5'); A)66B)AC)BD)E 18.有定义: char*s=”\t\”Name\\Address\”\n”;,那么strlen(s)等于(B)。 A)15B)16 C)17D)18 19.设有定义: intm=1,n=-1;则执行语句printf("%d\n",(m--&++n));后的输出结果是(B) A)–1B)0C)1D)2 20.有以下程序 #include voidmain() { inta,b,d=25; a=d/10%9; b=a&&(-1); printf("%d,%d\n",a,b); } 程序运行后的输出结果是(B)。 A)6,1 B)2,1 C)6,0 D)2,0 二.基本概念选择填空题(本大题后面有若干备选项,请选择合适的备选项并将其号码填入各小题的空白处。 每空2分,共10分) 1.函数main(intargc,char*argv[])中argc表示的是______①____。 2.在C语言中,没有字符串变量,只有字符变量,字符串都存储在以②为结束符的字符数组中。 3.一个函数调用语句为fun((e1,e2,e3),(e4,e5),e6);,其实参个数为__③____。 4.为了避免嵌套的if-else语句的二义性,C语言规定else总是与___④____组成配对关系。 5.当程序打开一个文件时,系统就要在内存中建立一个与该文件对应的⑤结构体变量,存储该文件的有关信息。 ①F②B③J④A⑤K 备选项: (A)空格 (B)'\0' (C)'\n' (D)在其之前未配对的if (E)参数字符串 (F)命令行参数的个数 (G)6 (H)在其之前最近的未配对的if (J)3 (K)FILE (L)EOF (M)命令行参数的字符数 三.程序填空题。 (每空2分,共20分)。 1.以下程序的功能是: 从键盘上输入若干个学生的成绩,统计计算出平均成绩。 请填空。 #include voidmain() { floatsum=0.0,ave,a; intn=0; printf("Entermark\n"); scanf("%f",&a); while(a>=0.0) { sum=sum+a; _____①_________;//n++ scanf("%f",&a); } ave=sum/n; printf("ave=%f\n",ave); } 2.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。 #include voidmain() { charstr[]={"abcdefg"}; char*p1,*p2,ch; p1=str; p2=str; while(*p2! ='\0')p2++; ____②________;//p2-- while(p1 { ch=*p1;*p1=*p2;*p2=ch; ____③_____;//p1++ p2--; } puts(str); } 3.以下程序中,fun函数的功能是求m行4列二维数组每行元素中的最大值。 请填空。 #include intfun(int,int,int(*)[4]); voidmain() { inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},i; for(i=0;i<3;i++)printf("%4d",fun(④)); //i,4,a printf("\n"); } intfun(intm,intn,inta[][4]) { intj,x; x=a[m][0]; for(j=0;j returnx; } 4.下面的程序是用来在数组table中查找x,若数中存在x程序输出数组中第一个等于x的数组元素的下标,否则输出-1。 请填空。 #include inttable[10]={12,34,54,23,45,33,78,87,59,97},x; intlookup(intt[],intkey,intn) { intk; for(k=0;k if(t[k]==key)⑥;//break if( ⑦ )k=-1; //k>=n returnk; } voidmain() { scanf("%d",&x); printf("x_location: %d\n",lookup(table,x,10)); } 5.下列函数insert实现在一维数组v中插入一个元素x,且要求将该元素插入到下标为i位置,数组原有下标为i及以后的元素都将向后移动一个元素的位置,i>=0。 如果i大于等于元素的个数,则x插到数组的末尾。 原有的元素个数存放在指针n所指向的变量中,插入后元素个数加1。 主函数验证了该函的功能。 请填空。 #include voidinsert(intv[],int*n,intx,inti); voidmain() { inta[20]={1,2,3,4,5,6,7}; intkey=11; intn=7,*p=&n; insert(a,p,key,14); for(key=0;key<*p;key++)printf("%d",a[key]); putchar('\n'); printf("%d\n",n); } voidinsert(intv[],int*n,intx,inti) { intj; if(___⑧____)//i<*n for(j=*n-1;j>=i;____⑨____)//j-- _____⑩____=v[j];//v[j+1] else i=*n; v[i]=x; (*n)++; } 四.阅读程序题(每小题5分,共30分) 1.下面程序的运行结果为: ( f=6 ) #include intf(intnum,intrun) { staticintfact,i; if(run==0) { fact=1; i=1; } fact*=i; if(++i<=num) f(num,1); return(fact); } voidmain() { inti=0; printf("f=%d\n",f(3,0)); } 2.下面程序的运行结果是: (63) #include main() { inta[]={1,3,5,7,9},b[4]={2,4,6,8},*p=a,*q=b; p+=2; q++; *p=(*q)%3+5; *(++q)=*(p--)-3; printf("%d",*(p+1)); printf("%d\n",q[0]); } 3.运行程序时输入-6931,则输出结果是: (-1396) #include voidprintopp(longintn) { inti=0; if(n==0)return; else while(n) { if(n>0||i==0) printf("%1d",n%10); else printf("%ld",-n%10); i++; n/=10; } } voidmain() { longintn; scanf("%ld",&n); printopp(n); printf("\n"); } 4.下面程序的运行结果是: (34) #include #defineN2 #defineY(n)((N+1)*n) main() { intz; z=2*(N+Y(5)); printf("%d",z); } 5.以下程序的运行结果为( 9) #include voidmain() { longfun(intn); printf("%ld\n",fun(4)); } longfun(intn) { longs; if(n==1||n==2) s=2; else s=n+fun(n-1); returns; } 6.以下程序的运行结果为(4321) #include voidmain() { voidfun(int*x,int*y); inta[]={1,2,3,4},j,x=0; for(j=0;j<4;j++) { fun(a,&x); printf("%d",x); } printf("\n"); } voidfun(int*x,int*y) { staticintt=3; *y=x[t]; t--; } 五.编程序(每小题10分,共20分) 1.编写程序求下面数列 的前20项之和。 参考程序: #include main() { doublex,sum; inti; for(i=1,x=2,sum=0;i<=20;i++) { sum=sum+x; x=1+1/x; } printf("Front20termsof2/1+3/2+5/3+……=%lf\n",sum); } 2.函数fac的原型为longfac(intk);,函数利用静态变量实现: 连续以1,2,3,……,n为参数调用该函数后,函数最后返回n! 。 要求编制该函数并用相应的主函数进行测试。 参考程序: #include voidmain() { longfac(intn); intn,j; longff; scanf("%d",&n); for(j=2;j<=n;j++) ff=fac(j); printf("n! =%ld\n",ff); } longfac(intn) { staticlongff=1; ff*=n; returnff; } 二级C语言笔试试卷(A)(2008年第一次) (共100分) 注意事项: 1.一、二题为客观题,请将答案涂在机读答题卡上 2.三、四、五、六题为主观题,请将答案做在答题纸上 一、单项选择题。 (每小题1分,共20分) 1.C语言源程序由预处理命令和()组成。 (A)函数(B)语句(C)保留字(D)标始符 2.下面程序段中,与if(x%2)中的x%2所表示条件等价的是()。 scanf("%d",&x); if(x%2)x++; (A)x%2==0(B)x%2! =1(C)x%2! =0(D)x%2==1 3.执行下面的C语句序列后,变量b的值是()。 inta,b,c;a=b=c=1;++a||++b&&++c; (A)错误(B)0(C)2(D)1 4.设有C语句inta[3][4];,则每次移动过a数组一行元素的指针变量定义形式是()。 (A)int*p;(B)int**p; (C)int(*p)[4];(D)int*p[4]; 5.设有整型变量a,实型变量f,双精度型变量x,则表达式10+'b'+x*f值的类型为()。 (A)int(B)float(C)double(D)不能确定 6.C语言中规定,在函数的参数表中,用简单变量做实参时,它和对应形参之间的数据传递方式是()。 (A)地址传递(B)单向值传递 (C)有实参传给形参,再由形参传回给实参(D)由用户指定传递方式 7.下面程序的输出是()。 #include voidmain() { intx=10,y=3; printf("%d\n",y=x/y); } (A)0(B)1(C)3(D)不确定的值 8.执行下面的程序段后,B的值为()。 intx=35; charz='A'; intB; B=((x&15)&&(z<'a')); (A)0(B)1(C)2(D)3 9.以下程序的输出结果为()。 #include voidmain() { inti=0; for(;;) if(i++==5)break; printf("%d\n",i); } (A)0(B)5(C)6(D)前3个选项都错 10.已知: chars[4]="cba";char*p;执行语句序列p=s;printf("%c\n",*p+1);后,其输出为()。 A)'c'B)'b'C)'a'D)'d' 11.运行完下列程序后,在屏幕上的内容是()。 #include voidmain() { inta=0; a+=a=12; printf("%d\n",a); } A)0B)6C)12D)24 12.已知: intx=1,y=2,z=0,则执行z=x>y? (10+x,10-x): (20+y,20-y)后,z的值为()。 A)11B)9C)18D)22 13.若已定义x和y为double类型,则表达式x=2,y=x+10/4的值是()。 A)2B)4C)4.0D)4.5 14.以下程序的输出结果是()。 #include intx=3,y=4; voidmain() { intx=0; x+=y++; printf("%d",x); } A)3B)4C)5D)6 15.在下面C语言的函数说明语句中,正确的是()。 A)intfun(intx,inty);B)intfun(intx,y); C)intfun(x,y);D)intfun(intx;inty); 16.有定义: intx,y=10,*p=&y;,则能使得x的值也等于10的语句是()。 A)x=p;B)x=&p;C)x=&y;D)x=*p; 17.有定义: inta[5][4],(*p)[4]=a;,则*(*(p+2)+3)等于()。 A)a[2][0]B)a[2][1]C)a[2][2]D)a[2][3] 18.有定义: char*s="\t\"Name\\Address\"";,那么strlen(s)等于()。 A)15B)16C)17D)18 19.设有定义: intm=1,n=-1;则执行语句printf("%d\n",(m--&++n);后的输出结果是() A)–1B)0C)1D)2 20.设有C语句: structT{intn;doublex;}d,*p;,若要使p指向结构体变量中的成员n,正确的赋值语句是()。 (A)p=&d.n(B)*p=d.n (C)p=(structT*)&d.n(D)p=(structT*)d.n 二.基本概念选择填空题(本大题后面有若干备选项,请选择合适的备选项并将其号码填入各小题的空白处。 每空2分,共10分) 1.C语言源程序由预处理命令和函数组成,无论有多少个函数,只能有一个主函数,其函数名是①。 2.表达式x*=x+b等价于表达式②。 3.在C语言中③语句是一条限定转移语句,其语句功能为提前结束本次循环体的执行过程而直接进入下一次循环。 4.结构体数据类型仍然是一类变量的抽象形式,系统不会为数据类型分配存储空间。 要使用结构体类型数据,必须要④。 5.调用feof来判断文件是否结束,如果已经读到结束则其返回值是: ⑤。 备选项: (A)void (B)x=x*x+b (C)continue (D)x=x*(x+b) (E)break (F)定义结构体成员 (G)定义结构体类型变量 (H)定义联合体类型变量 (I)0 (J)非0 (K)main (L)goto ①K ②D ③C ④G ⑤J 三.程序填空题。 (每空2分,共20分)。 1.程序的功能是: 统计输入的字符串中小写字母的个数. #include main() { charc; intnum=0; while((c=getchar())! =①) {if(c<'a'||c>'z')continue; ② } printf("%d\n",num); } ①'\n'②num++; 2.下面程序的功能是输出数组中的各字符串,请填空完成程序。 #include voidmain() { char*a[]={"abcd","12345
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 考前 复习资料