《C程序设计》试卷2(含答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《C程序设计》试卷2(含答案)
一、选择题(每题2分共50分)
1.以下叙述中错误的是【】
A)C语言源程序经编译后生成后缀为.obj的目标程序
B)C程序经过编译、连接之后才能形成一个.exe文件
C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在机器中
D)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
2.以下叙述中正确的是【】
A)预处理命令行必须位于C源程序的起始位置
B)在C语言中,预处理命令行都以"#"开头
C)每个C程序必须在开头包含预处理命令行:#include
D)C语言的预处理要参加程序编译
3.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是【】A)大写字母B)连接符C)数字字符D)下划线4.以下叙述中错误的是【】
A)C程序必须由一个或一个以上的函数组成
B)函数调用可以作为一个独立的语句存在
C)若函数有返回值,必须通过return语句返回
D)函数形参的值也可以传回给对应的实参
5.对于一个正常运行的C程序,以下叙述中正确的是【】
A)程序的执行总是从main函数开始,在main函数结束
B)程序的执行总是从程序的第一个函数开始,在main函数结束C)程序的执行总是从main函数开始,在程序的最后一个函数中结束
D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
6.以下叙述中正确的是【】
A)break语句只能用于switch语句体中
B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环
C)break 语句只能用在循环体内和switch语句体内
D)在循环体内使用break语句和continue语句的作用相同
7.在C语言中,函数返回值的类型最终取决于【】
A)函数定义时在函数首部所说明的函数类型
B)return语句中表达式值的类型
C)调用函数时主函数所传递的实参类型
D)函数定义时形参的类型
8.以下叙述不正确的是【】
A)分号是C语句的必要组成部分
B)C程序的注释可以写在句的后面
C)函数是C程序的基本单位
D)其他函数可以调用主函数
9.表达式3.6-5/2+1.2+5%2的值是【】
A)4.3 B)4.8 C)3.3 D)3.8
10.假定x和y为double型,则表达式x=2,y=x+3/2的值是【】
A) 3.500000 B) 3 C) 2.000000 D) 3.000000
11. 以下程序的输出结果是【】
main()
{ int a=3;
printf("%d\n",(a+(a-=a*a)) );
}
A) -6 B)12 C) 0 D) -12
12.阅读以下程序:
main()
{ int x;
scanf("%d",&x);
if(x--<5) printf("%d"'x);
else printf("%d"'x++);
}
程序运行后,如果从键盘上输入5,则输出结果是【】
A)3 B) 4 C) 5 D) 6
13.以下程序的输出结果是【】
main()
{ int num= 0;
while(num<=2)
{ num++; printf("%d\n",num);
}
A} 1 B) 1 C)1 D) l
2 2 2
3 3
4
14.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是【】
A) 地址传递B) 单向值传递C) 由实参传给形参,再由形参传回实参 D) 传递方式由用户指定
15.以下函数值的类型是【】
fun ( float x )
{ float y;
y= 3*x-4;
return y;
}
A) int B) 不确定 C) void D) float
16.以下程序的输出结果是【】
main()
{ char c='z';
printf("%c",c-25);
}
A) a B) Z C) z-25 D) y
17.若有说明:int i, j=2,*p=&i,则能完成i=j赋值功能的语句是【】
A) i=*p; B) *p=*&j C) i=&j D) i=**p;
18.以下定义语句中,错误的是【】
A) int a[]={1,2}; B) char a[3];
C) char s[10]="test"; D) int n=5,a[n];
19.假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是【】
A) 3 B) 6 C) 10 D) 20
20以下程序的输出结果是【】
main()
{ int i, a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A) 258 B) 741 C) 852 D) 369
21.以下数组定义中不正确的是【】
A) int a[2][3];
B) int b[][3]={0,1,2,3};
C) int c[100][100]={0};
D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
22.以下程序的输出结果是【】
main()
{ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);
}
A} 0650 B) 1470 C) 5430 D) 输出值不定
23.以下程序的输出结果是【】
union myun
{ int x, y, z;}u;
int k;
} a;
main()
{ a.u.x=4; a.u.y=5; a.u.z=6;
a.k=0;
printf("%d\n",a.u.x);
}
A) 4 B) 5 C) 6 D) 0
24.以下程序的输出结果是【】
#define M(x,y,z) x*y+z
main()
{ int a=1,b=2, c=3;
printf("%d\n", M(a+b,b+c, c+a));
}
A) 19 B) 17 C) 15 D) 12
25. 下面的程序会【】
main()
{ int x=3,y=0,z=0;
if(x=y+z) printf(“****”);
else printf(“####”);
}
A、有语法错误不能通过编译
B、输出****
C、可以通过编译,但不能通过连接,因而不能运行
D、输出####
二、填空题(每空2分共20分)
1.下面函数用来求出两个整数之和,并通过形参传回两数相加之和,请填空。

int add(int x,int y, z)
2.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是______。

struct stud
{char num[6];
int s[4];
double ave;
}a;
3.以下程序的功能为数组a赋值,并输出数组中所有元素的值,请填空。

void main( )
{int a[10],*p,i;
p=a;
for(i=0;i<10;i++)
{*p=i;
p++;}
;
for(i=0;i<10;i++)
{printf("%d ",*p);
;}
}
4.程序打印如下形式的图形
*
* *
* * *
* * * *
main()
{ for(int i=1;i<=4;i++)
{ for(int j=1; ;j++)
printf( );
}
}
5.以下函数返回数组s中最大元素的下标,数组中元素的个数由t传入。

findmax(int s[],int t)
{
int m,n;
for(n=0,m=n;n<t;n++)< p="">
if(s[n]>s[m]) ( );
return ( );
}
三、读程序,写出程序的运行结果(每个3分,共15分)
1. int a, b;
void fun()
{ a=100; b=200; }
main()
{ int a=5, b=7;
fun();
printf("%d %d \n", a,b);
}
2.f ( int a)
{ int b=0;
static int c = 3;
b++; c++;
return(a+b+c);
}
main()
{ int a = 2, i;
for(i=0;i<3;i++) printf("%d\n",f(a));
}
3.void main()
{
int a,b,d=35;
a=d/10%2;b=a&&(-1);
printf(“%d,%d\n”,a,b);
}
4. main()
{ int x=1,y=2,z=3;
x+=y+=z;
printf("%d",(x<y?x++:y++));< p="">
}
5. main()
{ int a[]={2,4,6,8,10};
int y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++)
y+=*(p+x);
printf(“%d\n”,y);
}
四、编程序(15分)
1.编写一个递归函数,计算1+2+3+......+n 的和。

2.请编写一函数,使输入的一个字符串按反序存放,在主函数中输入输出字符串。

3.一个3×4矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。

参考答案一选择题(每题2分,共50分)
1.C 2.B 3.B 4.D 5.A
6. C 7 A 8.D 9.D 10.D
11 D 12 B 13 B 14 B 15 A
16.A 17.B 18.D 19.D 20.C
21.D 22.A 23.D 24.D 25.A(正确为D)
二、程序填空(每题2分
1. int, return z或 int *,*z
2. 22
3. p=a, p++
4.j<=i, “*”,“\n”
5. s[m]=s[n], s[m](正确为m=n,m)
三、写出下列程序的运行结果(每题3分,共15分) 。

1. 5 7
2. 7
8
9
3. 1,1
4. 5
5. 19
四、程序设计题(共15分)
1.参考程序:
f ( int a)
{ int sum;
if(a==1)
sum=1;
else
sum=f(a-1)+a;
return(sum);
}

f ( int a)
{ static int sum=1;
if(a==1)
return(1);
else
return(f(a-1)+a); }
2.参考教材3.参考教材
</y?x++:y++));<> </t;n++)<>。

相关文档
最新文档