文档库 最新最全的文档下载
当前位置:文档库 › C语言 程序设计基础试题七及答案

C语言 程序设计基础试题七及答案

C语言 程序设计基础试题七及答案
C语言 程序设计基础试题七及答案

《程序设计》考试试卷七

班级姓名学号

一、单项选择题(每小题1分,共20分)

(在每小题的4个备选答案中选出一个正确的答案)

1.C语言中,如果对函数类型未加说明,则函数的隐含类型为()

A.duoble

B. void

C.int

D.char

2.union data

{ int i;

char c;

float f;

};

定义了()

A.共用体类型data

B.共用体变量data

C.结构体类型data

D.J结构体变量data

3.设a=3,b=4,表达式a>b?b:a的值是()

A.3

B. 4

C.4:3

D.0

4.下面对枚举类型的叙述,不正确的是()

A.定义枚举类型用enum开头

B.枚举常量的值是一个常数

C.一个整数可以直接赋给一个枚举变量

D.枚举值可以用来作判断比较

5.求0到50的总和,不正确的程序段是()

A. int i,sum;

sum=0;

for(i=0;i<51;i++) sum+=i;

B. int i,sum;

for(i=0,sum=0;i<51;sum+=i++);

C. int i,sum;

i=0;sum=0;

for(i<51) {sum+=i;i++;}

D. int i,sum=0;

for(i=0; ;i++) {if(i>50) break; sum+=i;}

6. 表达式 (int)3.6*3的值为()

A.9 B. 10 C . 10.8 D.18

7.程序的结果为()

main()

{

int a=3,b=4,t=1;

if (a>b)

{t=a;a=b;b=t;}

printf(“%d”,a)

}

A. 3

B.4

C.1

D.0

8.程序main()

{ int a=1;

switch(a)

{ case 1: printf(“1”);

case 2: printf(“2”);

default: printf(“other”);

}

} 的结果为()

A.12other

B.1

C.2

D.Other

9.函数strcmp(“A”, “B”)的值为( )

A.0

B.-1

C.1

D.3

10.下程序的结果为( )

int f(a)

int a;

{ auto int b=0;

static int c=3;

b=b+1;

c=c+1;

return(a+b+c);

}

main()

{ int a=2,i;

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

printf(“%d”,f(a));

}

A.789

B.777

C.8910

D.9 11.合法的C语言标识符是()

A.ab&c

B.2ab

C._a1

D./n

12.若有定义int a=2,b=9,k;k=a+b++/a++;则k的值是()

A.6.5

B.7

C.6

D.8

13.标有/* */语句的输出结果为()

int x=20;

printf(“%d,%o,%x”,x,x,x);/* */

A.20,20,20

B.20,24,14

C.20,14,24

D.20,024,14

14. 将p定义为指向含n个元素的一维数组的指针变量,正确的语句为()

A. int (*p)[n];

B. int *p[n];

C.int p[n];

D. int **p[n];

15. 下面程序执行结果是()

main()

{ char c1,c2;

int i=2;

c1=’a’;c2=’c’;

c1=c1+i; c2=c2-i;

printf(“%c,%d”,c1,c2);/*’a’的ASCII码为97*/

A.语法错误 B.99,97 C.c,a D.c,97

16.请问:071^052的结果是()

A.032

B.016

C.023

D.022

17.下面对函数的叙述,不正确的是()

A.函数的返回值是通过函数中的return语句获得的

B.函数不能嵌套定义

C.一个函数中有且只有一个return语句

D.函数中没有return语句,并不是不带回值

18.下面的叙述,不正确的是()

A.宏名无类型,其参数也无类型

B.宏定义不是C语句,不必在行末加分号

C.宏替换只是字符替换

D.宏替换定义命令必须写在文件开头

19.有定义int a[3][4],输入其3行2列元素的正确语句为()

A.scanf(“%d”,a[3,2]);

B.scanf(“%d”,*(*(a+2)+1))

C.scanf(“%d”,*(a+2)+1);

D.scanf(“%d”,*(a[2]+1));

20.下面对指针变量的叙述,正确的是()

A.指针变量可以加上一个指针变量

B.可以把一个整形数赋给指针变量

C.指针变量的值可以赋给指针变量

D.指针变量不可以有空值,即该指针变量必须指向某一变量

二、阅读程序,写出执行结果(每题5分,共20分)

1、

#include “stdio.h”

main()

{ int i,k,a[10],p[3];

k=5;

for ( i=0;i<10;i++) a[i]=i;

for (i=0;i<3;i++) p[i]=a[i*(i+1)];

for ( i=0;i<3;i++) k+=p[i]*2;

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

}

运行结果

2、#include “stdio.h”

main( )

{ int a=2,*p,**pp;

pp=&p;

p=&a;

a++;

printf(“%d,%d,%d\n”,a,*p,**p p);

}

运行结果

3、

main( )

{ union

{ char s[2];

int i;

}g;

g.i=0x4142;

printf(“g.i=%x\n”,g.i);

printf(“g.s[0]=%x\t g.s[1]=%x\n”,g.s[0],g.s[1]);

g.s[0]=1;

g.s[1]=0;

printf(“g.s=%x\n”,g.i);

}

运行结果

4、#include “stdio.h”

main( )

{ int x=1;

void f1( ),f2( );

f1( );

f2(x);

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

}

void f1(void)

{ int x=3; printf(“x=%d\n”,x);}

void f2(x)

int x;

{ printf(“x=%d\t”,x);}

运行结果

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

(下列每小题只有一个错误,请改正。)

1.

str_space(char *str)/*统计字符串中空格数*/ { int num=0;

char ch;

while((ch=*str++)!=’\0’)

if(ch=’’) num++;

return (num);

}

2.

main()

{ int a,b;

float x,y,z;

scanf(“%f%f%f”,&x,&y,&z);

a=b=x+y+z;

c=a+b;

printf(“%d%d%d”,a,b,c);

}

3.

#inc lude “stdio.h”

main()

{ static int a[]={0*5};

int i=0,sum=0;

for(;i<5;i++) sum=sum+*(a+i)+i;

printf(“sum=%d”,sum);

}

4.

#include “stdio.h”

main()

{ char a[20];

int i=0;

scanf(“%s”,&a);

while(a[i]) printf(“%c”,a[i++]);

}

四、程序填空(每空2.5分,共10分)

1、本程序实现判断m是否为素数,请在程序空白处填空

# include “stdio.h”

main( )

{

int m, i, k;

scanf(“%d”,&m);

k=______________;

for (i=2;i<=k;i++)

if(m%i==0) break;

if (__________________)

printf(“%d”is a prime number\n”,m);

else

printf(“%d is not a prime number\n”,m);

}

2、下面invert函数的功能是将一个字符串内容颠倒过来,请填空。

# include “string.h”

void invert(char str[])

{

int i,j,k;

for ( i=0,j=strlen(str)-1;i

{

k=str[i];

___________;

str[j]=k;

}

}

五、编程题(请画出N-S图或PAD图,各占一半的分数,每题10分,共30分)

1.编写一个函数以实现库函数中的strcat(str1,str2)函数之功能

2.定义一8个元素的整数数组,读入各元素值后用选择法由小到大排序,之后输出排序结果。

3.编程计算a+aa+aaa+……+aa…a(n个a)的值,要求n和a由用户从键盘输入。(10分)

《程序设计基础》试卷七参考答案与评分标准

一、单项选择题(每小题1分,共20分)

1 C

2 A

3 A

4 C

5 C

6 A

7 A

8 A

9 B 10 A

11 C 12 C 13 B 14 A 15 D 16 A 17 C 18 D 19 C 20 B

二、阅读程序,写出执行结果(每小题5分,共20分。)

1.21

2.3,3,3

3.g.i=4142

g.s[0]=42 g.s[1]=41

g.s=1

4.x=3

x=1 x=1

三、程序改错题(每小题5分,共20分。)

1.if(ch=?…) if(ch==?…)

2.int a,b; int a,b,c;

3.static int a[]={0*5} static int a[5];

4.scanf(“%s”,&a); scanf(“%s”,a);

四、程序填空(共10分)

1. m-1

i>=m

2. i++(或++i,或i+=1,或i=i+1),j—(或--j,或j-=1,或j=i-1)

str[i]=str[j](或*(str+i)=*(str+j))

五、编程题(每题10分,共30分)

1.

comp(char *str1,char *str2)

{ while(*str1&&*str2) (3分)

if(*str1==*str2) { str1++;str2++;} (3分)

else break; (2分)

return(*str1-*str2); (2分)

}

2.

#include

void main( )

{

int a[8], i, j, min,temp;

printf(“请输入原数组:\n”);

for(i=0;i<8;i++)scanf (“%d”,&a[i]);

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

{

min=i;

for(j=i+1;j<8;j++)

if(a[min]>a[j])min=j;

temp=a[min];

a[min]=a[i];

a[i]=temp;

}

printf(“排序后为:\n”);

for(i=0;i<8;i++)printf(“%d ”,a[i]);

}

3.

#include (1分)

main()

{

long term = 0,sum = 0; (1分)

int a , i, n;

printf("Input a,n: "); (1分)

scanf("%d,%d", &a, &n); /*输入a,n的值*/ (1分)

for (i = 1; i <= n; i++) (1分)

{

term = term * 10 + a; /*求出累加项*/ (2分)

sum = sum + term; /*进行累加*/ (2分)}

printf("sum=%ld\n",sum); (1分)}

相关文档