C语言期中试卷(含答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《C语言》课程期中考试试卷
一. 在A B C D四个选项中,选择一个正确的答案填入括号内
( )1、用char定义的变量在IBM PC机中能表示的数的范围是:
A) 0 ~+255 B) 0 ~+65535
C) -128 ~+127 D) 只能存字符,不能存数
( )2、设有int k=2; 则执行printf(“%d”,k++);的输出为:
A) 0 B) 1 C) 2 D) 3
()3、在while(!x)中,!x与______等价。

A) x==0 B) x!=0 C) x==1 D) x!=1
()4、设有声明int value=’5’;,则执行下列选项的赋值语句后,value的值不等于5的是_____。

A.) value=value - ’0’; B) value=value - 0x30;
C) value=value - 49; D) value=value - ’\060’;
()5、如int k=7;float x=2.5,y=4.7; 则表达式 x+k%3*(int)(x+y)%2/4 运算后的值是:
A) 0 B) 2 C) 2.5 D) 2.75
( ) 6、若有int a,b;则语句:printf("%d",(a=2)&&(b=-2);的输出结果是:
A)无输出 B)结果不确定 C)-1 D)1
( ) 7、设有int a=2; 则执行printf("%d",5>a>1);的输出为:
A)0 B)1 C)2 D)3
( ) 8、执行语句c=(a=2,a+1,b=a++);后, a,b,c的值依次为:
A)2,3,4 B)3,3,3 C)4,5,4 D)3,2,2
( )9、以下程序的输出结果是
A)2 0 B)3 1 C)3 2 1 D)2 1 0
main( )
{ int n=4;
while(n--)printf("%d ",--n);
}
( )10、给出以下定义:
char x[ ]="abcdef";
char y[ ]={'a','b','c','d','e','f'};
则正确的叙述为
A) 数组x和数组y等价 B) 数组x和数组y的长度相同
C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度
( )11、若对一个函数调用在前, 定义在后,C语言将视其返回值为__________类型。

A) void B) int C) float D) 不合法
( )12、如果用数组名作为函数调用的实参, 传递给形参的是_________。

A) 数组的首地址 B) 数组元素的个数
C) 数组的第一个元素的值 D) 数组中全部元素的值
二、填空题
1.C语言中的标识符可以由三种字符组成,它们是_ __、__ 和_ _。

2. 关键字case和default只能在__ _ 语句中出现。

3. 若有说明int a [][4]={1, 2,3,4,5,6,7,8, 9};,则数组a第一维的大小是____。

4.有声明: int a[3][4]={{1,2},{3},{6,7,8,8}}; 则a[1][2]的初值是____,
a[2][1]的值是______。

三、阅读程序,写出其输出结果
1. 设输入为:3 3↙ (其中”↙”表示回车),则下面程序的输出是:___ ___
main()
{ int k,t,a,n; long s;
scanf(“%d%d”,&a,&n);
for(s=t=k=0;k<n;k++)
{ t=t*10+a;
s+=t;
}
printf(“s=%ld”,s);
}
2.若以下程序输入为5,8 ↙,则输出为: ___
swap(int x, int y)
{ int t;
t=x;x=y;y=t;
}
main()
{ int a,b;
scanf(“%d,%d”,&a,&b);
swap(a,b);
printf(“a=%d,b=%d”,a,b);
}
3. 设输入为: C++ ProGraming LangUage↙ (其中”↙”表示回车),下面C程序的输出是:__
_
#include <stdio.h>
main()
{ int n1,n2,n3; char ch;
n1=n2=n3=0;
while((c=getchar())!=’\n’)
if(c>=’A’&&c<=’Z’) n1++;
else if(c>=’a’&&c<=’z’) n2++;
else n3++;
printf(“n1=%d,n2=%d,n3=%d\n”,n1,n2,n3);
}
4.以下程序运行时,输出结果的第一行是,第二行是__ __ 。

#include <stdio.h>
void change(int x,int m)
{ char ch[]={’0’,’l’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’},b [80];
int i=0,r;
while(x)
{ r=x%m; x/=m;
b[i++]= ch[r];
}
for(--i; i>=0; i--)
printf(“%c”,b[i]);
}
main()
{ int a,b;
change(10,2);
printf(“\n”);
change(10,8);
}
四、完善程序
1、下面的程序读入数组元素值,然后以每行4个元素的形式输出。

#define N 20
main()
{ int a[N],i;
for (i=0; i<N;i++)
scanf(“%d”, ____);
for (i=0; i<N;i++)
{ if ( _ _ ) printf(“\n”);
printf(“%8d”, a[i]);
}
printf(“\n”);
}
2. 下面程序的功能是:使一个字符串按逆序存放,请填空
#include <stdio.h>
main()
{ char m,str[60]; int i,j;
printf(“input a string:”);
gets(str);
for(i=0,j=strlen(str)-1;i<_ __;i++,j--)
{ m=str[i];
str[i]=__ ___;
str[j]=m;
}
puts(str);
}
3. 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差, 如果两串相同,则返回0;例如:输入的两个字符串分别为abcdef和abceef,则输出为-1,请填空。

#include <stdio.h>
main()
{ char str1[100],str2[100],j;
int s;
printf("\n input string 1:\n"); gets(str1);
printf("\n input string 2:\n"); gets(str2);
j=0;
while((str1[j]==str2[j])&&(str1[j]!=__ _)) j++;
s=__ __;
printf("%d\n",s);
}
4. 以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。

例如:输入的字符
串为:556,则输出十进制整数366。

请填空。

#include <stdio.h>
main()
{ char s[6];
int i=0,n;
gets(s);
n=0;
while( s[i]!=0 ) _ ___;
printf("%d \n",n);
}
五、改错题
下面的程序中, a是输入数组, b是输出数组; 程序功能是找出数组a中所有素数,
若a中某个元素为素数, 则将输出数组相同位置处的元素置为’T’; 否则置为’F’。

如: 若输入数组为: 则输出数组为:
6 2 13 14 F T T F
16 15 25 67 F F F T
17 51 6 73 T F F T
81 11 21 19 F T F T
要求: 改错时, 可以修改语句中的一部分内容, 调整语句次序, 除了允许增加变量说明或编译预处理命令外, 不允许增加整条语句, 也不能删除整条语句。

#include <stdio.h>
#define N 4
main()
{int i, j, m, k, a [N][N];
char b[ ][N];
for(i=0; i<N; i++)
for(j=0; j<N; j++) scanf(“%d”, a[i][j]);
for(i=0; i<N; i++)
for(j=0; j<N; j++) b[i][j]=’F’;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
{m=(int)sqrt(a[i][j];
for(k=2; k<=m; k++)
if(a[i][j]%k=0) break;
}
if (k<m) b[i][j]=’T’;
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf(“%5c”, b[i][j]);
printf(“\n”);
}
}
六、编制C语言程序(共26分)
1、用递推法求1+1/2!+1/3!+1/4!+……的前30项之和。

2、输入50个学生的某门课程成绩,计算出平均成绩(取两位小数),并统计出不及格(低于60
分)的人数。

3、求1~99之间的所有同构数。

同构数是其值等于其右边数字平方数的整数。

如25, 36都
是同构数(25=52, 36=62)。

要求程序中判断1个整数是否是同构数的功能用函数实现。

参考答案:
一.选择题:
1~5:CCACC 6~10:DADAC 11~12:B
二.填空题:
1、字母、下划线、数字字符;
2、switch;
3、3;
4、0,7
三.阅读程序,写出其输出结果:
1、s=369;
2、a=5, b=8;
3、n1=5,n2=14,n3=4;
4、100,12;
四、完善程序:
1、&a[i],i%4==0;
2、j,str[j];
3、’\0’,str1[j]-str2[j];
4、n=n*8+s[i++]-‘0’;
五、改错题:
#include <stdio.h>
#define N 4 插入: #include <math.h>
main()
{int i, j, m, k, a [N][N];
char b[ ][N]; 改: b[N][N]
for(i=0; i<N; i++)
for(j=0; j<N; j++) scanf(“%d”, a[i][j]); 改: &a[i][j]
for(i=0; i<N; i++)
for(j=0; j<N; j++) b[i][j]=’F’;
for(i=0; i<N; i++)
for(j=0; j<N; j++)
{m=(int)sqrt(a[i][j]; 改:m=(int)sqrt(a[i][j]);
for(k=2; k<=m; k++)
if(a[i][j]%k=0) break; 改: a[i][j]%k= =0 }
if (k<m) b[i][j]=’T’; 改:if (k>m) b[i][j]=’T’;
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf(“%5c”, b[i][j]);
printf(“\n”);
}
}
六、编制C语言程序
1、#include <stdio.h>
main()
{ int n=1,i;
float t=1,s=0;
for(i=1; i<=30; i++)
{ s+=t;
t=t/++n;
}
printf(“s=%f”,s);
}
2、#include <stdio.h>
main()
{ int a[50],n,i; float av,s;
n=0; s=0;
for(i=0; i<50; i++)
{ scanf(“%d”,&a[i]);
if(a[i]<60) n++;
s+=a[i];
}
printf(“平均数为:%.2f\n”,av);
printf(“不及格人数=%d\n”,n);
}
3、#include <stdio.h>
int istong(int m)
{ int k;
k=m%10;
if(k*k==m) return (1);
else return (0);
}
main()
{ int i;
for(i=1; i<100; i++)
if(istong(i)) printf(“%d, “,i);
}。

相关文档
最新文档