河南理工大学-《C语言程序设计》2010-2011-2A(2011-5-26)试卷-及答案_第1页
河南理工大学-《C语言程序设计》2010-2011-2A(2011-5-26)试卷-及答案_第2页
河南理工大学-《C语言程序设计》2010-2011-2A(2011-5-26)试卷-及答案_第3页
河南理工大学-《C语言程序设计》2010-2011-2A(2011-5-26)试卷-及答案_第4页
河南理工大学-《C语言程序设计》2010-2011-2A(2011-5-26)试卷-及答案_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《C语言程序设计》试卷第8页(共8页)专业班级:姓名:学号:…………密………………封………………线…………河南理工大学专业班级:姓名:学号:…………密………………封………………线…………专业班级:姓名:学号:…………专业班级:姓名:学号:…………密………………封………………线…………考试方式:闭卷本试卷考试分数占学生总评成绩的70%注:请将答案填写在答题纸上,写在试卷上,不得分。一、单项选择题(每题1分,共30分),在每小题列出的四个选项中只有一个选项是符合题目要求的,请在答案卡上将正确答案所对应选项的字母涂黑。1。以下选项中正确的语句组是______。A)chars[];s="book!”B)char*s;s={"book!”};C)chars[10];s=”book!"D)char*s;s="book!”;2。C语言源程序文件的后缀是______.A)”。c"B)”。obj”C)"。exe”D)”。txt"3。以下选项中不正确的常量是______。A)aB)'a'C)5D)"b"4.下列不正确的转义字符是。A)\\B)\’C)074D)\05。C语言程序设计中可以对程序进行注释,注释部分可以用______符号括起来。A){}B)[]C)/**/D)*//*6.在一个C程序中,main函数出现的位置是。A)必须在程序的最后面B)可以在任意地方C)必须在程序的最前面D)必须在系统调用的库函数的后面7.若已定义x和y为double类型,则表达式x=2,y=x+3/2的值是.A)3。500000 B)3 C)2.000000 D8.设x、y均为float类型变量,下面不正确的赋值语句是。A)x=x+1;B)y=(x%2)/10;C)x*=y+8;D)x=y=0;9.若有以下定义,则能使其值为3的表达式是。intk=7,x=12;A)x%=(k%=5)B)x%=(k—k%5)C)x%=k-k%5 D)(x%=k)—(k%=5)10.若有以下定义和语句,则输出结果是。charc1='b',c2='e';printf("%d%%,%c\n”,c2-c1,c2—'a'+’A’);A)%3,EB)3%,EC)2%,ED)%2,E11.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是

。A)"x"&&'y'B)

x〈=yC)

x||y+z&&y-zD)!((x<y)&&!z

||1)12.分析以下C程序,其正确的运行结果是(注:ㄩ表示空格)。#include〈stdio.h〉main(){longy=—43456;printf("y=%—8ld\n”,y);printf(”y=%-08ld\n",y);printf("y=%08ld\n”,y);printf("y=%+8ld\n”,y);}A)y=ㄩㄩ-43456 B)y=-43456 y=-ㄩㄩ43456

y=—43456

y=—0043456

y=—0043456

y=-43456

y=+—43456C)y=—43456 D)y=ㄩㄩ-43456

y=-43456

y=—0043456

y=—0043456

y=00043456

y=ㄩㄩ-43456

y=+4345613.设整型变量s,t,c1,c2,c3,c4的值均为2,则执行语句(s=c1==c2)||(t=c3>c4)后,s,t的值为。A)1,2

B)1,1

C)0,1

D)1,014.阅读以下程序,当输入数据的形式为25,13,10,正确的输出结果为。#include<stdio。h>main(){intx,y,z;scanf("%d%d%d”,&x,&y,&z);printf("x+y+z=%d\n",x+y+z);}A)x+y+z=48 B)x+y+z=35 C)x+z=35 D)不确定值15.若k=4,a=3,b=2,c=1,则表达式k〈a?k:c<b?c:a的值是。A)4B)3C)216.执行以下程序后的输出结果是.main(){chark;inti;for(i=1;i〈3;i++){scanf("%c",&k);switch(k){case'0’:printf("another");case'1’:printf(”number");}}}程序运行是,从键盘输入:0ㄩ1〈回车>(注:ㄩ表示空格),程序执行后的输出结果是。A)anothernumberB)anothernumberanotherC)anothernumbernumberD)numbernumber17.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是。A)必须是逻辑值B)必须是整数值C)必须是正数D)可以是任意合法的数值18。下面程序段的运行结果是.charc[]="\t\v\\\0will\n”;printf(”%d”,strlen(c));A)14B)3C)919。在函数调用时,若实参为变量,则下列关于函数形参和实参的叙述中正确的是。A)函数的实参和其对应的形参共占同一存储单元B)形参只是形式上的存在,不占用具体存储单元C)同名的实参和形参占同一存储单元D)函数的形参和实参分别占用不同的存储单元20.下面关于函数参数的说法不正确的是.A)形参可以是常量、变量或表达式B)实参可以是常量、变量或表达式C)在带参函数的定义中,必须指定形参的类型D)形参应与其对应的实参类型一致21.以下程序的输出结果是。#include〈stdio.h>#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti,j,k;i=10;j=15;k=10*MIN(i,j);printf("%d\n”,k);}A)15 B)100 C)10 D)15022.以下一维数组a的定义中,正确的是.A)inta(10)B)intn=10,a[n];C)intn;D)#defineSIZE10scanf(”%d”,&n);;inta[SIZE];inta[n]23.若有定义:inta[4][3],(*prt)[3]=a,*p=a[0];,则不能正确表示数组元素a[1][2]的表达式是.A)*(*(prt+1)+2) B)*(p+5) C)(*(prt+1))[2] D)*((*prt+1)[2]24.有以下程序:#include<stdio。h〉#include<stdlib.h〉main(){int*a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(”%d,%d,%d\n”,*a,*b,*c);}程序运行后的输出结果是。A)3,3,3

B)2,2,3

C)1,2,3

D)1,1,325.以下程序的输出结果是。structst{intx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};main(){p=aa;printf("%d”,++p-〉x);printf(”%d",(++p)—>x);printf(”%d\n”,++(*p->y));}A)102020 B)516021 C)516011 D)60703126。设有定义:struct{charmark[12];intnum1;doublenum2;}t1,t2;,若变量均已正确赋初值,则以下语句中错误的是。A)t1=t2;B)t2。num1=t1.num1;C)t2。mark=t1。mark;D)t2.num2=t1。num2;27。有以下程序:#include〈stdio。h>intf(intx);main(){ intn=1,m; m=f(f(f(n))); printf("%d\n",m);}intf(intx){ returnx*2;}程序运行后的输出结果是。A)1B)2C)4D)28.有以下程序#include〈stdio。h>structord{intx,y;}dt[2]={1,2,3,4};main(){ structord*p=dt; printf(”%d,",++(p-〉x)); printf("%d\n",++(p—>y));}程序运行后的输出结果是。A)1,2B)4,1C)3,429.有以下程序#include〈stdio。h〉main(){unsignedchara=8,c;c=a〉〉3;printf("%d\n",c);}程序运行后的输出结果是。A)32B)16C)130.设fp已定义,执行语句fp=fopen("file”,"w”);后,以下针对文本文件file操作叙述的选项中正确的是。A)写操作结束后可以从头开始读B)只能写不能读C)可以在原有内容后追加写D)可以随意读和写二、填空题(每空2分,共20分)。31。一个最简单的C语言程序至少应包含一个【1】函数。32.若a是int型变量,且a的初值为3,则计算表达式a+=a—=a*a后a的值为【2】。33。若x=2,y=3,则x&y的结果是【3】。34.struct是关键字,是【4】类型的标志。35.以下程序的运行结果是【5】。#defineMAX(a,b)(a>b?a:b)+1main(){inti=6,j=8,k;printf("%d\n",MAX(i,j));}36。下面程序的功能是:输出100以内能被3整除且个位数为9的所有整数,请填空。main(){inti,j;for(i=0;【6】;i++){j=i*10+9;if(j%3!=0)continue;printf(”%d",j);}}37。用for循环打印147101316192225,请完善printf函数。for(i=1;i〈=9;i++)printf(”%3d”,【7】);38。下面程序的运行结果是【8】.#include<stdio.h〉main(){chara[80],*p="AbabCDcd";inti=0,j=0;while(*(p++)!='\0’){if(*p〉='a’&&*p〈='z'){a[i]=*p;i++;}}a[i]='\0';puts(a);}39。以下程序的运行结果是【9】。#include<stdio.h>structNODE{ intk; structNODE*link;};main(){ structNODEm[5],*p=m,*q=m+4; inti=0; while(p!=q) { p->k=++i;p++; q-〉k=i++;q-—; } q—〉k=i; for(i=0;i〈5;i++)printf("%d",m[i].k); printf("\n");}40.rewind函数的功能将文件的读写指针移动到文件的【10】。三、程序改错题。每个/*****found*******/下面的语句中都有一处错误,请将错误的地方改正.(每题4分,共20分)41。利用插入排序法对字符串中的字符按从小到大的顺序进行。插入法的基本算法是:先对字符串中的头两个元素进行排序;然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中;以此类推.#include<stdio.h〉#include<string。h〉#defineN100main(){inti,j,n;charstr[N]="asdfsdfsdf”,ch;n=strlen(str);for(i=1;i<n;i++){/*******found*********/c=str[i];j=i-1;/*******found*********/while((j>=0)||(ch〈str[j])){str[j+1]=str[j];j——;}str[j+1]=ch;}printf(”Thestringaftersorting:%s\n\n”,str);}42.函数fun的功能是应用递归算法求某数b的平方根.求平方根的迭代公式如下:#include〈stdio.h〉#include<math.h〉/*******found*********/doublefun(doubleb,x0){doublex1,y;x1=(x0+b/x0)/2。0;/*******found*********/if(abs(x1-x0)〉=1e-6)y=fun(b,x1);elsey=x1;returny;}main(){doublen;printf("Entern:");scanf("%lf”,&n);printf("Thesquarerootof%lfis%lf\n”,n,fun(n,1.0));}43。函数fun的功能是:从3个红球、5个白球和6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球.组合数作为函数值返回,正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数.#include〈stdio。h>intfun(){ inti,j,k,sum=0; printf("Theresult:\n\n"); /*******found******/ for(i=0;i〈=3;i++) { for(j=1;j<=5;j++) { k=8—i-j;/*******found******/ if(K〉=0&&K<=6) { sum=sum+1; printf("red:%4dwhite:%4dblack:%4d\n",i,j,k); } } } returnsum;}main(){ intsum; sum=fun(); printf("sum=%4d\n\n”,sum);}44.函数fun的功能是:求整数x的y次方的低3位值.例如,整数5的6次方为15625,此值的低3位值为625。#include〈stdio.h>longfun(intx,inty,long*p){ inti; longt=1; /*******found******/ for(i=1;i<y;i++) t=t*x; *p=t; /*******found******/ t=t/1000; returnt;}main(){ longt,r; intx,y; printf("\ninputxandy:"); scanf("%ld%ld”,&x,&y); t=fun(x,y,&r); printf(”\n\nx=%d,y=%d,r=%ld,last=%ld\n\n",x,y,r,t);}45.函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如:若给num1和num2分别输入49和21,则输出的最大公约数为7;若给num1和num2分别输入27和81,则输出的最大公约数为27。#include〈stdio.h〉intfun(inta,intb){ intr,t; if(a<b){ /*******found******/ t=a;b=a;a=t; } r=a%b; while(r!=0) {a=b;b=r;r=a%b;} /*******found******/ return(a);}main(){intnum1,num2,a;printf(”inputnum1num2:”);scanf("%d%d",&num1,&num2);printf("num1=%dnum2=%d\n\n",num1,num2);a=fun(num1,num2);printf("Themaximuncommondivisoris%d\n\n",a);}四、程序设计(共3题,每题10分,共30分)46。编程实现下列式子的和值.47.对N

×

N矩阵,以主对角线为对称线,将对称元素相加并将结果存放在下三角元素中,右上三角元素置0。例如,若N

=

4,有下列矩阵:211213242100025164738计算结果为:371600291132544258320422133106659871048。请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include<stdio。h〉#include〈string.h〉#defineN80intfun(char*s){}main(){ charline[N];intnum=0; printf(”Enterastring:\n"); gets(line); num=fun(line); printf(”Thenumberofwordis:%d\n\n”,num);}2010-2011—2《C语言程式设计》参考答案(A卷)一、单项选择题(每题1分,共30分)1.D 2。A 3.A 4。C 5。C 6.B 7。D 8.B 9。D 10。B11。D 12.C13。D14。D15.D16。A17.D18。B19。D20.A21.A22。D23。D24.A25.B26.C27.D28.D29.C30。B二、程序填空题(本题共10个空,每空2分,共20分)31.main(或主)32.—1233.234.结构体35.936.i<=9(或i〈10)37.3*i-2(或2*(i-1)+i)38.babcd39.1343140。开头三、程序改错题。(每处2分,每题4分,共20分)41。(1)c=str[i];改为ch=str[i];,即c改为ch(2)将while((j〉=0)||(ch<str[j]))改为while((j>=0)|&&(ch<str[j])),即将||改为&&42.(1)将doublefun(doubleb,x0)改为doublefun(doubleb,doublex0),即将x0前加double(2)将if(abs(x1-x0)>=1e—6)改为if(fabs(x1-x0)>=1e-6),即将abs改为fabs43.(1)if(K>=0&&K〈=6)改为if(k〉=0&&k〈=6),即将大写字母K改为小写字母k。(2)for(i=0;i<=3;i++)改为 for(i=1;i〈=3;i++),即将i=0改为i=144.(1)将t=t/1000改为 t=t%1000,即将/改为%.(2)将for(i=1;i<y;i++)改为for(i=0;i〈y;i++),即将i=1改为i=045.(1)将t=a;b=a;a=t;改为t=a;a=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论