C语言程序设计
期末考试试题及其答案
一、单项选择题(本大题共20题,每题1 分,共20分)
1、一个C程序的执行是从( A)。
A本程序的main函数开始,到main函数结束
B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C本程序的main函数开始,到本程序文件的最后一个函数结束
D本程序文件的第一个函数开始,到本程序main函数结束
2、以下不正确的C语言标识符是( D)
A、ABC
B、abc
C、a_bc
D、ab.c
3、一个C语言程序是由(    B )
A、一个主程序和若干子程序组成
B、函数组成
C、若干过程组成
D、若干子程序组成
4、以下能对一维数组a进行初始化的语句是: ( C)
A. int a[5]=(0,1,2,3,4,)
B. int a(5)={}
C. int a[3]={0,1,2}
D. int a{5}={10*1}
5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( C)
A、int
B、float
C、double
D、不确定
6、C语言中函数返回值的类型是由(A)决定的.
A、函数定义时指定的类型
B、return语句中的表达式类型
C、调用该函数时的实参的数据类型
D、形参的数据类型
7、有如下程序,输入数据:12345M678<cR>后(<CR>表示回车),x的值是( B) 。
#include<stdio.h>
main(){
int x;
float y;
scanf("%3d%f",&x,&y);
}
A、12345
B、123
C、45
D、345
8、设有以下说明语句:
typedef struct stu
{ int a;
float b;
} stutype;
则下面叙述中错误的是(D)。
A、struct是结构类型的关键字
B、struct stu是用户定义的结构类型
C、a和b都是结构成员名
D、stutype是用户定义的结构体变量名
9、若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是: (D)
A、p=q
B、*p=*q
C、n=*q
D、p=n
10、已知char x[]="hello", y[]={'h','e','a','b','e'};, 则关于两个数组长度的正确
描述是( B) .
A、相同
B、x大于y
C、x小于y
D、以上答案都不对
11、下列代码输出的是( C)
main()
{
int a[5]={1,2,3,4,5};
int *ptr = (int *)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
}
A、2,3
B、2,4
C、2,5
D、输出错误
12、有以下程序
main()
{ int a=1, b=3, c=5;
int *p1=&a, *p2=&b, *p=&c;
*p =*p1*(*p2);
printf("%d\n",c);
}
执行后的输出结果是( C)
A、1
B、2
C、3
D、4
13、有以下程序段
#include <stdio.h>
int main()
{ int x[] = {10, 20, 30};
int *px = x;
printf("%d,", ++*px); printf("%d,", *px);
px = x;
printf("%d,", (*px)++); printf("%d,", *px);
px = x;
printf("%d,", *px++); printf("%d,", *px);
px = x;
printf("%d,", *++px); printf("%d\n", *px);
return 0;
}
程序运行后的输出结果是(    A )
A、11,11,11,12,12,20,20,20
B、20,10,11,10,11,10,11,10
C、11,11,11,12,12,13,20,20
D、20,10,11,20,11,12,20,20
14、如果在C程序中有main(int argc,char*argv[]),那么( D)是指命令行中的参数个数。
A、argv
B、argv[]
C、argc,argv[]
D、argc
15、以下关于typedef的叙述不的是(B)
A.用typedef可以定义各种类型名,但不能用来定义变量B.用typedef可以增加新类型
C.用typedef只是将已存在的类型用一个新的名称来代表D.用typedef便于程序的通用
16、下面程序的运行结果是( C)
#include<stdio.h>
main()
{int num=0;
while(num<=2)
{num++;
printf(“%d ,num);
}
}
A、  1
B、  1 2
C、  1 2 3
D、  1 2 3 4
17、下面代码能通过编译的是:(    A )
A)int main()
{
int a[3]={1,2,3};
int *b[3]={&a[1],&a[2],&a[3]};
int **p = b;
return 0;
}
B)int main()
{
int a[3]={1,2,3};
int *b[3]={a[1],a[2],a[3]};
int **p = b;
return 0;
}
C)int main()
{
int a[3]={1,2,3};
int *b[3]={&a[1],&a[2],&a[3]};
int *p = b;
return 0;
}
D)int main()
{
int a[3]={1,2,3};
int *b[3]={&a[1],&a[2],&a[3]};
int *p = &b;
return 0;
}
18、若有以下程序:
void main()
{
char *a[3] = {"I","love","China"};
char **ptr = a;
printf("%c %s" , *(*(a+1)+1), *(ptr+1) );
}
这段程序的输出是(C)
A、I l
B、o o
C、o love
D、I love
19、以下对二维数组a的正确说明是( C)
A、inta[3][];
B、float a(3,4);
C、double a[1][4];
D、float a(3)(4);
20、若二维数组a有m列,则在a[i][j]前面的元素个数为( B)
A、j*m+i
B、i*m+j
C、i*m+j-1
D、i*m+j+1
21、下面选项属于函数指针的是:( D)
A、(int*)p(int, int)
B、int *p(int, int)
C、两者都是
D、两者都不是
二、填空题(本大题共10空,每空2分,共20分)
1、输入一个字符,判断该字符是数字、字母、空格还是其他字符。
main( )
{ char ch;
ch=getchar();
if( ch>=’a’&&ch<=’z’|| ch>=’A’&&ch<=’Z’)
printf("It is an English character\n");
else if( ch>=’0’&&ch<=’9’)
printf("It is a digit character\n");
else if( ch== ‘’)
printf("It is a space character\n");
else
printf("It is other character\n"); }
2、若输入字符串:abcde<;回车>,则以下while循环体将执行__0___次. while((ch=getchar())=='e')printf("*");
3、若有定义:char s[]="china";则C编译系统为数组s开辟___6__个字节的内存单元.
4、下列程序运行后的输出结果是_______
*
* *
* * *
* * * *
______
#include<stdio.h>
main()
{
int i,j;
for(i=4;i>=1;i--)
{printf("*");
for(j=1;j<=4-i;j++)
printf("*");
printf("\n");
}
}
5、若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是____0_______ a[2][1]得到的初值是________6________
6、在C语言中,二维数组元素的内存中的存放顺序是_按行主顺序存放_
三、程序分析题(本大题共4题,每题2分,共8分,写出程序执行结果)
1、#include<stdio.h>
main( )
printf函数返回值
{int a,s,n,count;
a=2;s=0;n=1;count=1;
while(count<=7) {n=n*a; s=s+n; ++count;}
printf(“s=%d”,s);
}
功能:求S=0+2+4+8+16+32+64+128 和。
输出结果:s=254
2、#include<stdio.h>
main()
{int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
for (i=0;i<3;i++)
for(j=0;j<3;j++)
if (i==j) sum=sum+a[i][j];
printf(“sum=%d\n”,sum);
}
功能:出矩形阵a的主对角线上的元素之和。
输出结果:27
3、#include <stdio.h>
main()
{ char grade=’C’;
switch(grade)
{

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。