作者:深圳教育在线 来源:www.szedu.net 更新日期:2009-6-15
一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。 1.C语言程序编译时,程序中的注释部分( ) A.参加编译,并会出现在目标程序中 B.参加编译,但不会出现在目标程序中 C.不参加编译,但会出现在目标程序中 D.不参加编译,也不会出现在目标程序中 2.下列表达式的值为0的是( ) A.3﹪5 B.3/5.0 C.3/5 D.3<5 3.正确的C语言用户自定义标识符是( ) A.print B.float C.when? D.random﹪2 4.设inta=3;则表达式a<1&&--a>1的运算结果和a的值分别是( ) A.0和2 B.0和3 C.1和2 D.1和3 5.设inti;floatf;doubled;longinte;,则表达式10+′a′+i*f-d/e结果的类型是() A.doubleB.long C.intD.float 6.下列保留字中用于构成循环结构的是( ) A.if B.while C.switch D.default 7.与语句if(a>b)if(c>d)x=1;elsex=2;等价的是( ) A.if(a>b){if(c>d)x=1;elsex=2;} B.if(a>b){if(c>d)x=1;}elsex=2; C.if((a>b)&&(c>d))x=1;elsex=2; D.if(a<=b)x=2;elseif(c>d)x=1; 8.设charx=′a′;则printf(″x=﹪c,y=﹪c\n″,x,97);的输出是( ) A.x=a,y=97 B.x=97,y=a C.x=97,y=97 D.x=a,y=a 9.设inta,b;为使变量a和b分别获得数据10和20,则下列正确的是() A.scanf(″%d,%d″,&a,&b);输入数据:10,20<回车> B.scanf(″%d,%d″,&a,&b);输入数据:1020<回车> C.scanf(″%d,%d″,&a,&b);输入数据:a=10,b=20<回车> D.scanf(″%d,%d″,a,b);输入数据:10,20<回车> 10.执行下列程序 inta[3][3]={{1},{2},{3}}; intb[3][3]={1,2,3}; main() {printf(″﹪d\n″,a[1][0]+b[0][0]);} 后输出的结果是( ) A.0 B.1 C.2 D.3 11.设charstr[100];inti=5;则引用数组元素的错误形式是( ) A.str[i+10] B.(str+i) C.(str+i-1) D.((str++)+i) 12.设intx[]={1,2,3,4,5,6},*p=x;则值为3的表达式是( ) A.p+=2,*++p B.p+=2,*p++ C.p+=3,*p D.p+=2,++*p 13.在函数内,定义变量时存储类型符可省略的是( ) A.auto B.static C.extern D.register 14.执行下列程序 inta=3,b=4; voidfun(intx1,intx2) {printf(″﹪d,﹪d\n″,x1+x2,b);} main() {inta=5,b=6;fun(a,b);} 后输出的结果是( ) A.3,4 B.11,1 C.11,4 D.11,6 15.设有定义语句 struct {inta;floatb;}d[3]={{1,4},{2,5},{6,7}}; 则printf(″﹪3.1f\n″,d[2].a*d[2].b/d[1].b);的输出是( ) A.2.5 B.2.0 C.8.0 D.8.4 16.设有定义语句:enumt1{a1,a2=7,a3,a4=15}time; 则枚举常量a2和a3的值分别为( ) A.1和2 B.2和3 C.7和2 D.7和8 17.将一个整数10002存到磁盘上,以ASCII码形式存储和以二进制形式存储,占用的字节数分别是( ) A.2和2 B.2和5 C.5和2 D.5和5 18.在文件使用方式中,字符串″rb″表示( ) A.打开一个已存在的二进制文件,只能读取数据 B.打开一个文本文件,只能写入数据 C.打开一个已存在的文本文件,只能读取数据 D.打开一个二进制文件,只能写入数据 19.执行下列程序 #defineF(y)15>>y #definePRINT(a)printf(″﹪d″,a) main() { PRINT(F(2)); } 后输出的结果是( ) A.3 B.3.5 C.14 D.7.5 20.main()函数可以带两个形参,一般分为argc和argv,其中argv可以定义为( ) A.intargv; B.char*argv[]; C.charargv[]; D.char**argv[]; 第二部分非选择题(80分) 二、填空题(本大题共10小题,每小题2分,共20分) 21.初始化值是0.618的双精度变量a的定义形式为_____________________. 22.表达式!10!=1的值是____________________. 23.“20 24.表达式a=1,a+1,a++的值是___________________. 25.设inti=5;则循环语句while(i>=1)i--;执行后,i的值为_______________. 26.被调函数在执行结束时,这个函数中定义的_______________类型的变量不被释放。 27.设 structstudent { intno; charname[12]; floatscore[3]; }sl,*p=&sl; 用指针法给sl的成员no赋值1234的语句是___________________. 28.C语言程序中对文本文件的存取是以________________为单位进行的。 29.设charstring[]=″This_is_a_book!″;则数组的长度应是________________. 30.设inta[2][3]={{2},{3}};则数组元素_____________________的值为3.
三、程序分析题(本大题共5小题,每小题5分,共25分) 阅读下列程序,将输出结果写到各题右侧的空白处 31.inta=200; Voids(); main() {inti; for(i=1;i<=5;i++) {a++; printf(″﹪d,″,a); s(); } { s(); {staticinta=20; a++; printf(″﹪d\n″,a); } 32.#include″stdio.h″ main() {charc; c=getchar(); if((c>=′a′&&c<=′z′)‖c>=′X′&&c<=′Z′)c=c-23; printf(″﹪c\n″,c); } 设从键盘上输入Next↙ 33.#defineN7 main() {inti,j,temp,a[N]={1,2,3,4,5,6,7}; for(i=0;i {j=N-1-i; temp=a[i];a[i]=a[j];a[j]=temp; } for(i=0;i } 34.structporb {char*name; intcount; }x[]={″Lining″,19,″Langping″,21,″Zhujianhua″,20}; main() {inti; for(i=0;i<3;i++) printf(″﹪s:﹪d\n″,x[i].name,x[i].count); } 35.main() {union {shorta;charch; }M; M.a=100;M.ch=′A′; printf(″﹪d,﹪d,﹪c\n″,sizeof(M),M.a,M.ch); }
四、程序填充题(本大题共3小题,每小题6分,共18分) 给出下列程序,将横线处缺少的部分补上,使其能正确运行。 36.以下程序的功能是用选择法对数组a中的整数由小到大进行排序。 voidsort(intb[],intn) {inti,j,t; for(i=0;i for(______;j if(b[i]_____b[j]) {t=b[i];_____________;b[j]=t;} } main() {inta[]={5,8,6,2,7,4,1,3}; inti; sort(a,8); for(i=0;i<8;i++) printf(″﹪5d″,a[i]); printf(″\n″); } 37.输入一字符串(换行为结束标志)统计其中数字(0,1,2,…,9不单独统计)、空白和其它字符出现的次数。 #include″stdio.h″ main() {charc; int___________________________; while((c=getchar())!=′\n′) { if(__________________________)digit++; elseif(c==′′‖c==′\t′)++blank; else__________________________; } printf(″digit=﹪d,blank=﹪d,other=﹪d\n″,digit,blank,other); } 38.先为数组a输满数据,再为x输入一个数据,在数组a中找出第一个与x相等的元素并将其下标输出,若不存在这样的元素,则输出“Notfound!”标志。 main() {inti,x,a[10]; for(i=0;i<10;i++)scanf(″﹪d″,___________); scanf(″﹪d″,&x);printf(″﹪d″,x); for(i=0;i<10;i++)if(_________________)break; if(i_________10)printf(″position:﹪d\n″,i); elseprintf(″Notfound!\n″,x); }
五、程序设计题(第39小题5分,第40、41小题各6分,共17分) 39.求出10至1000之内能同时被2、3、7整除的数,并输出。 40.求1到100之间的奇数之和及偶数之和,并将二者输出。 41.输入一字符串,检查是否回文(回文是指正反序相同,如,LeveL),若是则输出“Yes”,否则输出“No”。
|