C语言程序设计期末考试试卷 .doc
一、选择题(每题1.5分,共计45分) 1、以下选项中合法的标识符是【 】A1_1B1-1C_11D1_ _ 2、若函数中有定义语句: int k; ,则【 】A系统将自动给k赋初值0B这时k中的值无定义C系统将自动给k赋初值-1D这时k中无任何值 3、一下选项中,能用作数据常量的是【 】Ao115B0118C1.5e1.5D115L 4、设有定义: int x=2; ,一下表达式中,值不为6的是【 】Ax*=x+1BX+,2*xCx*=(1+x)D2*x,x+=2 5、程序段: int x=12; double y=3.141593; printf("%d%8.6f",x,y); 的输出结果是【 】A123.141593B12 3.141593C12,3.141593D123. 6、若有定义语句: double x,y,*px,*py; 执行了px=&x; py=&y; 之后,正确的输入语句是【 】Ascanf("%f%f",x,y);Bscanf("%f%f" &x,&y);Cscanf("%lf%le",px,py);Dscanf("%lf%lf",x,y); 7、一下是if语句的基本形式: if(表达式) 语句,其中"表达式"【 】A必须是逻辑表达式B必须是关系表达式C必须是逻辑表达式或关系表达式D可以是任意合法的表达式 8、有以下程序#include <stdio.h>main() int x; scanf("%d",&x); if(x<=3) ; else if(x!=10) printf("%dn",x);程序运行时,输入的值在哪个范围才会有输出结果【 】A不等于10的整数B大于3且不等于10的整数C大于3或等于10的整数D小于3的整数 9、有以下程序#include <stdio.h>main( ) int a=1,b=2,c=3,d=0; if (a=1 && b+=2) if (b!=2|c-!=3) printf("%d,%d,%dn",a,b,c); else printf("%d,%d,%dn",a,b,c); else printf("%d,%d,%dn",a,b,c);程序运行后输出结果是【 】A1,2,3B1,3,2C1,3,3D3,2,1 10、假设以下程序段中的变量已正确定义for(i=0;i<4;i+,j+) for(k=1;k<3;k+); printf("*");程序段的输出结果是【 】A*B*C*D* 11、有以下程序#include <stdio.h>main() char *s="ABC" do printf("%d",*s%10); s+; while (*s);注意:字母A的ASCII码值为65。程序运行后的输出结果是【 】A5670B656667C567DABC 12、设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段【 】An=0; while(ch=getchar()!=n) n+;Bn=0; while(getchar()!=n) n+;Cfor(n=0;getchar()!=n;n+);Dn=0; for(ch=getchar();ch!=n;n+); 13、有以下程序#include <stdio.h>main() int a1,a2; char c1,c2; scanf("%d%c%d%c",&a1,&c1,&a2,&c2); printf("%d,%c,%d,%c",a1,c1,a2,c2);若通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b 则正确的输入格式是(以下_代表空格,<CR>代表回车) 【 】A12a34b<CR>B12_a_34_b<CR>C12,a,34,b<CR>D12_a34_b<CR> 14、有以下程序#include <stdio.h>int f(int x,int y) return (y-x)*x);main() int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c); printf("%dn",d);程序运行后的输出结果是A10B9C8D7 15、有以下程序#include <stdio.h>void fun(char *s) while(*s) if (*s%2= =0) printf("%c",*s); s+; main() char a ="good" fun(a); printf("n");注意:字母a的ASCII码值为97,程序运行后的输出结果是【 】AdBgoCgodDgood 16、有以下程序#include <stdio.h>void fun(int *a,int *b) int *c; c=a;a=b;b=c;main( ) int x=3,y=5,*p=&x,*q=&y; fun(p,q); printf("%d,%d,",*p,*q); fun(&x,&y);printf("%d,%dn",*p,*q);程序运行后输出的结果是【 】A3,5,5,3B3,5,3,5C5,3,3,5D5,3,5,3 17、有以下程序#include <stdio.h>void f(int *p,int *q);main( ) int m=1,n=2,*r=&m; f(r,&n); printf("%d,%d",m,n);void f(int *p,int *q)p=p+1;*q=*q+1;程序运行后的输出结果是【 】A1,3B2,3C1,4D1,2 18、以下函数按每行8个输出数组中的数据#include <stdio.h>void fun(int *w,int n) int i; for(i=0;i<n;i+) _ printf("%d ",wi); printf("n");下划线出应填入的语句是【 】Aif(i/8= =0) printf("n");Bif(i/8= =0) continue;Cif(i%8= =0) printf("n");Dif(i%8= =0) continue; 19、若有以下定义int x10,*pt=x;则对数组元素的正确引用是【 】A*&x10B*(x+3)C*(pt+10)Dpt+320、设有定义:char s81;int i=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是【 】Agets(s);Bwhile(si+=getchar()!=n); si=0;Cscanf("%s",s);Ddoscanf("%c",&si);while(si+!=n); si=0; 21、有以下程序#include <stdio.h>main() char *a ="abcd","ef","gh","ijk" int i; for(i=0;i<4;i+) printf("%c",*ai);程序运行后的输出结果是【 】AaegiBdfhkCdfhkDabcdefghijk22、以下选项中正确的语句组是【 】Achar s; s="BOOK!"Bchar *s; s="BOOK!"Cchar s10; s="BOOK!"Dchar *s; s="BOOK!" 23、有以下程序#include <stdio.h>int fun(int x,int y) if(x= =y) return (x); else return(x+y)/2);main() int a=4,b=5,c=6; printf("%dn",fun(2*a,fun(b,c);程序运行后的输出结果是【 】A3B6C8D12 24、设函数中有整型变量n,为保证其在未赋初值的情况下初值为0,应该选择的存储类别是【 】AautoBregisterCstaticDauto 或register 25、有以下程序#include <stdio.h>int b=2;int fun(int *k) b=*k+b; return (b); main() int a10=1,2,3,4,5,6,7,8,i;for(i=2;i<4;i+) b=fun(&ai)+b; printf("%d ",b);printf("n");程序运行后的输出结果是【 】A10 12B 8 10C10 28D10 16 26、有以下程序#include <stdio.h>#define PT 3.5 ;#define S(x) PT*x*x ;main( ) int a=1,b=2 ; printf("%4.1fn",S(a+b); 程序运行后的输出结果是【 】A14.0B31.5C7.5D程序有错无输出结果 27、有以下程序#include <stdio.h>struct ord int x,y; dt2=1,2,3,4;main() struct ord *p=dt; printf("%d,",+p->x); printf("%dn",+p->y);程序的运行结果是【 】A1,2B2,3C3,4D4,1 28、设有宏定义: #define IsDIV(k,n) (k%n=1)?1:0)且变量m已正确定义并赋值, 则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是【 】A判断m是否能被5或者7整除B判断m是否能被5和7整除C判断m被5或者7整除是否余1D判断m被5和7整除是否都余1 29、有以下程序#include <stdio.h>main() int a=5,b=1,t; t=(a<<2)|b; printf("%dn",t);程序运行后的输出结果是【 】A21B11C6D1 30、有以下程序#include <stdio.h>main() FILE *f; f=fopen("","w"); fprintf(f,"abc"); fclose(f);若文本文件中原有内容为:hello,则运行以上程序后,文件的内容为【 】AhelloabcBabcloCabcDabchello 二、填空题(每空2分,共30分)1、表达式(int)(double)(5/2)+2.5)的值是_。2、若变量x、y已定义为int类型且x的值为99,y的值为9,请将输出语句printf(_,x/y);补充完整,使其输出的计算结果形式为:x/y=11。3、有以下程序#include <stdio.h>main( ) char c1,c2; scanf(“&c”,&c1); while(c1<65|c1>90) scanf(“&c”,&c1); c2=c1+32; printf(“&c, &cn”,c1,c2);程序运行输入65回车后,能否输出结果、结束运行(请回答能或不能)_ 。 4、以下程序运行后的输出结果是_。#include <stdio.h>main( )int k=1,s=0;doif(k&2)!=0)continue;s+=k;k+;while(k)10);printf(“s=&d/n”,s); 5、下列程序运行时,若输入labced12df<回车> 输出结果为_。 #include <stdio.h>main( )char a =0,ch;while(ch=getchar()!=n)if(a&2!=0&&(ch>a&&ch<=z) ch=ch-a+A;a+;putchar(ch);printf(“n”);6、有以下程序,程序执行后,输出结果是_。#include <stdio.h>void fun (int *a)a0=a1;main()int a10=10,9,8,7,6,5,4,3,2,1,i;for(i=2;i>=0;i-) fun&a;for(i=0;i<10;i+) printf(“&d”,a);printf(“n”);7、请将以下程序中的函数声明语句补充完整#include <stdio.h>int_ ;main( )int x,y,(*p)( );p=max;printf(“&dn”,&x,&y);Int max(int a,int b)return (a>b/a:b);8、以下程序用来判断指定文件是否能正常打开,请填空#include <stdio.h>main( ) FILE *fp;if (fp=fopen(“”,”r”)=_)printf(“未能打开文件!n”);elseprintf(“文件打开成功!n”);9、下列程序的运行结果为_。#include <stdio.h>#include <string.h>struct Aint a; char b10; double c;void f (struct A *t);main()struct A a=(1001,”ZhangDa”,1098,0);f(&a);printf(“&d,&s,&6,ifn”,a.a,a.b,a.c);void f(struct A *t)strcpy(t->b,”ChangRong”); 10、以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据,请填空#include <stdio.h>struct nodeint data; struct node *next;typedef struct node NODETYPE;main()NODETYPE a,b,c,*h,*p;a. data=10;b.data=20;c.data=30;h=&a;b. next=&b;b.next=&c;c.next=0;p=h;while(p)printf(“&d”,p->data);_; 三、程序改错题(10分)下列给定程序功能是:读入一行英文文本,将每一个英文单词的第一个字母改写成大写字母然后输出此文本。例如:若输入“good luck!”则输出”Good Luck”。 请修函数top中的错误使其能得出正确的结果。注意不要修改主函数,不要增删程序行或更改程序的结构。#include<ctype.h>#include<stdio.h>#include<string.h>/*错误区*/ void top(char s)int i=0;for(;*s;*s+)if(i)if(*s=' ')i=0;elseif(*s!=' ')i=1;*s=toupper(*s);main()char str81;printf("nPlease enter an English text line:");gets(str);printf("nnBefore changing:n%s",str);top(str);printf("nAfter changing:n%sn",str);四、程序编写(15分)该函数实现的功能是:求能整除k且是偶数的数,把这些数保存在数组a中,并按大到小输出。例如:当k=40时,依次输出40、20、10、4、2。注意:部分源程序给出如下。请补充fun函数。#include<conio.h>#include<stdio.h>void fun(int k,int a)/*请开始编写*/main()int k=1;int a100;printf("nPlease input kn");scanf("%d",&k);fun(k,a);C语言程序设计(B卷)答案一、选择题 1-10:CBDDA CDBCB11-20:CDABA BACBC21-30:ADBCC CBDAC二、填空题(1)4(2)"x/y=%d"(3)能(4)s=0(5)1AbCeDf2dF(6)(7)max(int a,int b)(8)NULL(9)1001,ChangRong,1098.0(10)p=p>next 三、程序改错题void top(char s) 改为void top(char *s)for(;*s;*s+) 改为for(;*s;s+)四、程序编写#include<conio.h>#include<stdio.h>void fun(int k,int a)int i;int j=0;for(j=1;i<=k;i+)if(k%i=0&&i%2=0)aj+=i;printf("nn");for(i=-j;i>=0;i-)printf("%d",ai);main()int k=1;int a100;printf("nPlease input kn");scanf("%d",&k);fun(k,a);