1…………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线…………姓名学号专业班级学院武汉理工大学考试试卷(A卷)2012~2013学年2学期计算机技术基础(C语言)课程闭卷时间120分钟,学时,学分,总分100分,占总评成绩%年月日题号一二三四五六七八九十合计满分3010102525100得分一、单选题(每小题1分,共30分)1234567891011121314151617181920212223242526272829301.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\101'是__A_A、字符AB、字符aC、字符eD、非法的常量2.若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是__D_A、p=q;B、*p=*q;C、n=*q;D、p=n;3.下面四个选项中,均是合法整型常量的选项是__A_A、160-0xffff011B、-0xcdf01a0xeC、-01986,0120668D、-0x48a2e50x4.若x为int类型,则逗号表达式(x=3*5,x*5),x+25执行后,x的值是__C5.A、15B、75C、40D、表达式不正确6.若给定条件表达式(M)?(a++):(a--),则其中表达式M等价于__A_A、(M!=0)B、(M==0)C、(M!=1)D、(M==1)7.设y为float类型,x为int类型,则以下能实现将y中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是__B_A、y=(y*100+0.5)/100.0B、x=y*100+0.5,y=x/100.0C、y=y*100+0.5/100.0D、y=(y/100+0.5)*100.08.设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是__C_A、0~255B、-256~+255C、0~65535D、-32768~+327679.表达式3.6-1/2+(int)5.7%2的值是__C_A、3.600000B、4.600000C、4.100000D、2.600000得分210.C语言中的sizeof()是__B_A、类型名B、运算符C、变量名D、函数名11.若有说明语句:inta[2][4];,则对a数组元素的正确引用是__B_A、a[0+2][3]B、a[1][2+1]C、a[0][4]D、a[2][2]12.若有说明:inta=1,b=2,c=3,d=4;则表达式ab?a:cd?c:d的值是__A_A、1B、2C、3D、413.设inta=-1,b=3;,执行表达式++a&&(b=5)后,a和b的值分别是__B_A、-1和3B、0和3C、0和5D、-1和514.若有:chars1[10],s2[10]={books},则能将字符串books赋给数组s1的正确语句是__C_A、s1={books};B、s1=s2;C、strcpy(s1,s2);D、strcpy(s2,s1);15.若x为unsignedint型变量,则执行以下程序段后的输出是___D_x=65535;printf(%d\n,x);A、65535B、1C、无确定值D、-116.组成C语言程序的是__D_A、子程序B、语句C、主程序D、函数17.设x和y均为int型变量,则执行下的循环后,y值为__B_for(y=1,x=1;y=50;y++){if(x==10)break;if(x%2==1){x+=5;continue;}x-=3;}A、2B、4C、6D、818.与语句if(ab)if(cd)x=1;elsex=2;等价的是__D_A、if(a=b)x=2;elseif(cd)x=1;B、if(ab){if(cd)x=1;}elsex=2;C、if((ab)&&(cd))x=1;elsex=2;D、if(ab){if(cd)x=1;elsex=2;}19.在C程序中有如下语句:char*func(intx,inty);它是__A_A、对函数func的定义B、不合法的C、对函数func的说明D、对函数func的调用20.设x为int型变量,则执行语句x=10;x*=x-=x-2;后,x的值为__D_A、100B、20C、10D、421.若已定义:inta[9],*p=a;不能表示a[1]地址的表达式是__D_A、a+1B、++pC、p+1D、a++22.下列转义字符中正确的是__A_A、'\\'B、'\'C、'\af0'D、'\810'323.有以下程序段:#includestdio.hmain(){charc;while((c=getchar())!='?')putchar(--c);}程序运行时,如果从键盘输入:Y?N?回车,则输出结果为__B_A、YB、XC、MD、N24.关于for(表达式1;表达式2;表达式3),叙述正确的是__C_A、3个表达式都可以缺省B、表达式1不可以缺省C、表达式2不可以缺省D、表达式3不可以缺省25.判断char型变量c1是否为大写字母的正确表达式是__B_A、'A'=c1='Z'B、(c1='A')&&(c1='Z')C、('A'=c1)AND('Z'=c1)D、(c1='A')&(c1='Z')26.已知i=1,sum=0,执行以下程序段后s的值为__B_while(i++100)sum+=i;A、5050B、5049C、5051D、500527.若有以下定义和语句,则输出结果是__D_chars[]=\t\v\\\0will\n;printf(%d,%d\n,strlen(s),sizeof(s));A、不确定B、14,15C、9,10D、3,1028.执行下列程序后输出的结果是__D_inta[3][3]={{1},{2},{3}};intb[3][3]={1,2,3};main(){printf(%d\n”,a[1][0]+b[0][0]);}A、0B、1C、2D、329.若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是__D_A、num%2==1B、!(num%2==0)C、num%2D、!(num%2)30.关于函数,下列叙述正确的是__D_A、函数必须要有return语句B、一个函数中可以定义其它的函数C、main()函数也可以被调用D、一个C程序只能有一个main()函数431.以下程序的运行结果是__A_inty=2;f1(intx){inty=3;y+=x++;printf(%d,y);}main(){inti=2;f1(i);printf(%d\n,y+=i++);}A、54B、44C、57D、4二、填空题(每空1分,共10分)1.结构化程序设计的三种结构分别是:选择结构、顺序结构循环结构_。2.使用库函数sqrt()时应包含的文件是_math.h_。3.设charch='A';执行语句printf("%c,%d",ch+32,ch);后的输出结果是_a,97_。4.设floata,b,c;若a、b和c分别为三角形的三边长,它们“能构成三角形”的逻辑表达式是_a+bc;a+cb;b+ca_。5.在C语言中,二维数组元素在内存中的存放顺序是_按行存放_。6.在C语言中,形参和实参的传递方式分为地址传递和_值传递_。7.在C语言中,一个函数通常由两部分组成,它们是_函数名_和_函数体_。8.C语言的预处理语句以_#_开头。三、判断题(每小题1分,共10分)1.逻辑运算符两侧运算对象的数据能是0或1。(错)2.C语言规定,在一个源程序中,main函数的位置必须在程序最开始。(错)3.如果实参与形参的类型不一致,以实参类型为准。(对)4.在一个源文件中定义的全局变量的作用域为本文件的全部范围。(对)5.在C程序中,%是只能用于整型运算的运算符。(错)6.do-while的循环体可以是复合语句。(错)7.C语言规定,在if-else的嵌套中,else子句总是与其之前最近的if配对。(对)8.从循环体内某一层跳出,继续执行循环外的语句是:continue语句。(对)9.C语言程序中每条语句必须单独占一行。(错)10.二维数组y有m列,则在y[i][j]前的元素个数为i*m+j个。(错)11.…………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线…………得分得分5四、程序阅读,写出各小题的运行结果(每小题5分,共25分)1.#includestdio.hmain(){inta=0,b=2,c=3;switch(a){case0:switch(b==2){case1:printf(*);break;case2:printf(%);break;}case1:switch(c){case1:printf($);break;case2:printf(&);break;default:printf(#);}}printf(\n);}3.count(charch2){staticintk;k++;if(ch2=='!')printf(count=%d\n,k);}main(){charch1;while(1){scanf(%c,&ch1);count(ch1);if(ch1=='!')break;}}运行时输入:hello!↙4.voidprintd(intx){if(x0){printf(“%c”,'-');x=-x;}if(x/10)printd(x/10);printf(“%c”,x%10+’0’);}main(){intn=-9870;printd(n);}2.#includestring.h#defineN80main(){charstr1[N]=whataday!,str2[N];inti=0,j=0;printf(\n******str1******\n);puts(str1);while(str1[i]){if(str1[i]!='')str2[j++]=str1[i];i++;}str2[j]='\0';printf(\n******str2******\n);printf(%s,str2);}5.#includestdio.hmain(){inti,j;for(i=4;i=1;i--){for(j=1;j=i;j++)printf(0);for(j=1;j5-i;j++)putchar('*');putchar('\n');}}得分61.*#2.******str1******whataday!******str2******whataday!3.count=64.-98705.0000000*00**0***五、编写程序(8分+7分+10分=25分)1.编写程序,根据输入的用电量(定义为float)计算用户应缴纳的电费。已知武汉市阶梯电价费率如下:(要求用switch语句)。b)180~400个,超过180的部分,每个字0.65元;c)400个,超过400的部分,每个字0.95元;2.从键盘输入若干字母,将小写字母变成其后的第四个字母,a--e,b--f,……,v--z,w--a……大写字母则先变成小写字母再处理。如:输入aBdEgWz,则输出efhikad。3.在主函数中定义一个二维数组s[20][3]来存放一个班级中20名学生的英语、高数和C语言3门课的考试成绩(假设成绩都是整型),输入全部3门课的成绩,完成以下功能:(1)求出该班各门课的平均成绩存入一个一维数组a[3]并输出。得分7a)0~180个,每个字0.57元;b)180~400个,超过180的部分,每个字0.65元;c)400个,超过400的部分,每个字0.95元;1.从键盘输入若干字母,将小写字母变成其后的第四个字母,a--e,b--f,……,v--z,w--a……大写字母则先变成小写字母再处理。如:输入aB