C语言02 - 08年春夏学期考试试卷及答案汇总
更新时间:2024-04-22 00:42:01 阅读量: 综合文库 文档下载
- c语言029是几进制数推荐度:
- 相关推荐
2007~2008学年“C程序设计基础”试卷
考试时间: 2008年6月26日上午10:30-12:30
姓名___________________ 学号___________________ 成绩____________________
一.单项选择题(每题1分,共10分)
1. 假定以下表达式中所有变量均已定义为int类型并已赋值,请问其中哪个表达式没有语
法错误______。 A. x=3.14%2;
B. y=2a+b;
C. m=a
D. n=(-x)++; D.void
2. 表达式'A'+'B'的类型为______。
A.char B. int 3. 执行下程序段后
unsigned char a=0;int b=1; do{b++;a++}while(a!=0); 变量b的值是______。
A.0 B.1 C.128 D.257 4. 如果一个函数的返回类型为void,则哪个说法是正确___________ 。
A.该函数中不可以用return语句.
B.该函数中可以用return语句,但必须是最后一个语句
C.该函数中可以用return语句,但return后面不能跟任何表达式 D.该函数中可以返回一个任意类型的值,也可以没有返回值 5. 执行下程序段后,
char a[]=\int n;
n=sizeof(a);
变量n的值是_______。
A.10 IA.%f
B.14 B.%lf
C.9 C.%f或%lf
D.17 D.%ld
6. 用scanf()输入一个double类型的变量的值,则输入格式要用_______。 7. 假定有以下变量定义语句float *p,q;说法正确为_______。
A.p和q的类型均为(float *)
B.p的类型为(float *),q的类型为float C.p的类型为float,q的类型为(float *) D.此变量定义语句有语法错误
8. 执行下程序段
char a='0';
printf(\
后,输出是___________。 A.30 B.0x30
C.0X30 D. 0
9. 假定有如下定义
struct st{char name[10];int score;}a[3],*p=a; 。
A.p->name=\ C.(*p)->name[0]='C';
B.*p.name[0]='B'; D.*(*p).name='D';
10. 执行以下语句后,int n=strcmp(\值正确为______________。
A.n=0 B.n=1 C.n>1 D.n<0
二、填空题(每题2分,共20分)
1.执行以下代码后,将输出__________。 #define FOR while(x--); int x=3,y=0; FOR {y++;}
printf(\
2.执行以下代码后,将输出__________。 int a=2,b=5,c=8; c|=(~a&&b)^!(a&b);
printf(\
3.执行以下代码后,变量d的值为__________。 int a=-10,b=0,c=20,d;
d=a>b?-3.14:b>c?2.68:4.99
4.执行以下代码后,变量x的值为_________________。 int a=3,b=4,c=3,x;
x=a!=(b=c);
5.执行以下代码后,将输出__________。 char t[]=\
int a[]={5,1,2,3,4,0,2,4,5},i=0,go; do{putchar(t[go=a[i++]]); }while(go);
6. 若定义unsigned long int a;且变量a已赋值,试写出判断a的二进制最高位即最左边那位与1相等的表达式(要求不调用任何函数)_____________。 7. 执行以下代码后,将输出__________。
long int a[5]={10,20,30,40,50};; long int *p=a+1;
long *q=&a[3];
printf(\
8. 执行以下代码后,变量max的值为_________________。
int x=3,y=2,z=1,max;
if(x>y&&x>z) max=x; if(y>x&&y>z) max=y; else max=z;
9. 执行以下代码后,将输出__________。
char a[][5]={\
printf(\}
10, 若定义函数时省略该函数的返回类型,则它的实际返回值类型是__________。
三、程序阅读题(每题5分,共30分)
1. 下列程序的输出结果是_________。
# include
for(i=0;i<3;i++) p[strlen(p)]=?A? return (AP)p+1; }
void main( )
{ char a[]=”FROG\\0SEAL\\0LION\\0LAMB”; Puts(defy(a)[1]+2); }
2.下列程序的输出结果是___________________。 # include
if(i==2)continue; for(j=1;j<=6;j++) { sum+=j;
if(sum>=6) break;
}
sum+=i*10; }
printf(“sum=%d”,sum);
}
3.下列程序的输出结果是___________________。 #include \int g=96; void gf(void) {g++; }
int df(void) {int g=10; g++; return g; }
int *sf(void) {static int g=20; g++; return &g; }
void main()
{int a,b,c,*p; gf();gf();a=g; b=df();b=df();
p=sf();*p=32765;p=sf();c=*p; printf(\}
4. 假定运行以下程序时输入 3+4*5-3/2=
则程序的输出结果是_________________。 #include
scanf(\if(p=='=') return x; switch(p)
{case '+':return x+calc(); case '-':return x-calc(); case '*':return x*calc(); case '/':return x/calc(); }
}
void main()
{ printf(\
}
5.下列程序的输出结果是_________________。 #include
{ static int a[N+1][N+1]={1}; int i,j;
for(i=1;i<=N;i++) for(j=1;j<=i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i<=N;i++) {int space=N-i;
while(space--)
putchar(? ?); /*输出空格*/ for(j=1;j<=i;j++)
printf(\
printf(\}}
6. 下列程序的输出结果是_________________。
#include
#define N 5 void main() { int i,j,a[N][N];
int left=0,right=N-1,up=0,down=N-1; int x=1,row=right,col=down,d=1,done; while(x<=N*N) {a[row][col]=x; x++; do
{switch(d) {case 1:col--;
if(col if(row if(col>right){col=right;d=4;continue;} else {done=1;break;} case 4:row++; if(row==down) {down--;left++;up++;right--; row=down;d=1;continue; } else {done=1;break;} }/* end of switch */ }while(!done); }/* end of while(x<=N*N)*/ for(i=0;i 四、程序填空题(每空2分,共40分) 1. 输入n(2≤n≤s,程序不需要对此范围进行判别),再输入n个整数保存到数组a中,通过循环 查找n个数中是否有重复的数,如果有则输出Yes,否则输出No.要求在循环过程中,任何两 个数的比较不得超过1次(比如对a[0]与a[1]比较后接下去又对a[1]与a[0]比较是不合要求的),并且要求一旦找到有数重复则立即结束循环。 # include scanf(“%d”,&n); for(i=0;i #include printf(\ } 4.下列程序的输出结果是( )。 char s[20]=\ sp=sp+2; sp=\ puts(s); 5.下列程序的输出结果是( )。 #include { int s,i; for(i=1;i<=10;i++) s=sum(i); printf(\ } int sum(int k) { static int x=0; return x+=k; } 6. 执行该程序段后,i的值是( )。 int i; int f(int x) { return((x>0)?f(x-1)+f(x-2)+2:1); } i=f(3); 7. 下列程序的输出结果是( )。 void maon() { char s1[20]=\ if(strcmp(s1,s2)) printf(\else printf(\ } 8. 下列程序的输出结果是( )。 #include { static int a[]={2,4,6,8,10}; static *ptr[]={&a[0],&a[1],&a[2],&a[3],&a[4]}; int **p,j; for(i=0;i<5;i++) a[i]=a[i]/2+a[i]; p=ptr; printf(\ printf(\ 9. 若有以下的定义和语句,则表达式*++p->b的值是( )。 struct wc{ int a;int *b;}p;int x0[]={11,12},x1[]={31,32}; static struct wc x[2]={100,x0,300,x1};p=x; 10, 用typedef 定义一个字符型指针STRING。 三、程序阅读题(共30分) 2. 下列程序的输出结果。(3分) # include switch(b>0){ case 1:printf(\ case 2: printf(\} case 0: switch(c==5){ case 0:printf(\ case 1:printf(\ case 2: printf(\} default: printf(\} printf(“\\n”); } 3. 下列程序的输出结果。(4分) # include { int x=3; pintf(“1.x=%d\\n”,x); f1(); f2(); pintf(“4.x=%d\\n”,x); } void f1() { x+=1; pintf(“2.x=%d\\n”,x); } void f2() { int x=1; pintf(“3.x=%d\\n”,x); } 4. 写出当运行程序输入5时,程序输出结果。(5分) void main() {int i,j,n; scanf(\for(i=0;i<=n-1;i++){ for(j=0;j<=n-1;j++) if(i+j>=n/2&&i+j 4. 写出程序输出结果。(3分) void main() { int y; fac(2,&y); printf(\} fac(int n,int *t) {int s; if(n==1||n==0)*t=1; else { fac(n-1,&s);*t=n*s;} } 5. 阅读下列程序,写出运行结果。(5分) #include void main() { int i,j; static int a[10]={1,1,1,1,1,1,1,1,1,1}; for(i=0;i<10;i++) for(j=0;j 6.. 阅读下列程序,写出运行结果。(4分) #include {char t,*s1,*s2; s1=w; s2=w+n-1; while(s1 void main() { char a[]=\ fun(p,strlen(p)); puts(p); } 7. 写出程序运行结果,并说明该程序的功能。(3分) int fun(int x) { int countx=0; while(x){ countx++; x=x&(x-1);} return countx; } void main() { int x=0xEF; printf(\ } 8. 假设输入字符串为\,写出程序运行结果。(3分) #include #include {int i=0,k,r;char str[5][20],astr[20]; while(i<5) { gets(astr); if(!i) strcpy(str[i],astr); else { k=0; while(strcmp(astr,str[k])>0&&kk;r--) strcpy(str[r],str[r-1]); strcpy(str[k],astr); } i++; } for(i=0;i<5;i++) printf(\ } 四、程序填空题(每空2分,共40分) 2. 下列程序读入无符号十六进制数(0,1,…..,9,a,b,….,f),将其转换为十进制数输出,请将程 序空缺部分补全。 # include int f(char *s) { int n=0,i; for(i=0;s[i]!='\\0'){ if(s[i]>='0'&&s[i]<='9') s[i]=s[i]-'0'; else (1) ; n=n*16+ (2) ; } return n; } void main() { char s[10];; scanf(“%s”,s); printf(\ } 有10个大小不等的自然数,请将它们有小到大排序,注意:输入的数据为1~10的正整数,且输入的每个数个不相同。 void sort(int e[],int n) { int i,t; for(i=1;i { t= (3) ; (4) ; e[i]=t; } } # include printf(“Input the number from 1 to %d\\n\”); for(i=1;i<11;i++) scanf(\ sort(a,10); printf(“\\n====sort over=====\\n”); for(i=1;i<11;i++) printf(\printf(\} 3. 输入一个正整数n,判断它是否为一个对称数。例:12321是对称数,而1234则不是。 # include int IsSymmetry(unsigned long n) { unsigned long i=n,j=0; int flag=0; while(i){j=j*10+i; i/=10;} if( (5) ) flag=1; return flag; } void main() { unsigned long n; scanf(\ if( (6) ) printf(\ else printf(\} 4. 计算字符串str2在母串str1中子串出现的次数。 # include { char str[80],substr[80];; int n; gtes(str);gets(substr); printf(“%d\\n”,count(str,substr)); } int count(char *p1,char *p) { char *p2=p;int sum=0; while( (7) ){ if(*p1==*p2&&*p2!='\\0') { p1++;p2++;} else p1++; if( (8) ) sum++; p2=p; } return sum; } 5. 设一歌唱评奖会上有n(n>20)个评委为歌手A评分,依次输入n个评委为歌手A打的分,再去掉1个最高分和1个最低分,计算余下的分数平均值为歌手A的得分。 #include #define N 100 int findmax(int a[],int n,int *max1,int *max2)/*求最高分和次高分*/ {int i,m1,m2; m1=a[0]>a[1]?a[0]:a[1]; m2=a[0]>a[1]?a[1]:a[0]; for(i=2;i max1=m1;max2=m2; } int findmin(int a[],int n,int *min1)/*求最低分*/ {int i,m1; m1=a[0]; for(i=0;i void main() {static int a[N]; int max1,max2,min1, i,n,s=0; float avg; scanf(\ for(i=0;i {printf(\第%d个评委打分:\\n\ scanf(\} findmax(a,n,&max1,&max2); findmin(a,n,&min1); for(i=0;i 6. 下面程序的功能是:将N行N列二维数组中每一行的元素进行排序,偶数行(包括第0行)从小到大排序,奇数行从大到小排序。 #define N 15 void sort( (12) ) {int i,j,k,t; for(i=1;i for(k= (13) ;k a[i][j]=a[i][k]; a[i][k]=t } } void main() {int aa[N][N]={{2,3,4,1,5},{8,6,9,7,10},{11,12,14,13,15},{19,20,16,17,18},{21,25,22,24,23}}; sort(aa); for(i=1;i } 7. 输入当前时间,程序输出该时间的下一秒时间。其中小时是24小时制,输入时间格式为: hh:mm:ss 。输出时间格式为:hh:mm:ss(如 02:30:00)。 #include int hour,minute,second; }nowtime,nexttime; void outtime(int n) { if(n<10) printf(\ } void main() { printf(\ scanf(\ if( (15) ) { nexttime.hour=nowtime.hour; nexttime.minute=nowtime.minute; nexttime.second=nowtime.second+1; } else if( (16) ) { nexttime.hour=nowtime.hour; nexttime.minute=nowtime.minute+1; nexttime.second=nowtime.second; } else if( (17) ) { nexttime.hour=nowtime.hour+1; nexttime.minute=nowtime.minute; nexttime.second=nowtime.second; } else { nexttime.hour=0; nexttime.minute=0; nexttime.second=0; } printf(\outtime(nexttime.hour); outtime(nexttime.minute); outtime(nexttime.second); } 8. 有两个磁盘文件A.txt和B.txt,个存放一行字母,要求把两个文件中的信息合并,输出到一个新文件C.txt中。 #include { (18) ; int i,j,n;char c[160],t,ch; if((fp=fopen(\ {printf(\ printf(\for(i=0;(ch=fgetc(fp))!EOF;i++) { c[i]=ch; putchar(c[i]); } fclose(fp); if((fp=fopen(\ {printf(\ printf(\for(i=n;(ch=fgetc(fp))!EOF;i++) { c[i]=ch; putchar(c[i]); } fclose(fp); (19) ; n=i;; printf(\fp=fopen(\ for(i=0;i fclose(fp); } 2007试卷答案 一.单项选择题(每题1分,共10分) 1.C 2.B 3.A 4.B 5.C 6.C 7.C 8.B 9.D 10.A 二、填空题(每题2分,共20分) 9. (x>=0&&y<0&&z<0)||(x<0&&y<0&&z>=0)||(x<0&&y>=0&&z<0) 10. ch+i,ch+i-32或'a'+I,'A'+1 11. 11 12. goodgood 13. s=55 14. 13 15. forChina 16. 9,3 9. 12 10 typedef char *STRING; 三、程序阅读题(共9题,共30分) 1. #!* 2. 1.x=3 2.x=6 3.x=1 4.x=3 3. * *** ***** *** * 4. y=2 5. 1 2 4 8 16 32 64 128 256 512 6. 1818 7. 7 功能:计算x变量中的二进制的1的个数 8.\ \ \ 四、程序(段)填空题(每空2分,共40分) (1) s[i]=s[i]-'a'+10 (2) s[i] (3) e[e[i]] (4) e[e[i]]=e[i] (5) j==n (6) IsSymmetry(n) 或IsSymmetry(n)==1 (7) *p1!='\\0' (8) *p2=='\\0' (9) m2=m1 (10) s-max1-max2-min1 (11) s*1.0/(n-3) (12) int a[N][N]或 int a[][N] (13) j+1 (14) i%2或i%2==1 (15) nowtime.second!=59 或 nowtime.second<59 (16) nowtime.minute!=59 或 nowtime.minute<59 (17) nowtime.hour!=59 或 nowtime.hour<59 (18) FIFE *fp (19) fclose(fp) (20) fputc(c[i],fp) 2005~2006学年“C程序设计基础”试卷 考试时间: 2006年6月28日上午8:00-10:00 姓名___________________ 学号___________________ 成绩____________________ 一.单项选择题(每题1分,共10分) 3. 在C语言中,下面描述正确的是______。 A.函数的定义可以嵌套,但函数的调用不可以嵌套. B.函数的定义不可以嵌套,但函数的调用不可以嵌套. C.函数的定义可以嵌套,但函数的调用也可以嵌套. D.函数的定义不可以嵌套,但函数的调用可以嵌套. 2. C语言中,______存储类型的变量,只在使用时才分配存储空间。 A.static和auto B.register和extern C.register和static D.auto和register 3. 下列运算符中,优先级最低的是______。 A.* B.+ C.== D.= 4. 有程序段如下: int k=10;while(k=0)k=k-1; 以下选项中描述正确的是_____________. A.语句” k=k-1;”被执行10次. B.语句” k=k-1;”被执行1次 C.语句” k=k-1;”被执行无限次 D.语句” k=k-1;”被1次也不执行 6. 若以下定义:char s[20],*ps=s;则以下赋值语句正确的是_______。 A.s=ps+s; B.ps=ps+20; C.s[5]=*ps[9]; D.ps=s[0]; 9. 若有程序段如下: Int a=1,b=2,c=3; If(a>b) c=a;a=b;b=c; 执行该程序段后,变量a,b,c的值是_____。 A.a=1,b=2,c=3 B.a=2,b=3,c=3 C.a=2,b=3,c=1 A.7 B.8 C.6 D.a=3,b=2,c=1 D.2 10. 假定所有变量均为int类型,则表达式(a=2,b=5,b+1,a+b)的值为_______。 11. 以下叙述正确的是___________。 A.在C程序中,main()函数必须位于程的最前面7 B.C程序的每一行中只能写一条语句 C.在对C程序进行编译的过程中,可发现注释中的拼写错误 D.C语言本身没有输入,输出语句 9. 设有语句 struct st{int n;int *t;}*p; static struct st s[3]={5,?\\0?,7,?\\0?,9,?\\0?} p=s; 则printf(“%d\\n”,____________)A.p++->n B.p->n++ 用,其中0≤i<10。 A.a[p-a] 的 C.(*p).n++ 值 是D.++p->n 6. 10. 设有语句:int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则以下______不是对a数组元素的正确引 B.*(&a[i]) C.p[i] D.*(*(a+i)) 二、填空题(每题2分,共20分) 1.设ch为字符变量,写出判断为数字字符的C语言表达式__________。 2.int a=3,则a+=a-=a*a的值是__________。 3.表达式3<5<2的值是_______________________。 4.表达式~(4<<2)的值是______________________。 5.下列程序的输出结果是_______________________。 #define A1(a,b) a*b #define A2(a,b) (a*b) printf(\ 6. 执行该程序段后,a和b的值分别是__________________。 Int a=3,b=5,c; c=(a>--b)?a++;b--; 7. 下列程序段执行后s的值是_____________。 int i=1,s=0; while(i++) if(!(i%3)) break; else s+=i; printf(“s=%d”,s); 8. 下列程序段的输出结果是_____________。 char s[]={\,*p; p=s[1]; printf(\ 9. 下列程序的输出结果是______________。 #include {static int k=1; k=k*n; return k; } void main() {int I,sum=0; for(i=1;i<=5;i++) sum+=f(i); printf(\ } 10, 用typedef 定义一个整数数组类型PT,它由100个整型元素组成__________。 三、程序阅读题(共30分) 5. 下列程序的输出结果是_________。 # include { int x=1,y=0,a=0,b=0; switch(x){ case 1: switch(y){ case 0:a++;break; case 1:b++;break; } case 2: a++;b++;break; case 3:a++;b++; } printf(“a=%d,b=%d\\n”,a,b); } 6. 下列程序的输出结果是___________________。 # include void sort(int b[],intn,int x) { int i,j,x=0; for(i=0;i<2;i++) {x++; for(j=0;j<3;j++){ if(j%2)continue; x++; } x++; } pintf(“x=%d\\n”,x); } 7. 下列程序的输出结果是___________________。 #include “stdio.h” int i=3; void main() {int i=1; void fun1(int n); int fun2(int n); printf(\fun1(i); i=fun2(i); fun1(i=fun2(i)); } 4. 下列程序的输出结果是_________________。 # include printf(\ if(i>1) f(st,i-1); } void main() { char st[]=\f(st,5); } 5. 下列程序的输出结果是_________________。 #include strcpy(arr[0],\strcpy(arr[1],\arr[0][3]='&'; printf(\ printf(\ } 6. 下列程序的输出结果是_________________。 #include void main() { char *s=\int i,j,a[]={0,0,0,0,0}; for(p=s;*p!='\\0';p++) {j=*p-'a'; if(j>=0;&&j<=5) a[j]++; } for(i=0;i<5;i++) printf(\ } 7. 下列程序的输出结果是_________________。 #include void main() { char a[]=\ char b[]=\int i=0,j,k,n=0,m; k=strlen(b); while(a[i]!='\\0') {j=0; if(a[i]!=b[j]) c[n++]=a[i++]; else {m=i; while(b[j]==a[i]&&a[i]!='\\0'&&b[j]!='\\0') {i++;j++;} if(j!=k) while(m printf(\} } c[n]='\\0';puts(c); } 8. 下列程序的输出结果是_________________。 file.txt文件存放数据为A1B2C3 #include {FILE *fp;int n,s=0;char ch; if((fp=fopen(\ {printf(\不能打开!\\n\fscanf(fp,\while(ch!=EOF) {s+=ch+n; fscanf(fp,\} fclose(fp); printf(\} 四、程序填空题(每空2分,共40分) 3. 以下程序不用第三个变量,也不用位运算符,实现将两个数进行对调的操作。 # include scanf(“%d%d”,&a,&b); printf(\ a= (1) ; b= (2) ; a= (3) ; printf(\ } 4. 输入一个十进制整数,将它对应的二进数的各位反序,形成新的十进制数输出。 如: 13?1101?1011?11 如: 10?1010?0101?5 # include printf(“输入一个十进制数:”); scanf(“%d”,&x); y=0; while( (4) ){ t=x%2; (5) ; x=x/2; } printf(“新的十进制整数为%d\\n”,y); } 3. a是一个6×6的矩阵,本程序输出以下结果: 1 2 3 4 5 6 1 1 2 3 4 5 1 2 1 2 3 4 1 3 3 1 2 3 1 4 6 4 1 2 1 5 10 10 5 1 # include {for(j=0;j<6;j++) {if( (6) ) a[i][j]=1; else if(i printf(“\\n”); } } 4. 以下程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个数组中的数按由小到大的顺序归并在c数组中 # include {int a[10]={1,2,5,8,9,10},an=5; Int b[10]={0,3,4,6,7,12},bn=5; int i,j,k,c[20],max=9999; i=j=k=0; while((a[i]!=max)||(b[j]!=max)) if(a[i] 5. 完成以下程序:截取字符s中从第m个位置开始的n个字符,返回所截字符串的首地址。 static char sub[20]; void main() { static char s[]=\ char *cut(char *ss,int m,int n),*p; p=cut(s,3,4); printf(“%s\\n”,p); } char *cut(char *ss,int m,int n) {int i; for(i=0;i sub[i]= (13) ; sub[i]='\\0'; return (14) ; } 6. 下面程序是用来从键盘输入十个整数,然后求出其中的最小值。 void lookup(int *t,int *a,int n) {int k; *a=t[0]; for(k=1;k if (15) ) *a=t[k]; } void main() {int table[10]; int k,min,*p=&table[k]); for(k=0;i<10;k++) scanf(“%d”,&table[k]); lookup( (16) , (17) ,10); printf(“min=%d\\n”,min); 7. 下面程序的功能是统计文件”file.txt”中的字符。 #include {FILE *fp;int count=0; if((fp=fopen(\ {printf(\不能打开!\\n\while( (18) ) {fgetc(fp); (19) ; }; printf(\ (20) ; } 2006试卷答案 一.单项选择题(每题1分,共10分) 1.D 2.D 3.D 4.D 5.B 6.B 7.A 8.D 9.D 10.D 二、填空题(每题2分,共20分) 17. ch>=?0?&&ch<=?9? 18. -12 19. 1 20. -17 21. 8 22. 3 3 23. 2 24. w,one 9. 153 10 typedef int pt[100]; 三、程序阅读题(1-6题4分,7-8题3分,共30分) 4. a=2,b=1 5. 8 6. 1 4 3 4 5 4. abcde abcd abc ab a 5. you&me 6. 2 1 2 1 1 7. 0 6 11 12345678 8. 204 四、程序(段)填空题(每空2分,共40分) (1) ?a+b 或 ?a-b (2) ?a-b 或 ?a+b (3) a-b; (5) y=y*2+t (6) i==j||j==0 (7) a[i][j-1]+1 (8) a[i-1][j-1]+a[i-1][j] (9) a[i] (10) i++ (11) b[j] (12) j++ (13) *(ss+m+i-1) (14) sub (15) *a>t[k] (16) table (17) p或&min (18) !feof(fp) (19) count++ (20) fclose(fp) (4) x!=0 2004~2005学年“C程序设计基础”试卷 考试时间: 2005年7月5日上午10:30-12:30 姓名___________________ 学号___________________ 成绩____________________ 一.单项选择题(每题2分,共20分) 4. 下面C语言的标识符中,哪个不合法______。 A._total B.Large#tall C.int_ D._while 2. C语言源程序经过编译连接最后生成的文件,其后缀名是______。 A.”.c” B.”.obj” C.”.exe” D.”.bas” 3. 表达式x&&1等价于______。 A.x!=0 B.x==0 C.x!=-1 D.x==-1 4. 若变量k已正确定义且k的值是4,计算表达式(j=k++)后,______。 A.k=4,j=4? B.j=4,k=5 C.j=5,k=4? D.j=5,k=5 5. C语言中,函数若没有声明返回值的类型,默认的类型是_______。 A.int B.long C. float D.double 12. 若p1和p2都是指向int类型变量的指针,p1已经指向变量x,要使p2也指向x,则_____是正确的。 A.p2=&*p1; int a[]={1,3,5,7,9}; int *b=a+2; printf(“%d”,*b++); A.3 B.5 C.7 D.9 B.p2=&&p1; C.p2=&p1; D.p2=*p1; 13. 下列程序段输出是_____________。 14. 执行下列程序: #define FB(a,b) (a*b+1) int k=3; k=FB(FB(k,k+1),k)-7; 后变量k的值是_____________。 A.7 B.24 C.27 D.33 9. 在某C程序中调用了puts函数。在程序的编译预处理部分应用#include 包含__________。 A.”math.h” B.”string.h” C.”stdio.h” D.”ctype.h” 10. 设有结构定义如下: struct student{ int num; char name[30]; float score; }stud1; 则标准的ANSI C(如TC)下,计算sizeof(stud1)的值为____________。 A.9 B.16 C.25 D.36 二、填空题(每题3分,共24分) 1.写出语句printf(“%d,%o,%x”,?a?/4,0x14,014);的输出结果__________。 2.写出计算s(s?a)(s?b)(s?c)的C语言表达式__________。 3.写出下列程序段的输出结果是_______________________。 int m;char ss[10]=?12345?,8s=ss; for(m=10;m!=0;m--); printf(“%d”,m); while(*s++)putchar()++s); 4.下列程序段的输出结果是______________________。 #include “stdio.h\ int x; void f(int x) {static int a=1; printf(“%d,”,a); a+=x+2; } void main() {int k; for(k=1;k<=3;k++) f(k); } 5.对于以下递归函数f,调用f(4)的返回值是_______________________。 f(int n) {return((n>0)?2*f(n-1)+f(n-2):1);} 6. 下列程序的输出结果是__________________。 #include “stdio.h\ void main() {int x=3,y=6,z=0; while(x++)!=(y-=1)) {z++; if(x printf(“x=%d,y=%d,z=%d”.x.y.z); } 7. 下列程序的输出结果是_____________。 int p,q,k=3,j=4; q=&k;p=q;q=&j; printf(“%d”,*p); 8. 下面函数定义中的错误是_____________。 double sum(double x,y) {return(x*x+y*y); } 三、程序阅读题(每题5分,共20分) 8. 下列程序的输出结果是_________。 # include printf(“%d#”,res); operator=getchar(); } } 3. 调用函数f(2004,4,10)的返回值是___________________。 int f(int x,int y,int z) {int k,flag; int tab[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31}}; flag=x%4==0&&x0!=0||x@0==0; for(k=1;k 4. 调用函数f(15)的输出结果是_________________。 void f(int n) { if(n<3) printf(\ else { f(n/3); printf(“%d”,n%3); } return; } 5. 输入how are you?<回车>后,下列程序的输出结果是_________________。 # include char s[60],ss[80]; scanf(“%s”,s); strcpy(ss,s); for(i=1;i<3;i++){ scanf(“%s”,s); if(strcmp(s,ss)>0) strcpy(ss,s); } printf(“%s\\n”,ss); } 6. 下列程序的功能是_________________。 # include {FILE *fpa,*fpb; If((fpa=fopen(“t.c”,”r”))==NULL){ printf(“Can?t open file a.txt !\\n”); exit(0); } If((fpb=fopen(“b.txt”,”w”))==NULL){ printf(“Can?t open file b.txt!\\n”); exit(0); } while(!feof(fpa)) fputc(fgetc(fpa),fpb); fclose(fpa);fclose(fpb); } 四、程序填空题(每空2分,共40分) 6. 读入1个正实数eps,计算并输出1-1/3+1/5-1/7+??,直到最后一项的绝对值小于eps。 # include # include scanf(“%le”,&eps); sum=0;item=flag=temp=1; while(fabs(item)>eps){ sum=sum+item; temp= (1) ; (2) ; item= (3) *flag/temp; } printf(\ } 2.输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。 #include void main() {int blan=0,digit=0,latter=0,other=0; char c; c=getchar(); while( (4) ){ if( (5) )/* 判断英文字母 */ leter++; else if( (6) )/* 判断数字字符 */ digit++; else if( (7) )/* 判断空格 */ blank++; else other++; (8) ; } printf(“letter=%d,blank+%d,digit=%d.other=%d\\n”,letter,blank,digit,other); } 3.a是一个3X3的矩阵,输入a的元素,如果a是下三角矩阵,输出\否则,输出\下 三角矩阵即主对角线以上的元素都为0,主对角线为从矩阵的左上角至右下角的连线)。 #include for( (10) ;k<3;k++) if( (11) ){ (12) ; break; } if(flag)printf(“YES\\n”); else printf(“NO\\n”); } 4. 定义函数f(numbe),它的功能是返回number的逆序数.’例如f(-123)的返回值是-321。 long f(long number) {int flag,digit; long res=0; flag=number<0?-1:1; if(number<0)number=-number; while(number!=0){ (13) ; number/=10; } (14) ; } 5. 编写一个函数delchar(s,c),该函数将字符串s中出现的所有c字符删除。 void delchar(char s[],char c) { int j=0,k=0; while(s[j]!=?\\0?){ if(s[j]!=c){ s[k]=s[j]; (15) ; } (16) ; } (17) ; } 6. 请仔细阅读函数f1,然后在函数f2中填入正确的内容,使函数f1和函数f2有相同的功能。 void f1(char s[],char t[]) {int j=0,k=0; while(s[j]!=?\\0?)j++; while((s[j++]=t[k++])!=?\\0?) ; } void f2(char *s,char *t) {while( (18) ) (19) ++; while( (20) ) ; } 2004试卷答案 一.单项选择题(每题1分,共10分) 1.C 2.B 3.A 4.C 5.C 6.A 7.C 8.D 9.D 10.B 二、填空题(每题2分,共20分) 33. s*(s-a)*(s-b)*(s-c) 34. 0 35. 1 36. 3 37. 36 38. 6 39. 3,2 40. WO,T 41. 0 3 42. typedef int *PA; 三、程序阅读题(每题5分,共30分) 10. Pass 2. 7#-21#10#0# 3. 101 4. 120 5. you? 6. 把t.c文件复制成b.txt文件 四、程序(段)填空题(每空2分,共40分) (1) temp+2 (2) flag=-flag (3) 1.0 (4) c!=?\\n? (5) c>=?a?&&c<=?z?||c>=?A?&&c<=?Z? (6) c>=?0?&&c<=?9? (7) c==? ? (8) c=getchar() (9) flag=1 (10) k=i+1 (11) a[i][k]!=0 (12) flag=0 (13) res=res*10+number (14) return flag*res (15) k++ (16) j++ (17) s[k]='\\0' (18) *s!='\\0' (19) s (20) *s++=*t++ 2002~2003学年“C程序设计基础”试卷 考试时间: 2003年6月20日上午8:30-10:30 姓名___________________ 学号___________________ 成绩____________________ 一.单项选择题(每题1分,共10分) 6. 下列运算符中,优先级最低是______。 A.<< B.!= C.&& C.10 C.!x>0||!y>0 C.!EOF D.+= D.1.0 D.!(x>0)||!(y>0) D.NULL D.2 D.a,b D.a++ 2. 以下选项中不正确的整型常量是______。 A.0xa B.010L 3. 表达式!(x>0||y>0)等价于______。 A.!(x>0)&&!(y>0) B.!x>0&&!y>0 4. 表达式______的值不是0。 A.1/2 B.!?\\0? 5. 若x是浮点型变量,表达式(x=10/4)的值是______。 A.2.5 B.2.0 C. 3 6. 若变量已正确定义并赋值,表达式_____不正确。 A.a&b A.a[9] B.a^b B.p[5] C.&&x C.*p++ 7. 对于变量定义int a[10],*p=a;,表达式_______是不正确的。 8. 不正确的赋值或赋初值的方式是______。 A.char str[10];str=\; C.char *p=\; #include int z; vioid main() {int a,b; fun(a) …} A.x,y A.p=a B.x,y,z B.p[0]=a C.a,b,y,z C.*(a+1)=p D.a,b,x,y,z D.a[0]=2 B.char str[]=\; D.char *p;p=\; 9. 设程序中不再定义新的变量,写出在函数fun中可以使用的所有的变量_______ 。 10. 对于变量定义int p[5],*a[5];,表达式_______是正确的。 二、填空题(每题2分,共30分) 1.数组定义为int a[2][3][4],则数组a中有__________个数组元素。 2.计算下列分段函数的条件表达式是_________________。 1 x>0 y= 0 x=0 -1 x<0 3.表达式1<10<5 的值是_______________________。 while(*s++!= (10) ); return (11) ; } 4.输入30位学生的姓名和成绩,输出成绩最高的学生的姓名及其成绩。 #include void main() {int k; struct student s[30],*ptr; struct student *f(struct student *stud,int n); for(k=0;k<30;k++) scanf(“%s%d”,s[k].name,&s[k].score); (12) ; printf(“%s %d\\n”,ptr->name,ptr->score); } struct student *f(struct student *stud,int n) {struct student *pmax,*p; (13) ; for(p=stud;p if(p->score>pmax->score) (14) ; retrun (15) ; } 2003试卷答案 一.单项选择题(每题1分,共10分) 1.D 2.D 3.A 4.B 5.B 6.C 7.D 8.A 9.A 10.C 二、填空题(每题2分,共30分) 43. 24 44. x>0?1:(x==0)?0:1 45. 1 46. 0 47. 6 48. k=10,s=25 49. 47 50. k=1,s=30 51. 1#2#3# 52. 5 53. 2, 1 54. 10#30 55. FOUR,P 56. 0,4 57. typedef char *CP[10]; 三、程序阅读题(每题5分,共30分) 11. 33#366#3699# 2. 3#-1# 3. 1#0#2#3# 4. a[0][0]=9#a[1][2]=7#a[1][1]=4# 5. How Are You 6. 3#0#2# 四、程序(段)填空题(每空2分,共30分) (1) s=0 (2) f=1 (3) j<=k (4) f=f*j (5) prime(n) (6) m%i==0 (7) 0 (8) retrun 1 (9) ss=s (10) ?\\0? (11) s-ss-1 (12) ptr=f(s,30) (13) pmax=stud (14) pmax=p (15) pmax 2001~2002学年“程序设计基础--C”试卷 考试时间: 2002年6月30日下午2:00-4:00 姓名___________________ 学号___________________ 成绩____________________ 一.单项选择题(每题2分,共20分) 7. C语言程序三种基本结构是顺序结构、选择结构和______结构。 A.递归 B.转移 C.循环 C.&& C.!x>0&&!y>0 D.嵌套 D.= D.!(x>0)&&!(y>0) D.11 D.2.3e0 D.!NULL D.121 2. 下列运算符中,优先级最高是______。 A.-> B.++ 3. 表达式!(x>0&&y>0)等价于______。 A.!(x>0)||!(y>0) B.!x>0||!y>0 4. 表达式sizeof(“\\nsum=%d\\n”)的值是______。 A.8 B.9 C.10 5. 以下选项中不正确的实型常量是______。 A.0.23E B.2.3e-1 C. 1E3.2 C.!EOF C.100 6. 表达式_____的值不是1。 A.0?0:1 A.12 B.5%4 B.144 7. 数组定义为int a[11][11],则数组a 有_______个数组元素 。 8. 对于以下的变量定义,表达式_______是不正确的 。 struct node{int j,k;}x,*p=&x; A.p->k=2 B.(*p).k=2 9. 不正确的赋值或赋初值的方式是______。 A.char str[]=\; C.char str[10];str=\; int z; int p(int x) { static int y; return x+y;} vioid main() {int a,b;printf(“%d\\n”,p(a));} A.a,b B.a,b,z C.a,b,y,z D.a,b,x,y,z C.x.k=2 D.x->k=2 B.char str[7]={'s', 't', 'r', 'i', 'n', 'g'}; D.char str[7]={'s', 't', 'r', 'i', 'n', 'g', '\\0'}; 10. 设程序中不再定义新的变量,写出在函数main中可以使用的所有的变量_______ 。 二、填空题(每题2分,共30分) 1.设字符变量ch的值是小写英文字母,将它转换为相应大写字母的表达式是__________。 2.表达式1<0<5 的值是_________________。 3.表达式~(10>>1^~5)的值是_______________________。 4.下列程序段输出结果___________________________。 Int a=1; long b=a*0x12345678; printf(“%x\\n”,b); 5.设变量已正确定义,在程序段B中填入正确的内容,使程序段A和程序段B等价。 程序段A for(k=s=0;k<=10;s+=[k++]) if(a[k]<0)break; 程序段B for(k=0,s=0;;s+=[k++]) if(_______)break; 6. 下列程序的输出结果是_____________。 #define T 10 #define MD 3*T printf(“%d”,30/MD); 7. 下列程序的输出结果是_____________。 Int k,s; for(k=s=0;k<10&&s<10;s+=k) k++; printf(“k=%d,s=%d”,k,s); 8. 下列程序的输出结果是_____________。 # include int f(int m) { static int k=2;; k++; return k+m; } void main( ) { int s; s=f(2); printf(\ } 9.对于以下递归函数f,调用 f (3) 的返回值是_______________。 f (int n) { return ((n<=0) ? n:f(n-1)+f(n-2) ); } 10. 下列程序的输出结果是_____________。 Int c[]={10,0,-10}; Int *k=c+2; printf(“%d”,*k--); 11. 下列程序的输出结果是_____________。 Int k=1,j=2,*p=&k,*q=p; p=&j; printf(“%d,%d”,*p,*q); 12. 下列程序的输出结果是_____________。 #include {char *str=”one”; printf(“%s,%c\\n”,f(str)+1,*f(str)+1); } 13. 下列程序的输出结果是_____________。 #include {++*x;y--;} void main() {int x=0,y=3; p(&x,y); printf(“%d,%d”,x,y); } 14. 下列程序的输出结果是_____________。 #include 15. 用typedef定义一个指向函数的指针类型FP,该函数返回值为整型____________。 三、程序阅读题(每题5分,共15分) 15. 输入c2470f?<回车>后,下列程序的输出结果是_____,该程序的主要功能是 _________。 # include void main( ) { char ch;long number=0; while((ch=getchar( ))0?||ch>?6?); while(ch!=???&&ch>=?0?&&ch<=?6?) {number=number*7+ch-?0?; printf(\ ch=getchar( ); } } 16. 输入4<回车>后,下列程序的输出结果是___________________。 # include for(k=1;k<=n;k++){ for(j=1; j printf(\ }}
正在阅读:
物权法占有讲义05-12
围墙砖砌筑技术交底03-07
储运一体化方案及管理12-26
2018届中考语文专题复习修辞手法练习03-15
事故检查检讨书05-27
家乡的塔山作文500字06-30
德育课程一体化实施方案07-01
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 春夏
- 试卷
- 汇总
- 学期
- 答案
- 语言
- 考试
- 个股期权投资者知识考试题库(一级 1-100题)
- 孩子的心灵需要呵护
- LINDO和LINGO数学建模软件使用文档
- 2018年一级建造师《工程管理》考试真题及答案
- 初中化学教师业务考试试卷(3)及答案
- 会计学 作业
- 隐蔽工程(基础浇制、拆模)签证记录表
- 电力机车钳工-高级工复习题(完整)
- 曙光社区工作解说词(最新)doc
- 混凝土面板堆石坝面板砼及接缝止水专项施工方案
- 最高院建设工程施工合同司法解释第十七条 工程款利息的计算标准
- 勤动脑多思考3
- 自来水厂设计—计算书
- Wind量化平台-用户手册(C++)
- 2011年天津市中考物理试题及答案(word)
- 2013年高考数学(课标版)原创预测题(理科):专题三 数列
- 南开19春学期(1709、1803、1809、1903)《国际经济学(尔雅)》在
- 《小学生礼仪》教学计划
- 自考人力本 绩效管理练习题280道(含11年真题)
- 上海 维修电工高级(三级)1+X职业技能鉴定考核指导手册试题答案