0——程序设计教案.docx
程序设计模拟题1一单项选择题1C程序的根本单位是_CA子程序B过程C函数D源程序文件2 .假设有以下说明,那么C_不是对StrCPy库函数的正确的调用charstr1=*copyzr,str210,str3=*hijk1mnw,*str4,*str5=*abed"Astrcpy(str2,str1);Bstrcpy(str3,str1);Cstrcpy(str4,str1);Dstrcpy(str5,str1);3 .C语言中,要求运算量必须是整形数据的运算符是AA%B/C*D!4 .选出C语言的合法的变量名_D_A33aBattbCab,cDddt35 .以下说法正确的选项是:AA.预处理命令行都必须以#号开场B.预处理命令只能位于源程序的首部C.对预处理命令的处理是在执行过程中进展的D,每个C程序必须使用预处理命令#inc1udestdio.h6 .对于如下数据定义和scanf函数调用:inti1,i2;charc1,c2;scanfC%d%c%d%c,;&i1,&c1,&i2,&c2);假设使i1、c1、i2、c2的值分别为10、'C'、20、'D',正确的数据输入方式是_A_A10C20D回车B10C20D回车C10C20D回车D10C20D回车7 .当定义一个构造体变量时系统分配给它的内存是:_A_A各成员所需内存量的总和B成员中占内存量最大者所需的容量C构造中第一个成员所需内存量D构造中最后一个成员所需内存量8 .设有以下语句,那么c的值用二进制表示为:Bchara=3,b=6,c;c=(ab)«2;A00011011B00010100C00011100D00011000二填空题1 .设inta=10,那么执行完语句a+=a-=a*a后,a的值是0。2 .char*str;Str="string”;这种字符串赋值方式正确吗?1(正确填1不正确填0)3 .表达式3&4的值为1o4 .C语言提供的构造类型的数据有:数组,构造体,一枚举型一。5 .表达式0?(0?3:2):(10?1:0)的值为_1c6 .C语言程序中,假设对函数类型未加显式说明,那么函数的隐含类型为_int_类型。7 .定义intj=1;执行whi1e(j+4)后j的值为5。三程序填空题1 .输出由,*,组成的倒三角图案,图案的行数n从键盘输入。如果行数n为6,那么图案如下列图:Itinc1ude<stdio.h>main()(inti,j,n;printf(,P1easeinputnumberofrows:");SCanf(",&n);for(i=_0;i<n;i+)(for(j=0;j<_n;j+)putchar(j<i?z,*,);putchar(,n,);)2 .用起泡法将10个数组元素从小到大排序。main()inti,j,t;staticinta10=5,7,4,2,3,6,1,0,9,8;for(j=0;j<9;j+)for(i=0;i_<_9-j;i+)if(ai>a_i+1_)t=ai;ai=ai+1;ai+1=_t,;)for(i=0;i<10;i+)printf(''%2dw,ai);四改错题(下面每题有三行程序存在错误,要求不改变程序的功能,指出出错语句,并写出完整的正确语句)1.本程序计算N×N二维整型数组全部元素的平均值(输出时保存一位小数)。行号程序01#inc1ude<stdio.h>02#defineN403f1oatfun(intarrN);04main()0506staticintaaN=071,2,3,4,4,5,6,7),0810,11,12,13,20,21,22,23;09f1oatavr;10 avr=fun(&aa);11 Printf("avr=%.If”,avr);12 )13 f1oatfun(intarrN)14 15 inti,j;16 ints;17 f1oatav;18 for(i=1;i<N;i+)19 for(j=0;j<=N-1;j+)20 s+=arrij;21 av=s(N*N);22 returnav;23 )可能出错的程序语句的行号为:03、06、10、13、16、18、19、20,错误依次为:行号10应改为avr=fun(aa)行号_16_应改为_f1oats=0.0o行号18应改为for(i=0;KN;i÷+)2.从键盘输入一行字符,然后删除字符串中的全部空格。例如,如果输入“abcdefgh”,那么输出为"abcdefgh”。行号程序01#inc1ude<stdio.h>02main()0304chars81;05char*p1,p2;06printf(*P1easeenterastring:");07scanf(''%sz',s);08p1=p2=s;09whi1e(*p1!='0')10 (11 if(*p1!=z,)12 13 *p2=*p1;14 p2+;15 16 p2+;17 )18 *p2=,0,;19 printf(*Stringwithout1eadingb1ank:%sn*,s);20 )可能出错的程序语句的行号为:05、07、08、09、11、13、16,错误依次为:行号_05_应改为char*p1,*p2;。行号07_应改为一gets(s);o行号16_应改为p1+;o五阅读理解1.下面程序的输出结果为:12,10main()(intx=1,i=1;for(;x<50;i+)if(x>10)break;if(x%2!=0)x+=3;continue;)-=-1;)printf(''%d,%dnw,x,i);六程序设计题1 .统计所有的三位整数中有多少个数的各位数字之积等于各位数字之和,并输出这些整数。2 .编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述的结果。3 .输入3个整数,按由小到大的顺序输出。(注:要求用指针方法处理)。解:1main()(intn,a,b,c,sum=0;for(n=100;n<1000;n+)a=n100;b=(n-a*100)10;/*该语句换成b=n10-a*10;亦可*/c=n%10;if(a*b*c=a+b+c)printf("Thenumberis%dn",n);sum+;printf(Thetota1numberis%d,z,sum);)2、int1etter,digit,space,others;*定义全局变量*/main()intcount(charstr);*函数声明*/chartext80;gets(text);Ietter=O;digit=0;space=0;others=0;count(text);Printf("1etter:%d,digit:%d,space:%d,others:%dn”,1etter,digit,space,others);)intcount(charstr)inti;fbr(i=OiStriJ!=,O,ji+)if(stri>=,a,<fe(festri<=,z,(stri>=,A,stri<=,Z,)1etter+;e1seif(stri>='0'&&stri<=,9,)digit+;e1seif(stri=,')space+;e1seothers+;(3、main()(intn1,n2,n3;int*p1,*p2,*p3;SCanfr%d,%d,%d”,&n1,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if(n1>n2)swap(p1,p2);if(n1>n3)swap(p1,p3);if(n2>n3)swap(p2,p3);PrintfCtTheorderis%d,%d,%dnw,n1,n2,n3);swap(int*p1,int*p2)intp;p=*p1;*p1=*p2;*p2=p;5.对两个静态数组A和B进展如下初始化.staticcharA="ABCDEF"zD,E,F,;B.A和B只是长度一样D.A数组长度比B数组长B.宏名必须用大写字母staticcharB=,A,Bz,'C',那么以下表达正确的选项是DoA.A和B完全一样C.A和B不一样,A是指针数组6 .以下说法错误的选项是BA.宏替换只是字符替换C.宏替换是在预处理时进展的D.程序中引用带参数的宏时,对参数的数据类型没有限制7 .对于如下数据定义f1oatx,y;为了使X和yx=1.23,y=4.56回车那么正确的scanf调用是A.SCanf("f%f”,&x,&y);B.scanf("%f,%f,',&x,&y);C.scanf("x=%fy=%f",&x,&y);D.scanf("x=%f,y=%f",&x,&y);8.以下共用体类型和变量的定义,正确的选项是_C_。A.unionstudentB.unionC.intnumber,charname20,s;unionstudentD.intnumber,charname20,);s;unionstudentintnumber;charname20;)s;intnumber;charname20;;s;二填空题1 .定义intx=10,y,z;执行y=z=x;x=y=z;B,变量X的值为1。2 .charstr20;str=string;这种字符串赋值方式正确吗?O(正确填1,不正确填0)o3 .设X为整型量,那么表达式xx的值为04 .假设有以下说明和语句inta=1,2,3,4,5);那么a+是对数组元素地址的正确表示吗0(正确填1,不正确填0)o5 .表达式(1/2)*10.0的值为0.0Q6 .将一维数组X的第i个元素的地址赋给指针变量P的语句是P=&xiT;一。7 .定义inti=1;执行Whi1e(i+<5)后i的值为6。8 .设a=7,b=6,c=5;写出表达式(a+b)>(c*c)&&b的值是0一。三程序填空题1 .输出由数字组成的三角图案,图案的行数n从键盘输入。如果行数n为6,那么图案如下列图:AAAAAABBBBBCCCCDDDEEFinc1ude<stdio.h>main()(inti,j,n;Prin1f("P1easeinputnumberofrows:");SCanf(",&n);for(i=0;i(1):i+)(for(