计算机语言(C)第2阶段测试题

更新时间:2023-10-09 18:38:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

江南大学现代远程教育 第二阶段测试卷

考试科目:《计算机语言(C)》第7章至第9章(总分100分) 时间:90分钟

学习中心(教学点) 批次: 层次: 专业: 学号: 身份证号: 姓名: 得分:

一、选择题(每题2分,共30分) 1.下面函数f的定义:

f(int a) {printf(\函数f的返回类型( )。

A. 同参数a的类型相同 B. 是void类型 C. 没有返回值 D. 无法确定 2.下列说法正确的是( )。

A. C程序必须在开头用预处理命令#include B. 预处理命令必须位于C源程序的首部 C. 在C语言中,预处理命令都以\开头

D. C语言的预处理命令只能实现宏定义和条件编译的功能 3.C语言的编译系统对宏命令是( )时候处理的。 A. 在程序运行 B. 在程序连接时

C. 和源程序其它C语言同时进行编译时 D. 对源程序其它成份正式编译之前进行处理的

4. 若有定义int a[2][2]={0};,则以下描述正确的是( )。 A. 只有a[0][0]的值为0 B. 数组每个元素的值都为0 C. 只有a[0][1]的值为0 D. 以上都不正确 5. 下列程序段执行后,s的值是( )。 static char ch[]=\int a,s=0;

for(a=0;ch[a]>='0'&&ch[a]<='9';a++) s=10*s+ch[a]-'0';

1

A. 600 B. 6 C. 0 D. 出错 6.有语句char str1[10],str2[10]={\

则能将字符串books赋给数组str1的正确语句是( )。 A. str1={\C. str1=str2; D. strcpy(str2,str1);

7.在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。

A.整型常量 B.整型表达式 C. 整型常量或整型表达式 D.任何类型的表达式 8.对两个数组a和b进行如下初始化 char a[ ]=〝ABCDEF〞;

char b[ ]={‘A’,‘B’,‘C’,‘D’,‘E’,‘F’}; 则以下叙述正确的是( )。

A. a和b数组完全相同 B. a和b长度相同 C. a和b中都存放字符串 D. a数组比b数组长度长 9. 下面程序段的运行结果是( )。(注:└┘表示空格) char c[6]={?a?,?b?,?c?,?\\0?,?d?,?\\0?}; printf(“%s”,c);

A.abc B.?a??b??c? C.abc└┘d D.abc d ?d?

10. 若有语句int a; a=strlen(“a\\bre\\?hi\\?y\\\\\\bou\\n”);则a的值是( )。 A. 14 B. 16 C. 13 D. 15 (说明: ?\\b?是退格符)

11. 以下对C语言函数的有关描述中,正确的是( )。

A. 在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B. C函数即可以嵌套定义又可以递归调用 C. 函数必须有返回值,否则不能使用函数

D. C程序中有调用关系的所有函数必须放在同一个源程序文件 12. 以下能正确定义数组并正确赋初值的语句是( )。 A. int N=5,b[N][N]; B. int a[1][2]={{1},{3}}; C. int c[2][]={{1,2},{3,4}}; D. int d[ ][2]={{1,2},{ },{34}}; 13. 数组名作为参数传递给函数,此时作为实参的数组名被处理为( )。 A.该数组的长度 B.该数组的元素个数 C.该数组中各元素的值 D.该数组的首地址 14. 以下程序的正确运行结果是( )。

#include

2

main() { }

func(int a,int b) {

static int m=0,i=2; i+=m+1; m=i+a+b; return(m); }

A. 8,17

B. 8,16

C. 8,20

D. 8,8

15.在一个文件中定义的全局变量的作用域为( )。 A. 本程序的全部范围 B.本文件的全部范围

C. 函数内全部范围 D.从定义该变量位置开始到本文件结束范围

int k=4,m=1,p;

p=func(k,m);printf(“%d,”,p); p=func(k,m);printf(“%d\\n”,p);

二、填空题(每空3分,共45分)

1. 在C语言中,函数参数的传递方式包括 和 两种形式。

2. 在C语言中,按变量值存在的时间(生存期)把变量分为 存储和 存储两种形 式的变量。

3. 宏定义的展开只是简单的 替换。

4. 若有定义:double x[3][5];则x数组中行下标的下限为 ,列下标的上限为 。 5. 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII值之差。例如:输入的两个字符串分别为abcdefS和abceef,则输出为-1。请填空将程序补充完整。 main()

{char strl[80],str2[80],c; int I=0,s; gets(strl); gets(str2);

while((strl[I]==str2[I])&&(strl[I]!= )) I++; s= ; printf(“%d\\n”,s); }

3

6. 完善以下程序实现利用以下公式求e的n次方,要求用函数实现,其中f1函数用来计算每项分子的值,f2函数用来计算每项分母的值,x的值从键盘上输入。

x2x3e?1?x????(前20项的和)2!3!

xfloat f2(int n) float f1(int x,int n) { if(n==1) return 1; { int I;float j=1.0;

else return( ); for(I=1;I<=n;I++) j= ; } return j;

}

main()

{ float exp=1.0;int n,x; printf(“input a number:”); scanf(“%d”,&x);printf(“%d\\n”,x); exp= ;

for(n=2;n<20;n++) exp= ; printf(“\\n The is exp(%d)=%8.4f\\n”,x,exp); }

7.下面程序段的运行结果是 。 int I=0;

char x[ ]= “the teacher”; while(x[++I]!=’\\0’)

if(x[I-1]==’t’) printf(“%c”,x[I]); 8.下面程序的运行结果是 。

sub(int n) main( ) { int a; { int I=5;

if(n==1) return 1; printf(“%d\\n”,sub(I)); a=n+sub(n-1); } return(a); }

三、编程题(共25分)

1. 编写一个程序实现利用牛顿迭代法求方程ax3+bx2+cx+d=0的根,系数a,b,c,d的值依次为1,2,3,4,由主函数输入,求x在1附近的一个实根。(15分)

2.有一个已排好序的数组{1,3,5,7,9,10},今任意输入一个数,要求按原来排序的规律将它插入

4

数组中。(10分)

附:参考答案:

一、选择题(每题2分,共30分) 1 A 6 B 11 A 2 C 7 C 12 D 3 D 8 D 13 D 4 B 9 D 14 A 5 A 10 A 15 D

二、填空题(每空3分,共45分)

1. 值传递 地址传递 2. 静态 动态 3. 字符 4. 0 4

5. ?\\0? str1[I]-str2[I]

6. n *f2(n-1) j*x exp+x exp+f1(x,n)/f2(n) 7. he 8. 15

三、编程题(共25分)

1.

#include

float fun(float a,float b,float c,float d) { float x=1,x0,f,f1; do

{ x0=x;

f=((a*x0+b)*x0+c)*x0+d; f1=(3*a*x0+2*b)*x0+c; x=x0-f/f1;

}while(fabs(x-x0)>=1e-3); return(x); }

main( )

{ float a,b,c,d;

printf(“\\ninput a,b,c,d:”);

scanf(“%f,%f,%f,%f”,&a,&b,&c,&d);

5

printf(“\\nx=f\\n”,fun(a,b,c,d)); } 2.

main( )

{ int a[7]={1,3,5,7,9,10},m,j,k; scanf(“%d”,&m);

if(m>a[5]) a[6]=m; else{ for(j=0;j<=5;j++)

if(mj;k--) a[k]=a[k-1]; a[k]=m;} for(k=0;k<7;k++) printf(“%d ”,a[k]);}

6

本文来源:https://www.bwwdw.com/article/b0zf.html

Top