C语言02 - 08年春夏学期考试试卷及答案汇总

更新时间:2024-04-22 00:42:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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 #include typedef char (*AP)[5]; AP defy(char *p) {int i;

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 void main() { int i,j,sum=0; for(i=1;i<=3;i++) {

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 int calc(void) {int x;char p;

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 #define N 4 void main()

{ 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 void main() { int a[5],i,j,n;

scanf(“%d”,&n); for(i=0;i

#include void main() { int i=m;

printf(\ }

4.下列程序的输出结果是( )。 char s[20]=\ sp=sp+2; sp=\ puts(s);

5.下列程序的输出结果是( )。 #include int sum(int k); main()

{ 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 void main()

{ 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 void main( ) { int a=2,b=7,c=5; switch(a>0){ case 1:

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 static int x=5; void f1(); void f2(); void main()

{ 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=-n/2&&i-j<=n/2)) printf(\ else printf(\ printf(\ } }

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 #include fun(char *w,int n)

{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 void main()

{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 void main() { int i,a[11];

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 void main()

{ 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=a[i]) m1=a[i]; *min1=m1;; }

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 struct time{

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 void main()

{ (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 int f(int n)

{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 void main( )

{ 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 void f(char *st,int i) {st[i]=\

printf(\ if(i>1) f(st,i-1); }

void main()

{ char st[]=\f(st,5); }

5. 下列程序的输出结果是_________________。 #include #include void main() { char arr[2][4];

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 #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 #include void main()

{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 void main() { int a,b;

scanf(“%d%d”,&a,&b); printf(\ a= (1) ; b= (2) ; a= (3) ; printf(\ }

4. 输入一个十进制整数,将它对应的二进数的各位反序,形成新的十进制数输出。

如: 13?1101?1011?11 如: 10?1010?0101?5 # include void main() { int x,y,t;

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 void main() { int a[6][6],i,j; for(i=0;i<6;i++)

{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 void main()

{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 void main()

{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 void main( ) { int x,k;

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 # include void main() { int i;

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 # include void main()

{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 void main() { int temp,flag; double eps,item,sum;

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 void main() {int a[3][3],flag,i,k; for(i=0;i<3;i++) for(k=0;k<3;k++) scanf(“%d”,&a[i][k]); (9) ; for(i=0;i<3;i++)

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 void fun(int x) {static int y; … return ;}

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 struct student{ char name[10]; int score; }

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 *f(char *str) {return str=”fun”;} void main()

{char *str=”one”;

printf(“%s,%c\\n”,f(str)+1,*f(str)+1); }

13. 下列程序的输出结果是_____________。

#include void p(int *x,int y)

{++*x;y--;} void main() {int x=0,y=3; p(&x,y);

printf(“%d,%d”,x,y);

}

14. 下列程序的输出结果是_____________。

#include void main() {int j,k,a[2][2]; for(k=1;k<3;k++) for(j=1;j<3;j++) a[k-1][j-1]=(k/j)*(j/k); for(k=0;k<2;k++) for(j=0;j<2;j++) printf(“%d”,a[k][j]); }

15. 用typedef定义一个指向函数的指针类型FP,该函数返回值为整型____________。

三、程序阅读题(每题5分,共15分)

15. 输入c2470f?<回车>后,下列程序的输出结果是_____,该程序的主要功能是

_________。

# include

void main( )

{ char ch;long number=0;

while((ch=getchar( ))?6?);

while(ch!=???&&ch>=?0?&&ch<=?6?) {number=number*7+ch-?0?; printf(\ ch=getchar( ); } }

16. 输入4<回车>后,下列程序的输出结果是___________________。

# include int main() { int j, k, n; float f,s; scanf(“%d”,&n); s=0;f=1;

for(k=1;k<=n;k++){ for(j=1; j

printf(\ }}

本文来源:https://www.bwwdw.com/article/0oop.html

Top