2012级C语言期中测试试题(AB-参考答案)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2012级信管专业《C语言程序设计》期中测试题(A组)一、单项选择题(共10小题,每小题2分,共20分)1)以下关于C语言程序的叙述不正确的是(A)。(A)在C语言程序中,注释说明只能位于一条语句的后面。(B)每个C语言程序都必须包含一个main函数,该函数可以调用其他函数。(C)函数是C语言程序的基本组成单位,函数不能嵌套定义,但可以嵌套调用。(D)C语言程序可由一个或多个函数组成,这些函数可以存放到一到多个源程序文件中。2)下面四个选项中,均是不合法的用户标识符的选项组是(B)。(A)12$a_0do(B)a*a3dotstruct(C)double985_007(D)_123#temp%Char3)下面四个选项中,均是合法的整型常量的选项是(C)。(A)0800xffff0123(B)0xf123067123,456(C)0179990xABC(D)123e40108884)C语言中,运算对象必须是整型数的运算符是(A)。(A)%(B)\(C)%和\(D)**5)若a,b,c,d都是int型变量且初值均为10,则下列不正确的赋值语句是(A)。(A)a+b++;(B)a=b++;(C)a=b=c=d;(D)d=(a=b=125)c++;6)已知charc1='A',c2;则执行语句c2=c1+'6'-'3';后,c2的值为(D)。(A)'A3'(B)'B'(C)不确定的值(D)687)逻辑运算符两则运算对象的数据类型(D)。(A)只能是0或1(B)只能是0或非0正数(C)只能是int型或char型(D)可以是任何类型8)设变量n为float,则以下能实现将n中的数值保留小数点后1位,第2位进行四舍五入的表达式是(B)。(A)n=(n*10+0.5)/10.0(B)n=(int)(n*10+0.5)/10.0(C)n=n*10+0.5/10.0(D)n=(int)(n/10+0.5)*10.09)能正确表示“当x的取值在[1,10)和(200,210]范围内为真”的C语言表达式为(B)。(A)(x=1)&&(x10)&&(x200)&&(x=210)(B)(x=1)&&(x10)||(x200)&&(x=210)(C)(x=1)||(x10)||(x200)||(x=210)(D)(x=1)||(x10)&&(x200)||(x=210)10)以下不正确的说法为(D)。(A)在不同函数中可以使用相同名字的变量(B)形式参数是局部变量(C)函数内定义的变量只在本函数内有效(D)函数内的复合语句中定义的变量在本函数内有效二、程序填空题(共3小题,每小题10分,共30分)题1:以下程序的功能为:连续输入多个个数字符号,输出每个数字符号的前序数字符号、该数字符号、该数字符号的后序数字符号,例如:输入4,则输出345;输入0,则输出901;输入9,则输出890,遇非数字符号则程序结束。#includestdio.hvoidmain(){charc1,ch,c3;while(1){ch=getchar();if((ch='0')&&(ch='9')){c1=ch-1;c3=ch+1;if(ch=='0')c1='9';elseif(ch=='9')c3='0';printf(%c%c%c\n,c1,ch,c3);}elsebreak;}}题1:以下程序的功能为:输入1个字母后,输出该字母的前序字母、该字母、该字母的后序字母,例如:输入g,则输出fgh;输入a,则输出zab;输入M,则输出LMN;输入Z,则输出YZA。程序中有2行代码存在错误,试找出并改正之。#includestdio.hvoidmain(){charc1,ch,c3;for(;;){ch=getchar();if((ch='A')&&(ch='Z')||(ch='a')&&(ch='z')){c1=ch-1;c3=ch+1;if(ch=='A'||ch=='a')c1=ch+25;elseif(ch=='Z'||ch=='z')c3=ch-25;printf(%c%c%c\n,c1,ch,c3);}elsebreak;}}题2:从键盘上输入一整数x和n,试求从x开始的前n个素数及它们的和值。#includestdio.h#includemath.hvoidmain(){intx,n,k,flag,sum=0;scanf(%d,%d,&x,&n);while(n0){for(flag=1,k=2;k=sqrt(x);k++)if(x%k==0)flag=0;if(flag){sum+=x;n--;printf(%d\n,x);}x++;}printf(\nsum=%ld\n,sum);}题2:从键盘上输入一整数x和n,试求从x开始的前n个素数及它们的和值。#includestdio.h#includemath.hvoidmain(){intx,n,m,f,c=0,sum=0;scanf(%d,%d,&x,&n);while(cn){for(f=1,m=2;m=sqrt(x);m++)if(x%m==0)f=0;if(f){sum+=x;c++;printf(%d\n,x);}x++;}printf(\nsum=%ld\n,sum);}题3:编程求方程3X-7Y=1在|X|≤100,|Y|≤50内的整数解的组数,这些解中,其|X|+|Y|的最大值为多少?#includestdio.h#includemath.hvoidmain(){intx,y,max_xy=0,zs=0;for(x=-100;x=100;x++)for(y=-50;y=50;y++)if(3*x-7*y==1){zs++;if(abs(x)+abs(y)max_xy)max_xy=abs(x)+abs(y);}printf(解的组数=%d\nmax(|x|+|y|)=%d\n,zs,max_xy);}解的组数=29max(|x|+|y|)=143Pressanykeytocontinue三、程序改错题(共2小题,每题10分,共20分)答题说明:请指出存在错误的语句行的行号及改正后的正确语句记录到答题纸上,不允许增加或删除语句行。题1:求S=1+(1+2+3)+(1+2+3+4+5)+…的前10组数的累加和。程序中有2行代码存在错误,试找出并改正之。#includestdio.h//1voidmain()//2{intk,i,sum=0,s=0;//3for(k=1;k20;k++)//4for(k=1;k20;k+=2){for(i=1;i=k;i++)//5{for(i=1,s=0;i=k;i++)s+=i;//6sum=sum+s;//7}//8printf(sum=%d\n,sum);//9}//10题1:求S=(1+2)+(1+2+3+4)+(1+2+3+4+5+6)+……的前10组数的累加和。程序中有2行代码存在错误,试找出并改正之。#includestdio.h//1voidmain()//2{intk,i,sum=0,s=0;//3for(k=2;k21;k++)//4for(k=2;k21;k+=2){for(i=1;i=k;i++)//5{for(i=1,s=0;i=k;i++)s+=i;//6sum=sum+s;//7}//8printf(sum=%d\n,sum);//9}//10题2:以下程序的功能为:求从100开始的前100个含有数字3或7的数的和值。程序中有2行存在错误,试找出并改正之。#includestdio.h//1voidmain()//2{//3{intin3_7(intx);intk,count;//4longsum;//5count=sum=0;//6for(k=100;count100;count++)//7for(k=100;count100;k++)if(in3_7(k))//8{count++;//9sum+=k;//10}//11printf(sum=%ld\n,sum);//12}//13intin3_7(intx)//14{intt,r=0;//15while(x0)//16{t=x%10;//17if(t==3||t==7)//18r=1;//19x=x/10;//20}//21returnr;//22}//23题2:以下程序的功能为:求从100开始的前100个各位数都是奇数数字的数的和值。程序中有2行存在错误,试找出并改正之。#includestdio.h//1voidmain()//2{//3{intall_js(intx)intk,count;//4longsum;//5count=sum=0;//6for(k=100;count100;count++)//7for(k=100;count100;k++)if(all_js(k))//8{count++;//9sum+=k;//10}//11printf(sum=%ld\n,sum);//12}//13intall_js(intx)//14{intt,r=1;//15while(x0)//16{t=x%10;//17if(t%2==0)//18r=0;//19x=x/10;//20}//21returnr;//22}//23四、程序设计题(共2小题,每题15分,共30分)题1:试编写一个判断一个正整数x是否为回文数(若一个数与它的逆序数相同,则称该数为回文数,例如12321,1221就是回文数)的函数inthiwen(intx),若是返回1,否则返回0.并编写一个main()函数输入一个整数并调用该函数判断该数是否为回文数。#includestdio.hinthuiwen(intx){intm,y=0,gw;m=x;while(m0){gw=m%10;y=y*10+gw;m=m/10;}if(y==x)return1;elsereturn0;}voidmain(){intx;scanf(%d,&x);if(huiwen(x))printf(%dishuiwen!\n,x);elseprintf(%disn'thuiwen!\n,x);}题2:求从6开始的前6个同构数(若一数与它的平方数的尾部相等,则称其为同构数,如5,52=25与25,252=625等)。#includestdio.h#includemath.hintIs_SameCon(int);voidmain(){intn=6,count=0;while(count6){if(Is_SameCon(n))//判断是否为同构数{count++;printf(%d\n,n);}n++;}}intIs_SameCon(intx){intws,p10,n,k,result=0;ws=0,n=x,p10=1;while(n0)//求x的位数{ws++;n=n/10;}for(k=1;k=ws;k++)//求10的x的位数次方p10*=10;if(x*x%p10==x)//求x的平方的尾部result=1;returnresult;}625763766259376Pressanykeytocontinue

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功