C语言上机考试试题7
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
果自负)。该程序功能:分别统计字符串中所有英文字母中的各元音字 母个数。例如:在程序中输入: 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 <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); } 操作说明: 在考生目录的**子目录下,有*.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 <stdio.h> void mystrcat(char *str1,char *str2) { while(*str1!='\0') str1++; while(*str2!='\0')
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"")));语句后的输出结果为________。
scanf("%f %f",&x,&eps); do{ t= -t*x/i; /*$1*/ s+=t; }while(fabs(t)>=eps); printf("%f\n",s); } 操作说明: 在考生目录的**子目录下,有*.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 <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]); } 操作说明: 在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句 get(a); 有错误,请改正(注意:不得加行、减行、加句、减句,否则后
printf("%d,%d\n",sizeof(a),strlen(strcpy(a,"Windows"))); 10. 在C语言程序中,在main函数中定义的变量称为局部变量。
套数 号
答案
71.T 2.T 3.T 4.F 5.F 6.F 7.F 8.F 9.T 10.T
三、填空题(1) ( 评分标准 10 分,每小题2 分)
套数 号
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。
五、程序填空( 评分标准 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) /*$1*/ if(s==i) printf("%d\n",s);
*str1=*str2; *str1='\0';
/*$1*/
} void main() { char str1[80],str2[80]; gets(str1); gets(str2); mystrcat(str1,str2); printf("%s\n",str1); } 操作说明: 在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语 句*str1=*str2; 有错误,请改正(注意:不得加行、减行、加句、减句, 否则后果自负)。该程序功能:运行时输入n,输出n各位数字之和。例 如:在程序中输入:abc 123 结果:abc123。 答案:*str1++=*str2++; 运行样例3行 运行样例1:abc defg 结果:abcdefg
} } 操作说明: 在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行是根据 程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加 句、减句,否则后果自负)。该程序功能:找一个数的所有因子加起来 正好是它自己本身的数,运行结果为:6。 答案:s+=j; 运行样例1行 运行样例1: 结果:6 2. 对整个数组向左循环走动(K标识为循环次数),如:数组走动 一次,则左边第一个数在最后一个位置,而第二个数在第一个位子上。 下列程序运行结果:4 5 6 7 1 2 3。请添加程序中空缺的语句。 #include <stdio.h> void f(int *a,int n,int k) { int i,j,t; for(i=0;i<k;i++) { t=a[0]; for(j=1;j<n;j++) /*$1*/ a[n-1]=t; } } void main() { int i,x[7]={1,2,3,4,5,6,7}; f(x,7,3); for(i=0;i<7;i++) printf("%5d",x[i]); printf("\n"); } 操作说明: 在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行是根据 程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加 句、减句,否则后果自负)。该程序功能:对整个数组向左循环走动 (K标识为循环次数),如数组走动一次,则左边第一个数成最后一个 位置,而第二个数在第一个位子上。数组中各元素的值为:
1. 设char ch;,写出若ch为大写字母,则改为小写字母,否则不变的条件 表达式为_______。 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. 已知int a, b, t;,并已赋好值,写出如果a大于b,则交换它们值的C语 句:________。 第 (1) ch>=’A’&&ch<=’Z’? (2) 11,11,6 (3) -17 (4) 1、 (5) if(a>b) 7 ch=ch+32:ch=ch 7、 { t=a; 套 1 a=b; b=t;}
(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
四、程序改错题 ( 评分标准 20 分,每小题 5分 )
1. 该程序功能:输入x、eps,计算多项式1-x+x*x/2!-x*x*x/3!+...的和直 到末项的绝对值小于eps为止。 #include <stdio.h> #include <math.h> void main() { float x,eps,s=1,t=1,i=1;