文档库 最新最全的文档下载
当前位置:文档库 › C语言试卷终稿B1

C语言试卷终稿B1

南昌航空大学2008—2009学年第一学期期末考试

课程名称:C 语言A 闭 卷 B1 卷 120 分钟

一、 填空(每空1分,共12空,共12分)

1.执行a=10>8*2?3+5:3*2;后,a 的值是

6 。

2.设int i=10;则执行j=++i;后j 的值为 11 。

3.(!x)==(x!=0)的值为 0 。

4.能表示一个整数y 既是奇数又是3的倍数的表达式是y%2!=0&&y%3==0 。

5.定义一指向整型数据的指针变量p 的语句是 int *p; 。

6.C 语言中三种常用的循环控制结构是for 循环、do-while 循环和while 循环。

7.int a[9]; 则a 数组的下标范围是 0~8 。

8.对应scanf("a=%d,b=%d",&a,&b);语句的输入a 为3,b 为7的键盘输入格式是 a=3,b=7 。

9.若a 为float 类型变量,且a=4.6785,则表达式(int)(a*100+0.5)/100.0的值为 4.68 。 10.设a=061(八进制数),b=026(八进制数),若想通过c=a^b 运算,求c 的十进制数值为 39 。

11. 若x=2,y=-3则x&y 的结果是 0 。

二、选择(每小题2分,共15小题,共30分) 1.C 语言中,要求运算数必须是整型的运算符是( A )

(A) % (B) / (C) < (D) ! 2.表达式10!=9的值是( B )

(A) 0 (B) 1 (C) true (D) false 3.连接两个字符串的C 语言库函数是( C )

(A) strcmp (B) strcpy (C) strcat (D) strlen

4. 以下定义整型3行4列的二维数组a并初始化不正确的是(C )

(A) int a[3][4]={0};

(B) int a[][4]={0,1,2,3,4,5,6,7,8,9,10,11,12};

(C) int a[3][]={0,1,2,3,4,5,6,7,8,9,10,11,12};

(D) int a[3][4]={{1,2},{1,2,3},{1,2,3,4}};

5.有如下程序,该程序的执行结果是( D )

main()

{ int i,sum=0;

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

sum+=i++;

printf("%d\n",sum);

}

(A) 6 (B) 3 (C) 死循环(D) 4

6.有如下程序, 该程序的输出的结果是( C)

int addc(int a,int b,int c)

{ c=a+b;

return(c); }

main()

{ int x=4,y=2,z,r;

z=x+y;

r=addc(addc(x,y,z),addc(y,z,x),z);

printf("%d\n",r);

}

(A) 36 (B) 12 (C) 14 (D) 6

7.下列哪一个是C语言中合法的变量(C)

(A) 8ZSe (B) ±A0 (C) X0_2 (D) ?x0?

8.以下程序的输出结果是( D )

main()

{ int a;

for(a=1;a<=100;a++)

if (a%3= =0)

a+=3;

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

}

(A) 100 (B) 101 (C) 102 (D) 103

9.以下程序的输出结果是( D )

void fun(int *a, int b)

{ *a = 2; b = 5; }

main()

{ int a = 3, b = 7;

fun(&a, b);

printf("%d%d\n", a, b); }

(A) 25 (B) 37 (C) 35 (D) 27

10. 以下程序的输出结果是( B )

#define MAX(x, y, z) x * (y) + z

main()

{ int a = 1, b = 2, c = 3;

printf("%d\n", MAX(a + b, b + c, c + a));

}

(A) 12 (B) 15 (C) 19 (D) 22

11.以下程序运行后的输出结果是( A )

main()

{ int i = 5, j = 0;

do

{

j = j + ( --i );

}while( i < 2 );

printf("%d\n", j);

}

(A) 4 (B) 5 (C) 6 (D) 9

12.以下程序的输出结果是( C )

int f(int b[], int m, int n)

{ int i, s = 1;

for (i = m; i < n; i ++)

{ b[i] = b[i - 2] + b[i +2];

s += b[i];

}

return s; }

main()

{ int x, a[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

x=f(a, 4, 7);

printf("%d\n", x); }

(A) 22 (B) 26 (C) 42 (D) 64 13.以下程序的输出结果是( C)

int func(int n)

{ static int m = 0;

m = m + n;

return (m); }

main()

{ int i, a = 0;

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

a += func(i);

printf("%d\n", a); }

(A) 10 (B) 15 (C) 20 (D) 22

14.下列程序的输出结果是( C )

struct student

{ int a, b, c; };

main()

{ struct student stu[2] = {{1, 2, 3},{4, 5, 6}};

int t;

t = stu[0].a + stu[1].b % stu[0].c;

printf("%d \n", t);

}

(A) 0 (B) 1 (C) 3(D) 5

15. 当调用函数时,实参是一个数组名,则向函数传送的是(B)

(A) 数组的长度(B) 数组的首地址

(C) 数组每一个元素的地址(D) 数组每个元素中的值

三、程序填空(每空3分,共6空,共18分)

#include

void main ( )

{ FILE *fp;

char ch, filename[20];

scanf(“%s”, filename);

if ((fp = fopen(filename, “w”)) == NULL)

{ printf(“打开文件出错\n”);

exit(1);

}

ch = getchar( );

while ((ch = getchar( )) != …\n?)

{

fputc( ch,fp);

putchar (ch);

}

fclose (fp);

}

2.打印出[1900 2050]之间的所有的闰年,判断闰年的条件:(二者之一即可)(1)能被4整除,但不能被100整除。

(2)能被4整除,又能被400整除。

程序如下,请填空:

main()

{ int i;

for(i = 1900; i <= 2050; i ++)

if ((i%4==0 && i%100!=0)||(i%4==0 && i%400==0))

printf("%d,", i);

}

3、下面程序用于计算n!的值。

main()

{

int i, s, n;

s = 1;

printf(“enter n:”);

scanf(“%d”, &n);

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

( s=s*i);

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

}

4、输入10个整数存入一维数组,从中查找某个整数(该数从键盘上读取),查到则输出其是第几个数,查不到则输出“Not Find!”。

main()

{ int a[10], *p = a, x, n, flag = 0;

for ( ; p < a + 10; p ++ )

scanf(“%d”, p);

scanf(“%d”, &x);

for (n = 1, p = a; p < a + 10; p ++, n ++)

if ( *p==x)

{ flag = 1;

break;

}

if ( !flag )

printf(“Not Find! \n”);

else

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

}

四、读程序题(每个小题5分,共4小题,共20分)

1.读程序从键盘输入1080,则程序的输出结果是:801

int f( int n )

{

int m = 0, c;

while ( n != 0 )

{ c = n % 10;

m = m * 10 + c;

n = n / 10;

}

return (m);

}

main()

{ int m;

scanf("%d", &m);

printf("%d\n", f(m));

}

2、写出程序的执行结果:21

main()

{ int a = 0, i;

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

{ switch (i)

{ case 0:

case 3:a+=2;

case 1:

case 2:a+=3; break;

default:a+=5;

}

}

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

} 147

258

369

3.写出程序的执行结果:

#define M 3

#define N 3

main()

{ int a[M][N] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

int i, j, t;

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

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

{ t = a[i][j];

a[i][j] = a[j][i];

a[j][i] = t;

}

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

{ for ( j = 0; j < N; j++ )

printf("%d", a[i][j]);

printf("\n");

}

}

4.写出程序的执行结果:4,5

void swap(int *a, int *b)

{ int *tmp;

tmp = a;

a = b;

b = tmp;

*tmp = 4;

}

main()

{ int a = 3, b = 5;

swap(&a, &b);

printf("%d,%d", a, b);

}

五、编程序(每小题10分,共2小题,共20分)

1、按下列公式s(n)=12+22+......+n2编写计算并输出s值,其中的n值由键盘输入。

main( )

{

int i, s, n;

s = 0;

printf(“enter n:”);

scanf(“%d”, &n);

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

s=s+i*i;

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

}

2、编写一函数实现将字符串s中的第一个和最后一个字母改写成大写字母(如原来不是字母或已是大写字母,则不变),并在main函数中调用该函数,其中字符串s由键盘输入。

void f( char *s)

{

int len = strlen(s);

if(*s>=?a?&&*s<=?z?)

*s = *s-32;

if(*(s+len-1)>=?a?&&*(s+len-1)<=?z?)

*s = *s-32;

}

main( )

{

char a[]="abcd";

f(a);

printf("%s", a);

}

相关文档