湖北汽车工业学院《C语言程序设计》考试试卷3
一、 填空题(每小空1分,共20分)
1.C语言程序的三种基本结构是 、 、 。
2.一个C程序中必须有 函数,无论该函数在整个程序中的位置如何,C程序总是从该函数开始执行。
3.C语言中没有逻辑型数据,在给出逻辑运算结果时,以 代表“真”,以 代表“假”。
4.为了避免嵌套的条件语句if-else的二义性,C语言规定else与
if配对。
5.数组名作为参数传递给函数,作为实参的数组名被处理为该数组的 。
6.静态变量和外部变量的初始化是在 阶段完成的,而自动变量的初始化是在 时进行的。
7.C语言中构造类型数据有 、 和 。
8.void的用途有三个:①说明 的函数;②在函数的参数表中写void,表示函数 ;③说明void型指针,它是一个 指针,可被任何类型的指针赋值,也可以赋给任何类型的指针而不需强制转换。
9.C语言中可以用来实现循环的四种语句是 、 、 、
。
二、 阅读填空(每小空2分,共26分)
1. 已知i=5,写出下列语句执行后整型变量i和a的值。
①a=i++;(a= ) ②i+=012;(i= ) ③i*=i+1;(i= )
④a=(i>5)?0:1;(a= ) ⑤a= (a=i+1,a+2,a+3);(a= )
2.执行下列语句后,*(p+2)的值是 。
char s[3]=“ab”,*p;p=s;
3. 下列程序的功能是将字符串“Turbo C”纵向显示在屏幕上,请填空。
main( )
{ char *p=“Turbo C”;
for(;*p!=‘\0’; )
printf(“%c\n”, );
}
4. 下列程序计算1到100的整数的累加和。
main()
{ int i,_______;
for(__________________) sum+=i;
printf(“sum=%d\n”,sum);
}
5. 下列程序中maxmin()的作用是求整型数组a的最大元素和最小元素。
main()
{ static x[3][3]={{1,2,3},{9,5,6},{-1,0,3}};
int m1,m2;
maxmin( );
printf(“max=%d,min=%d\n”,m1,m2);
}
maxmin(int n,int a[][3],int *max,int *min)printf函数返回值
{ int i,j;
*max=*min=a[0][0];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if( ) *max=a[i][j];
else if( ) *min=a[i][j];
}
三、 单项选择题(每小题2分,共36分)
1. 下列形式的常数中,C程序不允许出现的是_____。
A) ±123 B) .45 C) 25.6e-2 D) 4e3
2.下列运算符中,不属于关系运算符的是 。
A) < B) ! C) == D) >=
3.以下对C语言函数的有关描述中,正确的是 。
A) 函数必须有返回值,否则不能使用函数
B) C函数既可以嵌套定义又可以递归调用
C) 在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
D) C程序中有调用关系的所有函数必须放在同一个源程序文件中
4.以下叙述中不正确的是 。
A) 在不同的函数中可以使用相同名字的变量
B) 函数中的形式参数是局部变量
C) 在一个函数内定义的变量只在本函数范围内有效
D) 在一个函数内的复合语句中定义的变量在本函数范围内有效
5.给出以下定义:
char x[ ]=“abcdefg”;
char y[ ]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’};
则正确的叙述为 。
A) 数组x和数组y的长度相同 B) 数组x的长度大于数组y的长度
C) 数组x和数组y等价 D) 数组x的长度小于数组y的长度
6.两个指针变量不可以______。
A)相减 B)比较 C)相加 D)指向同一地址
7.设有如下定义:
int (*ptr)( ); 则以下叙述中正确的是 。
A) ptr是指向一维数组的指针变量
B) ptr是指向int型数据的指针变量
C) ptr是一个函数名,该函数的返回值是指向int型数据的指针
D) ptr是指向函数的指针,该函数返回一个int型数据
8.为了提高程序的运行速度,对于整型或指针可以使用 型的变量。
A) register B) auto C)static D)extern
9.具有相同类型的指针变量p与数组array,不能进行的操作是 。
A) p=array B) *p=array[0] C) p=&array D) p=&array[ 0 ]
10.C语言中while与do-while语句的主要区别是 。
A) while的循环条件比do-while的循环控制条件体严格
B) do-while允许从外部转到循环体内
C) do-while 的循环体不能是复合语句
D) do-while的循环体至少无条件执行一次
11.以下函数调用语句中含有 个实参。
func((e1,e2),(e3,e4,e5));
A)2 B)3 C)5 D)语法错误
12.下列程序段中,功能与其它程序段不同的是 。
A) for(i=1,p=1;i<=5;i++) p*=i;
B) for(i=1;i<=5;) { p=1;p*=i;i++;}
C) i=1;p=1;while(i<=5) { p*=i;i++;}
D) i=1;p=1;do { p*=i;i++;} while(i<=5);
13.设x和y均为int型变量,则语句x+=y;y=x-y;x-=y;的功能是 。
A)把x和y按从大到小排列 B) 把x和y按从小到大排列
C) 无确定结果 D) 交换x和y中的值
14.以下程序的运行结果为______。
main( )
{ int n;
for( n=1;n<10;n++) ;
printf(“%d”,n);
}
A) 10 B) 123456789 C) 0123456789 D) 0
15.设有以下语句,则变量a 。
char a=‘\72’;
A)包含3个字符 B) 包含1个字符 C) 包含2个字符 D)说明不合法语法
16.以下程序执行后,a= ,b= 。
main( )
{ int a=10,b=20; int *pa=&a,*pb=&b;
*pa=*(pb-1)+5; *(pa+1)=*pa-5;
for( n=1;n<10;n++) ;
printf(“a=%d,b=%d\n”,a,b);
}
A) 10 B)20 C)15 D) 25
17.若从键盘输入B,以下程序的运行结果为 。
main( )
{ int grade;
scanf(“%c”,&grade);
switch(grade)
{ case ‘A’:printf(“>=85.”);
case ‘B’:printf(“>=60.”);
case ‘C’:printf(“<60.”);
default: printf(“error.”);}
}
A) >=85. B) >=60. <60. error. C) >=60. D) error.
18.以下程序的运行结果为______。
main( )
{ int a=1,b=2,c=3,d=4,e=5;
printf(“%d”,func((a+b,b+c,c+a),(d,e)));
}
int func(int x,int y)
{ return x+y;}
A) 15 B)5 C)9 D) 函数调用出错
四、 写出下列程序的运行结果(每小题3分,共18分)
1. #define GZ 30
main()
{ int num,total,gz;
gz=40;num=10;total=num*GZ;
printf(“total=%d\n”,total); }
运行结果:
2. #include <string.h>
main()
{ static char s1[50]={“some string*”};
static char s2[ ]={“test*”};
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论