教 学 大 纲
  授 课 教 案
  CAI 课 件
  实 验 指 导
  习   题
  课 程 试 卷
  参 考 资 料
 
《C语言》试卷    
一.单项选择题(每小题1分,共30分)
下面每题给出四个答案,用A、B、C、D标出,其中只有一个是正确的,并将答题卡上相应的字母涂黑。

1.一个C语言的语句必须使用的结束符号是
A. , B. 。 C. : D. ;
2.一个C语言程序开始和结束的位置必然是
A.主过程 B.主函数 C.子程序 D.主程序
3.设a=12,n=3,则执行表达式a%=n+3后a的值为
A.3 B.0 C.6 D.12
4.下列选项中,正确的一组语句是
A.char a; B.char b; C.char c; D.char d;
a=’M’; b=’55’; c=”M”; d=”55”;
5.以下是不正确的转义字符是
A.‘\\’ B.‘\’’ C.‘\081’ D.‘\0’
6.ex+SIN(x2)/(2a)的算法语言表达式是
A.ex+sin(x*x)/(2*a) B.exp(x)+sin(x*x)/(2*a)
C.ex+sin(x*x)/2*a D.EXP(X)+SIN(X*X)/(2*A)
7.设a=2, b=7.5, c=-3.6,以下哪两个逻辑表达式的值相同
A.1) ‘a’>‘c’||‘x’<‘y’ 2) b-a<=c/2&&c=-3.6
B.1) ‘a’>‘c’&&‘x’<‘y’ 2) a-7<b-6.5
C.1) ‘a’>‘c’||‘x’>‘y’ 2)‘a’<‘c’&&a>b
D.1) ‘a’>‘c’&&‘x’>‘y’ 2)‘a’<‘c’||a>c
8.设x=5,y=9,计算表达式y=(x++)*(--y)的值为
A.54 B.48 C.40 D.45
9.putchar函数可以向终端输出一个
A.字符或字符变量的值 B.字符串
C.实型变量 D.整型变量的值
10.若有定义:int a,b;使用语句scanf("%d,%d",&a,&b);给变量a,b分别赋值10和20,则正确的输入格式为
A.a=10,b=10 B.10 20
C.10<回车>20 D.10,20
11.以下不正确的if语句为
A.if(x>y); B.if(x!=y) scanf(“%d”,&x) else scanf(“%d”,&y);
C.if(x==y) x+=y; D.if(x<y) {x++;y++;}
12.以下关于switch语句和break语句的描述中,正确的是
A.在switch语句中必须使用break语句。
B.break语句只能用于switch语句中。
C.在switch语句中,可以根据需要使用或不使用break语句。
D.break语句是switch语句的一部分。
13.设有说明int y=10; 则执行完以下语句后,y的值为
do{
y--;
}while(--y);
printf(“%d\n”,y++);
A.0 B.1 C.-1 D.2
14.设已定义k为int型变量,则下面while循环体执行次数是
k = 10; while( k=0 ) k=k-1;
A.10次 B.无限次 C.0次 D.1次
15.有以下语句,则下面正确的描述是
static char x [ ]=“12345”; static char y[ ]={‘1’,‘2’,‘3’,‘4’,‘5’};
A.x数组长度大于y数组长度。
B.x数组和y数组的长度相同。
C.x数组长度小于y数组长度
D.x数组等价于y数组。
16.下列不能正确进行字符串赋值操作的语句是
A.char str[10]; gets(str); B.char *str; str=“a”;
C.char *str; str=‘a’; D.char str[10]; strcpy(str,“hello”);
17.设有语句static char str[10]={“china”}; printf(“%d”, strlen(str)); 则输出结果是
A.10 B.china C.6 D.5
18.C语言中,数组名代表
A.数组首地址 B.数组全部元素的值
C.数组第一个元素的值 D.数组元素的个数
19.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是
A.地址传递
B.单向值传递
C.由实参传给形参,再由形参传回实参
D.传递方式由用户指定
20.以下关于变量的作用域的说法中,错误的是
int f1(int a)
{ int b, c;
……
}
main()
{ int m, n;
}
A. b,c的作用域在f1的范围内
B. a的作用域为f1和main函数
C. m,n作用域为main()函数
D. a,b,c作用域仅限于函数f1()中
21.若已定义:int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a,i;
其中 0<i<9, 则对a数组元素不正确的引用是
A.a[p-a] B.*(&a[i]) C.p[i] D.a[10]
22.若有int x, *pb; 则正确的赋值表达式是
A.pb=&x B.pb=x; C.*pb=&x; D.*pb=*x
23.以下选项中,对指针变量p的正确操作是
A.int a[5], *p; p=a; B.int a[5],int *p1,*p2=a; *p1=*p2;
C.int a[5]; int *p=a=100; D.int a[3], *p; p=&a;
24.char str[ ]="ABCD", *p=str; printf("%d\n",*(p+4));上面程序的输出结果是
A.字符"D"的地址 B.68 C.0 D.不确定的值
25.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是
struct stud
{ char num[6];
int s[4];
double ave;
} a;
A.22 B.18 C.14 D.28
26.能够逐个访问结构体成员的成员运算符是
A.“,” B.“.” C.“:” D.“;”
27.#define PI 3.14
#define R 5.0
#define S PI*R*R
main()
{ printf("% f", S);}
A.3.14 B.5.0 C.78.500000 D.无结果
28.以下关于文件包含的说法中错误的是
A.文件包含是指一个源文件可以将另一个源文件的全部内容包含进来
B.一条包含命令可以指定多个被包含文件
C.文件包含处理命令的格式为
#include “包含文件名” 或 #include <包含文件名>
D.文件包含可以嵌套,即被包含文件中又包含另一个文件
29.下列语句中,将C定义为文件型指针的是
A.FILE c; B.FILE *c;
C.file c; D.file *c;
30.若要打开A盘上的user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是
A.fopen("A:\\user\\abc.txt","w")
B.fopen("A:\\user\\abc.txt","r")
C.fopen("A:\\user\\abc.txt","rb")
D.fopen("A:\\user\\abc.txt","r+")

二.阅读程序题(每小题2分,共30分)
阅读程序,在A、B、C、D四个选项中选择正确的运行结果,并将答题卡上相应的字母涂黑。

31.#include"stdio.h"
main( )
{ int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d",a,b);
}
A.0,0 B.2,0 C.0,1 D.2,1

32.设有说明语句:int a=1,b=0;则执行以下语句后的输出为
switch(a)
{ case 1:
switch(b)
{ case 0:printf(“**0**\n"); break;
case 1:printf(“**1**\n"); break;
}
case 2:printf(“**2**\n"); break;
}
A.**0** B.**0** C.**0** D.有语法错误
**2** **1**
**2**
33.#include <stdio.h>
main()
{ int a,b,m,n;
scanf (“%d%d”,&a,&b);
m=1; n=1;
if (a>0) m=m+n;
if (a<b) n=2*m;
else if (a= =b) n=5;
else m=m+n;
printf (“m=%d n=%d\n”,m,n);
}
输入为:-1 -2《回车》,输出结果为
A.m=3 n=1 B.m=2 n=1 C.2 4 D.m=2 n=4

34.main( )
{ int n=0,m=1,x=2;
if(!n) x - =1;
if(m) x - =2;
if(x) x - =3;
printf(“%d\n”,x);
}
A.-4 B.-1 C.0 D.1

35.main( )
{ int j=0,k=0,a=0;
while(j<2)
{ j++;
a++;
k=0;
}
while(k<=3)
{ k++;
if(k%2!=0)
continue;
a++;
}
a++;
printf("%d\n",a);
}
A.7 B.6 C.5 D.4

36.main( )
{ int i;
for(i=0;++i;i<5)
{
if(i==3)
{
printf("%d\n",++i);
break;
}
printf("%d",++i);
}
}
A.4 B.5 C.24 D.45

37.main( )
{ int i,a=0;
for(i=1;i<=5;i++)
{ do
{ i++;
a++;
}while(i<3);
}
i++;
printf("a=%d,i=%d",a,i);
}
A.a=3,i=7 B.a=3,i=6 C.a=3,i=4 D.a=4,i=7

38.main ( )
{ int a = 6 , b = 4 , c = 8 ;
a +=++b ;
c *= b * c ;
{ int a = 1 , b = 2 ;
c /= a + b ;
printf ( " \ n %d , %d , %d \ n " , a , b , c ) ;
}
printf ( " %d , %d , %d \n " , a , b , c ) ;
}
A.1,2,106 B.11,5,322 C.1,2,106 D.10,5,320
11,5,106 11,5,322 1,2,106 10,5,320

39.#include<stdio.h>
main()
{ static int a[3][3]={1,2,3,4,5,6,7,8,9};
int i,j,sum=0;
for(i=0; i <3; i ++)
for(j=0;j<3;j++)
if(i==j)
sum+=a[i][j];
printf(“%d\n”,sum);
}
A.14 B.16 C.18 D.15

40.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);
}
A.20 B.23 C.22 D.21

41.main( )
{ char ch[7]={“65AB21”};
int i,s=0;
for(i=0;ch[i]>=’0’ && ch[i]<=’9’;i+=2)
s=10*s+ch[i]-‘0’;
printf(“%d\n”,s);
}
A.12ba56 B.6 C.6521 D.62
42.main()
{ int k=4, m=1, n;
n=fun(k,m);
printf(“%d,”,n);
n=fun(k,m);
printf(“%d\n”,n);
}
int fun (int x,int y)
( static int m=0,j=2;
j+=m+1;
m=j+x+y;
return(m);
}
A.8, 20   B.8, 16   C.8, 17   D.8, 8

43. int a,b;
void fun()
{ a=100;b=200;}
main()
{ int a=5,b=7;
fun();
printf("%d%d\n",a,b);
}
A.100200 B.57 C.200100 D.75

44. long fib(int n)
{ if(n>2)
return(fib(n-1)+fib(n-2));
else return(2);
}
main( )
{ printf(“%d\n”,fib(3));}
A.2 B.6 C.4 D.8

45. #include<stdio.h>
main( )
{ static int a[ ]={4,9,8,2,1,10};
int s1,s2,i,*ptr;
s1=s2=0;
ptr=&a[0];
for(i=0;i<5;i+=2)
{ s1+=*(ptr+i);
s2+=*(ptr+i+1);
}
printf("s1=%d,s2=%d\n",s1,s2);
}
A.s1=13,s2=21 B.s1=21,s2=13
C.s1=12,s2=11 D.s1=11,s2=12

三.完善程序题(每小题2分,共12分)
在A、B、C、D四个选项中选择正确的语句填在程序的 处,使程序完整、正确,并将答题卡上相应的字母涂黑。

46.判断整数N能否同时被3和7整除,如是则打印“YES!”,否则打印“NO!”。
main()
{ int n;
scanf(“%d”,&n );
if( )
printf(“YES!");
else
printf(“NO!");
}
A.n%3=0&&n%7=0 B.!(n%3)&&!(n%7)
C.n/3==0&& n/7==0 D.n%3==0 || n%7==0

47.打印乘法九九表。
main()
{ int i, j;
for(i=1;i<=9;i++)
printf(“%4d”,i);
printf(“\n”);
for(i=1;i<=36;i++)
printf("%c",'-');
printf(“\n");
for ( )
{ for(j=1;j<=9;j++)
printf(“%4d”, i*j);
printf("\n");
}
}
A.i=1; i<=9; i++ B.i=1; i<9; i++
C.i=0; i<=9; i++ D.i=1; i<=9; i+=2

48.显示由1、2、3、4组成的全部四位数,并统计这种数的个数。 main()
{ int i,j,k,m,num,count;
count=0;
for(i=1; i<=4;i++)
for(j=1;j<=4;j++)
for(k=1;k<=4;k++)
for(m=1;m<=4;m++)
{ num=1000*i+100*j+10*k+m;
;
printf("%6d",num);
if(!(count%5))
printf("\n");
}
printf("the total number is :%d\n",count);
}
A.count=0 B.n++
C.count+=2 D.count++

49.对给定整型数组x中的n个数颠倒存放次序。
void inv(x,n)
int x[ ],n;
{ int t,i,j,m=(n-2)/2;
for(i=0;i<=m;i++)
{ j=n-i-1;
t=x[i];
x[i]=x[j];
;
}
}
A.x[i]=t B.x[i+1]=t C.x[j]=t D.x[j+1]=t

50.以下函数判断整数a是否为素数,当a是素数时返回值1,否则返回值0。
#include "math.h"
int fact ( )
{ int i, k;
k = a-1;
for (i=2;i<=k;i++)
if (m%i= =0) break;
if (i>=k+1)
return 1;
else
return 0;
}
A.float a B.a C.int x D.int a
51.10000元和10000元以上的货物,征税5%;5000元到10000元以下的货物,征税4%;1000元到5000元以下的货物,征税3%;1000元以下的货物免税,输入货款,求税金。
main()
{ int x,i;
float percent, tax;
printf("money?");
scanf("%d",&x);
i=x/1000;
switch ( i )
{ case 0: percent=0; break;
case 1: case 2: case 3: case 4: percent=0.03; break;
case 5: case 6: case 7: case 8: case 9: percent=0.04; break;
: percent=0.05; break;
}
tax=x*percent;
printf("money=%d tax=%f",x,tax);
}
A.else B.default C.case 10 D.case

四.程序改错题(每小题2分,共8分)
以下每小题有一个错误,在A、B、C、D四个选项中选择错误语句所在的行,并将答题卡上相应的字母涂黑。
52.(1) main()
(2) { int x;
(3) scanf(“%d", x);
(4) printf(“%d\n", x);
(5) }
A.第1行错 B.第2行错 C.第3行错 D.第4行错

53.下面程序的功能是从键盘上输入若干个整数,当输入数字0时结束输入。
(1)main()
(2){ int num;
(3) for(;;)
(4) { scanf("%d",& num);
(5) if(num<0) continue;
(6) if(num=0) break;
(7) printf("%d\n",num);
(8) }
(9) printf("You have typed number zero.\n”);
(10)}
A.第1行错 B.第3行错 C.第5行错 D.第6行错

54.下面程序将输入的十进制数以二进制形式输出。
(1)main( )
(2){ int n, c[8], i=0 ;
(3) scanf( “%d”, &n ) ;
(4) do { c[ i ] = n%2 ;
(5) i ++ ;
(6) n = n/2 ;
(7) }
(8)while( n )
(9)for ( - -i ; i>=0; - - i )
(10) printf( “%d”, c[ i ] ); }
A.第2行错 B.第4行错 C.第6行错 D.第8行错

55.下面程序是把字符串s2复制到s1中。
(1)#include”string.h”
(2)main()
(3){ char s1[ ]={“computer”}, s2[ ]={“screen”};
(4) strcpy(s2, s1);
(5) printf(“%s\n”,s1);
(6)}
A.第1行错 B.第3行错 C.第4行错 D.第5行错

五.程序设计题(每小题5分,共20分)
完成程序设计,将程序写在答题纸对应的题号处。

1.从键盘任意输入3个数,输出其中最小值。
2.有如下函数,请编写程序从键盘上输入任意一个x的值,输出y的值。

3. 编写程序,可循环地从终端读取一个字符,若为数字字符则输出digit,否则输出char(用字符#作为结束输入的标志)。
4. 用循环语句编写一程序,输出如下图形。
*
* * *
* * * * *
* * * * * * *

 

 

版权所有 © 2006-2007 沈阳大学信息工程学院 计算机基础教研室