C语言上机考试试题1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。(tolower函数把一个大写字 母转化为相应的小写字母) #include <stdio.h> #include <ctype.h> void main() { char a[80]; int n[5]={0},i; gets(a); /* $1*/ 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*/”行是根据程序功能需要填充部分,请 完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负) 。该程序功能:分别统计字符 串中所有英文字母中的各元音字母个数(tolower 函数把一个大写字母转化为相应的小写字母)。 答案:for(i=0; a[i]!='\0'; i++) 运行样例 1 行 运行样例 1: abcde 结果:1 1 0 0 0 如果填空为:for(i=0; i<strlen(a); i++) 则需要加上:#include <string.h> 否则编译不能通过。 2. 本程序功能:输入n(0<n<10)后,输出1个数字金字塔。如输入n为4,则输出: 1 222 33333 4444444 #include <stdio.h> void main() { int i,j,n;
套数号
7 1. F 2. T 3. T 4. T 5. T 6. F
答案
7. F 8. F 9. F 10. T
三、填空题(4) ( 评分标准 10 分,每小题 2 分)
1. 判断变量 a、b 是否绝对值相等而符号相反的逻辑表达式为________。 2. 变量 a、b 中必有且只有一个为 0 的逻辑表达式为________。
结果:4
2. 以下程序输入数值 6,运行程序后输出结果 2 。 #include <stdio.h> void main() { int i=0,t=1,n; while( scanf("%d",&n),n<=0); while(!(t<=n&&t*2>=n)) { t=t*2; i--; /* $1 */ } printf("%d\n",i); }
四、程序改错题 ( 评分标准 20 分,每小题 5 分 )
1. 下列程序中输入 3214,则输出 4,即得到输入数值的位数。 #include <stdio.h> void main() { int n,k=0; scanf("%d",&n); while( n%10 ) { k++; n=n-10; /*$1 */ } printf("%d\n",k); } 操作说明: 在考生目录的**子目录下, 有*.c 文件, 该文件中“/*$1*/”行中的语句 n=n-10;有错误, 请改正 (注 意:不得加行、减行、加句、减句,否则后果自负) 。该程序功能:在程序中输入 n 位整型数值,得 到输入数值的位数。例如:在程序中输入 3214,得到输入数值的位数 4。 答案:n=n/10; 运行样例 1 行 运行样例 1: 3214
5
scanf("%d",&n); /* $1*/ { for(j=1;j<=n+1-i;j++) putchar(' '); for(j=1;j<=2*i-1;j++) putchar((char)(i+48)); putchar('\n'); } } 操作说明: 在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行是根据程序功能需要填充部分,请完 成程序填充(注意:不得加行、减行、加句、减句,否则后果自负) 。该程序功能:输入n(0<n<10) 后,输出1个数字金字塔。例如输入n为4,则输出: 1 222 33333 4444444 答案:for(i=1; i<=n; i++) 运行样例 1 行 运行样例1: 4 结果: 1 222 33333 4444444
4
误,请改正(注意:不得加行、减行、加句、减句,否则后果自负) 。该程序功能:运行程序后,得 输出结果为:49.455978。 答案:if(f(i)>max) max=(float)(f(i)); 运行样例 1 行 运行样例 1: 结果:49.455978
五、程序填空( 评分标准 10 分,每小题 5 分)
3
操作说明: 在考生目录的**子目录下,有*.c 文件,该文件中“/*$1*/”行中的语句 i--;有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负) 。该程序功能:运行程序后输入数值 6,得输出结果 2。 答案:i++; 运行样例 1 行 运。假设 n 为 5,下列程序的输出结果为: sum= -0.216667 #include <stdio.h> void main() { int k, flag=1,n; float s=0; scanf("%d", &n); for(k=1;k<n;k++) { s=s+(float)1.0*k/(k+1)*flag ; flag=-1 ; /* $1 */ } printf("sum=%f\n",s); } 操作说明: 在考生目录的**子目录下,有*.c 文件,该文件中“/*$1 * /”行中的语句 flag=-1;有错误,请改正 (注意:不得加行、减行、加句、减句,否则后果自负) 。该程序功能:在程序中输入一个正数 n 然 后输出求和后的结果。例如:在程序中输入 n 的值为 5,得到输出结果为: sum= -0.216667。 答案:flag=-flag ; 运行样例 1 行 运行样例 1: 5
2
3.
m 是值为两位数的整型变量,判断其个位数是奇数而十位数是偶数的逻辑表达式为________。
4. 求解赋值表达式 a=5+(c=6)后,表达式值、a、c 的值依次为________。 5. 求解赋值表达式 a=(b=10)%(c=6),表达式值、a、b、c 的值依次为________。 参考答案: 第6套 (1) a==-b (2) a==0&& (3) m/10%2 (4) b!=0||a!= ==0&& 0&&b== m%2==1 0 11,11,6 (5) 4,4,10,6
结果:sum=-0.216667
4. 以下程序运行后输出:49.455978。 #include <stdio.h> #include <math.h> #define f(x) x*x-5*x+sin(x) void main() { int i; float max; max=(float)(f(1)); for(i=2;i<=10;i++) if(f(i)>max) max=i; /* $1 */ printf("%f\n",max); } 操作说明: 在考生目录的**子目录下,有*.c 文件,该文件中“/*$1*/”行中的语句 if(f(i)>max) max=i;有错
C 语言上机考试试卷-1
2008.1.6
一、 选择题 ( 评分标准 20 分,每小题 2 分 )
1. C 语言规定:在一个源程序中,main 函数的位置 。 (A) 必须在最开始处 (B) 必须在系统调用的库函数的后面 (C) 可以在任意位置 (D) 必须在最后 2. 在 C 语言中,int、char 和 short 三种类型数据在内存中所占的字节数 (A) 由用户自己定义 (B) 都是 2 个字节 (C) 是任意的 (D) 由所用的计算机的字长决定 3. 假设所有的变量都是 int 型,则表达式 ( a=2,b=5,b++,a+b) 的值是 (A) 7 (B) 8 (C) 6 (D) 2 4. 判断 char 型变量 ch 中的字符是否为小写字母的正确表达式是 (A) ‘a’ <= ch <= ’z’ (B) (‘a’ <= ch) && (ch <= ’z’) (C) (a <= ch) && (ch <= z) (D) (‘a’ <= ch) AND (ch <= z’) 5. C 语言中 while 和 do-while 循环的主要区别是 。 (A) while 的循环体可能一次也不执行 (B) while 的循环控制条件比 do-while 的严格 (C) do-while 允许从该语句的外部跳转到循环体内 (D) do-while 的循环体不能是复合语句 6. 若有说明 int a[3][4],则对 a 数组元素的正确引用是 。 (A) a[2][4] (B) a[1,3] (C) a (2)(1) (D) a[1][3] 7. 下面程序中有错误的行是 。 (每行最前面的数字代表行号) 1 2 3 4 5 6 7 8 } (B) 5 。 (C) 7 (D) 6 (A) 3 main( ) { int a[3] = {1,2}; int j; a[2] = 5; for (j=0, j<3, j++) a[0] = a[0] +a[j]; printf(“a[0]=%d\n”,a[0]);

。 。
8. 对以下语句的正确理解是 int a[10] = {5, 6, 7, 8, 9, 10};
(A) 将 6 个初值依次赋给 a[1] 到 a[6] (B) 将 6 个初值依次赋给 a[0] 到 a[5] (C) 将 6 个初值依次赋给 a[5] 到 a[10] (D) 因为数组长度与初值个数不同,所以此语句不正确
六. 程序设计 ( 评分标准 20 分,每小题 10 分)
1. 操作说明: 编制函数,其功能是在 float 类型 1 维数组中查找最大值、最小值,并将它们返回到调用程序, 并输出,题目要求用 scanf()函数输入 7 个实数数值。 参考答案: #include <stdio.h> #include <stdlib.h> void find(float num[],int n,float *min,float *max); void main() { int i; float min=10000.0,max=0,num[7]; for(i=0; i<7; i++ ) scanf(“%f”,&num[i]); find(num,7,&min,&max); printf("%.1f %.1f",max,min); } void find(float num[],int n,float *min,float *max)
7. 函数原型为“void sort(float a[], int n)”,调用该函数时,形参数组 a 被创建,实参数组各元素的值被 复制到 a 数组各元素中。 8. 若打开文件的方式为“r”而该文件已经存在,则文件中原有数据被清空。 9. 语言程序的三种基本结构是顺序结构、IF 结构和循环结构。 10. 在 C 语言程序中,在 main 函数中定义的变量称为局部变量。

套数号
1 1. C 2. D 3. B 4. B 5. A 6. D
答案
7. B 8. B 9. D 10. A
二、判断题 ( 评分标准 20 分,每小题 2 分)
1. 若表达式 sizeof(int)的值为 4,则 int 类型数据可以表示的最大整数为 232。 2. 在所有的关系运算符(>=、>、==、 !=、<=、<)中,优先级最低的运算符是“==、 !=”。 3. 标准输入函数 scanf 的返回值为所输入数据的个数或 EOF。 4. 若 x 的当前值为 5,执行语“if(x==3) x=x+5;”后,x 的值依然是 5。 5. 若 s 的当前值为 0,执行循环语句“for(i=1; i<10; i=i+2) s+=i;”后,i 的当前值为 11。 6. a 是一维数组名,数组元素 a[1]还可以写作“*(a++)”。
1
9. 有两个字符数组 a、b,则以下正确的输入语句是 (A) gets(a,b); (C) scanf(“%s%s”,&a,&b); 10. 以下正确的函数定义是 (A)double fun(int x, int y) { double z; z=x+y; return z; } (B) fun(int x, y) { int z; return z; } (C) fun(x, y) { int x,y; double z; z=x+y; return z; } (D) double fun(int x, int y); { double z; z=x+y; return z; } (B) scanf(a,b); (D) gets(a); 。 gets(b);
相关文档
最新文档