−1−一、单选题:1.有以下程序:voidmain(){chark;inti;for(i=0;i3;i++){scanf(%c,&k);switch(k){case'0':printf(another\n);break;case'1':printf(number\n);default:printf(null);}}}程序运行时,从键盘输入:01回车,程序执行后的输出结果是。A.anotherB.anotherC.anotherD.anothernumbernumbernumbernumbernullnumbernullnull−2−2.有以下程序:voidmain(){inti,s=0;for(i=1;i10;i+=2)s+=i+1;printf(%d\n,s);}程序执行后的输出结果是。A.自然数1~9的累加和B.自然数1~10的累加和C.自然数1~9中的奇数之和D.自然数1~10中的偶数之和−3−3.有以下程序:voidmain(){inti,n=0;for(i=2;i5;i++){do{if(i%3)continue;n++;}while(!i);n++;}printf(n=%d\n,n);}程序执行后的输出结果是。A.n=5B.n=2C.n=3D.n=4−4−4.下列循环结构中,不是无限循环的是:A.for(i=1,s=0;;i++)B.i=10;s=s+i;while(1){i=i%10+1;if(i10)break;}C.inti=0;D.i=100;do{++i;}while(i=0);while(++i%2)i;5.在while(!x)中,!x与等价。A.x==0B.x!=0C.x==1D.x!=1−5−6.以下程序的输出结果是voidmain(){intn=4;while(n--)printf(%d,--n);}A.20B.31C.321D.2107.以下While循环中,循环体执行的次数是。k=1;while(--k)k=10;A.一次也不执行B.无限次C.10次D.1次−6−8.voidmain(){inti,j;for(i=0,j=1;i=j+1;i+=2,j--)printf(%d\n,i);}以上循环体的执行次数是A.3B.2C.1D.09.以下程序的输出结果是voidmain(){inti;for(i=1;i6;i++){if(i%2){printf(#);continue;}printf(*);}printf(\n);}A.#*#*#B.#####C.*****D.*#*#*−7−二、填空题1.下面的程序要求用户按照特定格式输入3个数,并求和,请填空。voidmain(){floata;intb,c;printf(inputthreenumberslikethis:2.555,66\n);scanf(【1】,&a,&b,&c);printf(thesumis:%f\n,a+b+c);}2.C语言中的标识符可以由三种字符组成,它们是【2】、【3】和【4】。−8−3.关键字case和default只能在【5】语句中出现。4.若有以下类型说明语句:inta=2,b=3;floatx=1.5,y=3.0;则表达式(int)y%a+1/2*(x+b)的值是【6】5.若有以下类型说明语句:inta=1,b=2,c=5;则表达式a+bc&&bc/2的值是【7】。−9−6.求一个正整数的位数voidmain(){intx,k=0,d;scanf(%d,【8】);do{d=x%10;k++;【9】;}while(x0);printf(k=%d\n,k);}7.若有以下类型说明语句:charw;intx;floaty;则表达式w*x+y的结果是【10】类型?−10−8.已知:intx=3;则printf(x%2?**%d:##%d\n,x);printf(00000\n);输出结果为:【11】9.求两数中的较大voidmain(){floata,b,max;scanf(“%f%f”,&a,&b);【12】printf(“themaxis%f\n”,max);}10.下列程序用于将从键盘输入的整数逆序输出voidmain(){intn1,n2;scanf(%d,&n2);while(【13】){n1=n2%10;n2=【14】;printf(%d,n1);}}−11−三、读程序写结果1.设输入为:33↙(其中”↙”表示回车),则下面程序的输出是:voidmain(){intk,t,a,n;longs;scanf(“%d%d”,&a,&n);for(s=t=k=0;kn;k++){t=t*10+a;s+=t;}printf(“s=%ld”,s);}−12−2.设输入为:C++ProGramingLangUage↙(其中”↙”表示回车),下面C程序的输出是:#includestdio.hvoidmain(){intn1,n2,n3;charch;n1=n2=n3=0;while((c=getchar())!=’\n’)if(c=’A’&&c=’Z’)n1++;elseif(c=’a’&&c=’z’)n2++;elsen3++;printf(“n1=%d,n2=%d,n3=%d\n”,n1,n2,n3);}3.voidmain(){inti,j,k;for(i=1;i=4;i++){for(j=1;j=4-i;j++)printf();for(k=0;k4;k++)printf(*);printf(\n);}}−13−四、改错题程序1#include″stdio.h″voidmain(){inta,b;scanf(″%d%d″,&a,b);f=float(a/b);printf(″a/b=%d″,f);}−14−程序2#include″stdio.h″#include″conio.h″intCompareInt(inta,intb){if(ab)return1;elseif(a=b)return0;elseif(!a=b)return-1;}voidmain(){inta,b;unsignedintk;printf(inputtwonumber,likethis12,13\:);scanf(%d,%d,&a,&b);k=CompareInt(a,b);switch(k){case1:printf(%d%d,a,b);case0:printf(%d=%d,a,b);break;case-1:printf(%d%d,a,b);break;}getch();}−15−五、编程题1、求1~99之间的所有同构数。同构数是其值等于其右边数字平方数的整数。如25,36都是同构数(25=52,36=62)。要求程序中判断1个整数是否是同构数的功能用函数实现。2.编程实现下面函数,输入x的值,求出y的值。15210121xxxxxy