7-8-C语言上机考试试题7

更新时间:2023-11-05 09:01:01 阅读量: 综合文库 文档下载

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

C语言上机考试试题-7

一、选择题 ( 评分标准 20 分,每小题2分 )

1. 执行语句“k=x++&&y++||z++;”(各变量当前值均为1)后,变量k、x、y、z值依次为________。 (A)1、2、2、1 (B)1、2、2、2 (C)0、2、2、1 (D)0、2、2、2 2. 计算变量x(x大于1)整数部分位数的表达式,可以写作________。 (A)(int)log10(x) (B)log10(x) (C)log10(x)+1 (D)(int)log10(x)+1 3. 判断变量x、y中有且只有1个值为0的表达式为________。

(A)!(x*y)&&x+y (B)(x*y)&&x+y (C)x*y==0 (D)x==0&&y!=0 4. 执行语句“for(s=0, k=1; s<20||k<10; k=k+2) s+=k;”后,s、k的值为________。 (A)25、9 (B)25、11 (C)36、11 (D)36、9 5. 下列程序

#include

int f(int n)

{ if (n<=0) return ( 1 ); else return ( f(n-1)*3+2 ); }

void main()

{ printf(”%d”, f(4)); }

则运行结果是 。

(A) 5 (B) 17 (C) 53 (D) 161

6. 执行语句“for(float x=0, s=0; x!=60; x=x+0.3) s=s+x;”后,变量x的值为________。 (A)不可能大于60 (B)不可能大于60.3 (C)一定小于60 (D)可以远大于60

7. 声明语句为“char a[10]”,执行printf(“%d,%d\\n”,sizeof(a),strlen(strcpy(a, \语句后的输出结果为________。

(A)7,7 (B)7,8 (C)10,7 (D)10,8

8. 若有以下说明,则引用数值为“4”的数组元素的表达式为 。

int a[3][4] = { {1,8,7,2}, {9,4,3,6}, {5,6,7,1} }; int (*p)[4] = a;

(A) *a[1]+1 (B) *(p[1]+1); (C) a[2][2] (D) *p[1]+1 9. struct ex

{ int x ; float y; char z ;} example; 则下面的叙述中不正确的是( )。

1

A. struct结构体类型的关键字 B. example是结构体类型名 C. x,y,z都是结构体成员名 D. struct ex是结构体类型

10. 声明语句为“int a[3][4];”,下列表达式中与数组元素a[2][1]等价的是________。 (A)*(a[2]+1) (B)a[9] (C)*(a[1]+2) (D)*(*(a+2))+1

套数号 7

答案 1.A 2. D 3.A 4. B 5. D 6.D 7. C 8. B 9. B 10. A 二、判断题 ( 评分标准 20 分,每小题2分)

1. 语句“int a=0; if(a=1) a+=10;” 编译不会出错,但运行后a的值是11。 2. 定义一维数组int n=10, a[n];写法是不正确的。

3. 标准输入函数scanf的返回值为所输入数据的个数或EOF。

4. 用数组名作为函数的实参时,传递给函数的形参是数组的第1个元素。

5. 若s的当前值为0,执行循环语句“for(i=1; i<10; i=i+2) s+=i;”后,i的当前值为10。 6. 函数头定义形式: int f(int x; int y) 是正确的。

7. 设有字符数组: char s[20]; scanf(\,能把一串字符: How do you do?<回车>全部输入。 8. 若打开文件的方式为“r”而该文件已经存在,则文件中原有数据被清空。 9. 定义语句为“char a[10];”,执行下列语句后的输出结果为10,7。 printf(\,%d\\n\,sizeof(a),strlen(strcpy(a,\10. 在C语言程序中,在main函数中定义的变量称为局部变量。

套数号

答案 7 1.T 2.T 3.T 4.F 5.F 6.F 7.F 8.F 9.T 10.T 三、填空题(1) ( 评分标准 10 分,第1-4题每空1分,第五题2分)

1. C语言中,拷贝字符串使用的库函数是_______( )函数。

2. 求解赋值表达式 a=5+(c=6)后,表达式值、a、c的值依次为_______、_______、_______。 3. 若 a=13、b=25、c=-17,条件表达式 ((y=(a

strcpy (2) 11,11,6 (3) -17 (4) 1、7、1 (5) 7 2

四、程序改错题 ( 评分标准 20 分,每小题 5分 )

1. 该程序功能:输入x、eps,计算多项式1-x+x*x/2!-x*x*x/3!+...的和直到末项的绝对值小于eps为止。

#include #include void main()

{ float x,eps,s=1,t=1,i=1; scanf(\ do{

t= -t*x/i; /*$1*/ s+=t;

}while(fabs(t)>=eps); printf(\}

操作说明:

在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句 t=-t*x/i ;有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:计算多项式1-x+x*x/2!-x*x*x/3!+...的和直到末项的绝对值小于eps为止。例如:在程序中输入: 0 2 结果 :1。 答案:t=-t*x/++i; 运行样例1行

运行样例1: 3 0.1 结果:0.302902

2.该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。 #include #include void main()

{ char a[80]; int n[5]={0},i;

get(a); /*$1*/ for(i=0; a[i]!='\\0'; i++)

switch(tolower(a[i])) { case 'a': n[0]++; break; case 'e': n[1]++; break; case 'i': n[2]++; break; case 'o': n[3]++; break;

case 'u': n[4]++; break; }

for(i=0;i<5;i++) printf(\

3

}

操作说明:

在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句 get(a); 有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。例如:在程序中输入: apple 结果:1 1 0 0 0 答案:gets(a); 运行样例1行

运行样例1:apple 结果:1 1 0 0 0

3. 该程序功能:运行时若输入a、n的值分别为3、6,则输出表达式3+33+333+3333+33333+333333的值。

#include void main() { int i,a,n,t=0;

int s=0; scanf(\ for(i=1;i<=n;i++)

{ t=t*10+i; /*$1*/ s=s+t; }

printf(\}

操作说明:

在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句 t=t*10+i; 有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:根据输入情况来输出一个表达式的值。例如:在程序中输入: 3 3 ,结果为表达式 3+33+333的值:369。 答案:t=t*10+a;

运行样例1行

运行样例1:3 3 结果:369

4. 以下函数mystrcat(str1,str2)的作用是:把字符串str2连接到字符串str1后面,形参str1和str2用指针实现。 #include

void mystrcat(char *str1,char *str2) { while(*str1!='\\0') str1++;

while(*str2!='\\0')

*str1=*str2; /*$1*/ *str1='\\0'; }

4

void main()

{ char str1[80],str2[80]; gets(str1); gets(str2); mystrcat(str1,str2); printf(\}

操作说明:

在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句*str1=*str2; 有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:运行时输入n,输出n各位数字之和。例如:在程序中输入:abc

123 结果:abc123。

答案:*str1++=*str2++; 运行样例3行 运行样例1:abc defg

结果:abcdefg

五、程序填空( 评分标准 10 分,每小题5分)

1. 下列程序功能:找一个数的所有因子加起来正好是它自己本身的数,运行结果为:6 。请添加程序中空缺的语句。 #include void main() { int i,j,s;

for(i=6;i<=10;i++) { s=0; for(j=1; j

/*$1*/

if(s==i)

printf(\

} }

操作说明:

在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:找一个数的所有因子加起来正好是它自己本身的数,运行结果为:6。 答案:s+=j;

运行样例1行

运行样例1: 结果:6

5

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

Top