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 <stdio.h>
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, ""Windows"")));语句后的输出结果为________。
(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;
则下面的叙述中不正确的是( )。
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("%s", s);,能把一串字符: How do you do?<回车>全部输入。
8. 若打开文件的方式为“r”而该文件已经存在,则文件中原有数据被清空。
9. 定义语句为“char a[10];”,执行下列语句后的输出结果为10,7。
printf("%d,%d\n",sizeof(a),strlen(strcpy(a,"Windows")));
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<b)?a:b)<c)?y:c 的值为________。
4. 3&5、3|5、3||5 的值分别为_______、_______、_______。
5. 字符串常量“people”在内存中占用的字节数是________。
第7套 | (1) | strcpy | (2) | 11,11,6 | (3) | -17 | (4) | 1、7、1 | (5) | 7 |
四、程序改错题 ( 评分标准 20 分,每小题 5分 )
1. 该程序功能:输入x、eps,计算多项式1-x+x*x/2!-x*x*x/3!+...的和直到末项的绝对值小于e
ps为止。
#include <stdio.h>
#include <math.h>
void main()
{ float x,eps,s=1,t=1,i=1;
scanf("%f %f",&x,&eps);
do{
t= -t*x/i; /*$1*/
s+=t;
}while(fabs(t)>=eps);
printf("%f\n",s);
}
说明:
该程序中“/*$1*/”行中的语句 t=-t*x/i ;有错误,请改正(注意:不得加行、减行、加句、减句)。
运行样例1: 3 0.1 结果:0.302902
答案:t=-t*x/++i;
2.该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。
#include <stdio.h>
#include <ctype.h>
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("%d ",n[i]);
}
说明:
该程序中“/*$1*/”行中的语句 get(a); 有错误,请改正(注意:不得加行、减行、加句、减句)。
运行样例1:apple 结果:1 1 0 0 0
答案:gets(a);
3. 该程序功能:运行时若输入a、n的值分别为3、6,则输出表达式3+33+333+3333+33333+333333的值。
#include <stdio.h>
void main()
{ int i,a,n,t=0;
int s=0;
scanf("%d%d",&a,&n);
for(i=1;i<=n;i++)
{ t=t*10+i; /*$1*/
s=s+t;
}
printf("%d\n",s);
}
说明:
该程序中“/*$1*/”行中的语句 t=t*10+i; 有错误,请改正(注意:不得加行、减行、加句、减句)。
运行样例1:3 3 结果:369
答案:t=t*10+a;
4. 以下函数mystrcat(str1,str2)的作用是:把字符串str2连接到字符串str1后面,形参str1和str2用指针实现。
#include <stdio.h>
void mystrcat(char *str1,char *str2)
{ while(*str1!='\0')
str1++;
while(*str2!='\0')
*str1=*str2; /*$1*/
*str1='\0';
}
void main()
{ char str1[80],str2[80];
gets(str1);
gets(str2);
mystrcat(str1,str2);
printf("%s\n",str1);
}
说明:
该程序中“/*$1*/”行中的语句*str1=*str2; 有错误,请改正(注意:不得加行、减行、加句、减句)。
运行样例1:abc
defg
结果:abcdefg
答案:*str1++=*str2++;
五、程序填空( 评分标准 10 分,每小题5分)
1. 下列程序功能:一个数的所有因子加起来正好是它自己本身的数,运行结果为:6 。
#include <stdio.h>
void main()
{ int i,j,s;
for(i=6;i<=10;i++)
{ s=0;
for(j=1; j<i;j++)
if(i%j==0)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论