文档库 最新最全的文档下载
当前位置:文档库 › C语言程序设计试卷蔡益红

C语言程序设计试卷蔡益红

一、选择题(每题2 分,共10分)

1.以下叙述中正确的是( )

A) 构成C程序的基本单位是函数

B) 可以在一个函数中定义另一个函数

C) main()函数必须放在其它函数之前

D) 所有被调用的函数一定要在调用之前进行定义

2.设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是( )

A)6.500000 B)6 C) 5.500000 D) 6.000000

3.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是( )

A) scanf(“%2d%2d%2d”,&i,&j,&k);

B) scanf(“%d %d %d”,&i,&j,&k);

C) scanf(“%d,%d,%d”,&i,&j,&k);

D) scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);

4.若x 为unsigned int 型变量,则执行下列语句后x值为()

x = 65535;

printf(“%d\n”,x);

A)65535 B)1 C)无定值D)-1

5. 定义全局变量时,若变量的的存储类别缺省,则默认的存储类型是()。

A)auto B)register

C)extern D)static

二、判断题(每题1 分,共10分)

1、C程序中的函数不能嵌套调用,但可嵌套定义。

()。

2、当形式参数为指针变量名时,实际参数可为指针变量名、数组名或其它类型变量的首地址()。

3、若有说明:static int a[3][4];,则数组a中各数组元素可在程序的编译阶段得到初值0()。

4、若用数组名作为函数调用时的实参,则实际上传递给形参数组的是数组的第一个元素的值()。

5、共用体变量的地址和它的各成员的地址都是同一起始地址。()。

6、语句int (*p) (int,int);定义了一指针变量p,指向一个包含有两个int型形参的函数,其返回值

也为int型数据。()。

7、文件指针与文件内部位置指针意义相同。()。

8、在定义枚举类型数据时,枚举元素是变量。()。

9、continue语句只能冲破一层循环。()。

10、结构体类型数据可以嵌套定义。()。

第 1 页(共6 页)

三、写出程序运行结果(每题 5 分,共20分)

1.main()

{ int a=15,b=21,m=0;

switch(a%3)

{ case 0:m++;break;

case 1:m++;

switch(b%2)

{ default:m++;

case 0:m++;break;

}

}

printf(“%d\n”,m);

}

程序运行后的输出结果是:

2.float fun(int x, int y)

{return (x+y);}

main()

{ int a=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}

程序运行后的输出结果是:

3.void fun(char *c,int d)

{ *c=*c+1;d=d+1;

printf("%c,%c,",*c,d);

}

main()

{ char a='A',b='a';

fun(&b,a); printf("%c,%c\n",a,b);

}

程序运行后的输出结果是:

4. struct stu

{ char num[10]; float score[3]; };

main()

{ struct stu s[3]={{"20021",90,95,85},

{"20022",95,80,75},

{"20023",100,95,90}},*p=s;

int i; float sum=0;

for(i=0;i<3;i++)

sum=sum+p->score[i];

printf("%6.2f\n",sum);

}

程序运行后的输出结果是:

第 2 页(共6 页)

四、程序改错(每题5分,共20分)

1.以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:main()

{ int n,k;

float score ,sum,ave;

sum=0.0;

for(n=1;n<=10;n++)

{ for(k=1;k<=4;k++)

{ scanf("%f",&score); sum+=score;}

ave=sum/4.0;

printf("NO%d:%f\n",n,ave);

}

}

上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是哪条?并将其移到正确的位置。

2.以下函数的功能是计算s=1+1/2+1/3+……+1/n,程序运行后结果不正确,错误的语句是哪条?并改之。

main()

{float s=0.0;

int i;

for(i=1;i<=3;i++)

s=s+1/i;

printf("%f",s);

}

3. 以下函数的功能是:输出有10个元素的整型数组a的元素值。程序运行后结果不正确,只增加一条语句使其完成要求功能。

main( )

{ int a[10], *p=a , i;

for ( i=0; i<10; i++) scanf("%d",p++);

printf("\n");

for ( i=0; i<10; i++, p++) printf("%d ",*p);

}

4.以下函数的功能是:打印1到5的阶乘值。程序运行后结果不正确,只修改一条语句使其完成要求功能。

int fac(n)

int n;

{ int f =1;

f = f n ;

return( f );

}

main( )

{ int i;

for (i=1; i<=5; i++)

printf(“%d!=%d\n”, i, fac(i));

}

第 3页(共6页)

五、程序填空(在【】中填空,每题5 分,共20分)

1.fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。

#include

#define N 4

int fun(int(*a)[N])

{ int row,col,max,min;

for(row=0;row

{ for(max=a[row][0],col=1;col

if(【】) max=a[row][col];

if( row==0) min=max;

else if(【】) min=max;

}

return min;

}

2.函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,

返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。

#include

int sstrcmp(char *s,char *t)

{ while(*s&&*t&&(*s-*t)【==0 】)

{ s++;t++;}

return 【*s-*t 】

}

3.下面的程序是用指针来交换两个数据,请将缺省语句填上。

void exchange( int *p ,int *q)

{ int t;

t=*p; *p=*q; *q=t;

}

main()

{ int a,b,*x,*y;

a=10;b=20;

x=&a;【】

【】

printf(“%d %d\n”,*x, *y);

}

4. 下面的程序是将字符串a按反向存入字符串b中并输出。(如 :串a为"12345 ",则串b为"54321 ") main()

{ char *a={"abcdefg"},b[80],*p=b;

int n,m,k;

k=strlen(a);

n=k-1;

m=0;

while (n>=0)

{ *(p+m)=【*(a+n) 】

n--;

第 4 页(共 6 页)【m++ 】

}

*(p+k)=*(a+k);

printf("%s \n",a);

printf("%s \n",b);

}

六、编写函数完善下面程序(每题10分,共20分)

1.编写在字符串中寻找关键字符的子函数

#include

char *search(char *tagstr, char *c)

{

}

main()

{ char *string="I am a student",c;

printf("Please enter the character:");

scanf("%c",&c); /*输入关键字符*/

if(search(string,&c))

printf("Found!!!",search(string,&c));

else

printf("Not Found!!!\n");

}

2. 用指向函数的指针作形参,设计一个函数process, 每次实现不同的功能,当用不同的函数名作实参调用process时,process再去调用相应的函数。

#include

main ( )

{ int max( ), min( ), add( ),process();

int a, b;

printf("enter a and b:");

scanf("%d, %d", &a, &b);

printf("max=");

process(a, b, max);

printf("min=");

process(a,b,min);

printf("sum=");

process(a, b, add);

}

第 5 页(共6页)

max(x, y)

int x, y;

{ int z;

if (x>y) z=x;

else z=y;

return(z);

}

min(x, y)

int x, y;

{ int z;

if (x

z=x;

else

z=y;

return(z);

}

add(x, y)

int x, y;

{ int z;

z=x+y;

return(z);

}

process( )

{

}

第6 页(共6 页)

相关文档
相关文档 最新文档