c语言期末试卷B卷(附答案)
更新时间:2024-03-21 12:11:01 阅读量: 综合文库 文档下载
一、单项选择题(每小题2分,共30分)
1. 下列关于C语言用户标识符的叙述中正确的是( B )
(A)用户标识符中可以出现在下划线和中划线(减号) (B)用户标识符中不可以出现中划线,但可以出现下划线
(C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头
(D)用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头
2. 在C语言中,合法的字符常量是( A )
(A)’\\087’ (B)’\\x43’ (C)’abe’ (D)”\\0”
3. x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是( B )
(A) INPUT x、y、z; B)scanf(“%d%d%d”,&x,&y,
(C) scanf(“%d%d%d”,x,y,z); (D)(scanf(“%d%d%d”,&x,y,&z); 4. 若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a
(A) 1 (B) 2 (C) 3 (D) 4 5. 设有:int a=3,b=2,c=6,d=4,m=2,n=3;执行 ((m=a>b) || (n=c>d)) 后n的值为 ( B )
(A) 0 (B) 1 (C) 2 (D) 3
6. 若a为int类型,且其值为3,则执行完a*=a+=a*a;后,a的值是 ( D )
(A) –3 (B) 9 (C) –12 (D) 144
7. 设int a=12,b=8;则a/b的结果为:( B )
(A) 1.5 (B) 1 (C) 3/2 (D) 2
8. 若定义:int a=511,*b=&a; 则printf(\的输出结果为(D)
(A) 无确定值 (B) a的地址 (C) 512 (D) 511
9. 在C语言中,引用数组元素时,其数组下标的数据类型允许是 ( C )
(A) 整型常量 (B) 整型表达式
(C ) 整型常量或整型表达式 (D) 任何类型的表达式
10. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( B )
(A) 地址传递 (B) 单向值传递
(C) 由实参传给形参,再由形参传回实参 (D) 传递方式由用户指定
11. 数字字符0的ASCII值为48,若有以下程序
main( )
{ char a='1',b='2'; printf(\ printf(\}
程序运行后的输出结果是( A )
(A)3,2 (B) 50,2 (C)2,2 (D)2,50 12. 以下函数值的类型是( D )
fun ( float x ) { float y;
y= 3*x-4; return y; }
1
(A) int (B) 不确定 (C) void (D) float
13. 以下能正确定义一维数组的选项是( B )
(A) int a[5]={0,1,2,3,4,5}; (B)int a[]={0,1,2,3,4,5}; (C) char a={'A','B','C'}; (D)int a[5]=\
14. 有以下程序,结果为: ( D )
main( )
{ int a[5]={1,2,3,4,5}; int *pa=&a[1];
printf(“%d”,pa[2]);
}
(A) 3 (B) 4 (C) 5 (D) 2 15. 假设
struct student { int num;
float score;
} stu1;
则下列赋值语句中正确的是( C )
(A) student.score=85; (B) student={1001,95}; (C) stu1.num=1001; (D) stu1->num=1001;
二、判断题(对的打“√”,错的打“×”,每小题1分,共10分)
1. 定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。√
2. C语言中,若函数定义未给出返回值类型,系统默认为返回值类型为int类型。×
3. 全局变量的作用域一定比局部变量的作用域范围大。×
4. 对字符串”c program”进行完整赋值的操作是: ×
char str[9]=”c program” ;
5. 在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类型可以不相同×。
6. 若有定义int a[4][5];排列在数组中的第11个元素是a[3][1]。√
7. 存储字符串”\\’acd1\\376”需要的字节数为7个。×
8. 存储字符数组中的最后一个字符必须是'\\0'。√
9. 在一个函数内定义的变量只能在本函数范围内有效。√
10.设int m=7; float n=3.5;执行m-=m-!n后, m的值是1。√
三、写出下列程序段的输出结果(每小题5分,共20分)
1. 有下列程序段,请写出运行结果。
#include
2
{ int i=0,a=0; while(i<20) { for(;;)
{ if ((i)==0) break; else i--; }
i+=11; a+=i; }
printf(\}
2. 有下列程序段,请写出运行结果。
int f1(int x)
{ static int z=3; int y=0;
y++; z++;
return(x+y+z);
}
main( )
{ int a=1,k;
for(k=0;k<3;k++)
printf(“=”,f1(a)); }
程序运行后的输出结果是:
3. 有下列程序段,请写出运行结果。
main( )
{ char k; int i;
for(i=1;i<3;i++)
{ scanf(“%c”,&k); switch(k)
{ case ‘0’: printf(“another\\n”); case ‘1’: printf(“number\\n” ); } }
}
程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是:
4.有下列程序段,请写出运行结果。
void swap(int x,int y) { int t;
t=x;x=y;y=t;
printf(\}
main( )
{ int a=3,b=4; swap(a,b);
printf(\}
程序运行后的输出结果是:
3
四、程序填空题(每空2分,共20分)
1.输入整数a和b,若a*a+b*b>100,则输出a*a+b*b的结果,否则输出a+b的结果。 main( )
{ int a,b,x,y;
scanf(“%d,%d”,__ ①_______); x=a*a+b*b;
if (____②________)
{ y=x;
printf(“\\n a*a+b*b>100,%d”,y);
}
else
printf(“\\n a*a+b*b<=100 %d”,_____ _③_______);
}
2.从键盘输入10个整数,统计其中整数,零和负数的个数并输出。 main( )
{ int a[10],i,s1,s2,s3;
s1=s2=s3=0;
for(i=0;i<10;i++)
scanf(“%d”,____ ④ _____); for(i=0;i<10;i++) if (a[i]>0) s1++;
else if (a[i]== 0)s2++;
else _____⑤___________;
printf(“\\npos==,zer0==,neg==”,s1,s2,s3); }
3. 将输入的十进制正整数n转换为二进制数,并将转换结果输出,转换方法采用”除二取余”法。 void transfer(int m)
{ int s[20],i;
for (i=0;m!=0;i++)
{ s[i]=_____ ⑥_______; m=m/2; }
for(;i!=0;i--)
printf(“%d”,____ ⑦______);
} main( ) { int n;
scanf(“%d”,&n);
_____⑧_____________ ;
} 4. mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。
int mystrlen(char str[ ]) { int i;
for(i=0; ⑨!=‘\\0';i++); return(⑩); }
五、编程题(20分)
1. 有数列sum=1!+2!+3!+4!+5!+6!+??,编程实现:
(1)编写一个函数,求sum的前n项和,例如: n=3时,sum=1+2+6=9。 (2)在主函数中输入n,调用上面的函数并输出结果。
2.从键盘输入十个整数存入数组a中,并编程实现:
4
(1)将最大值存入max中,将最小值存入min中,并输出它们的值。 (2)将数组a按从小到大排序,并输出排序后数组的值。
xxxx期末考试试卷( B 卷)
2005学年第1学期 考试科目: 程序设计
一、单项选择题(每小题2分,共30分) 1 B 2 B 3 B 4 6 11 D C 7 12 B A 8 13 D B 9 14 A C B 5 10 15 D B C 二、判断题(对的打“√”,错的打“×”,每小题1分,共10分) 1 × 2 √ 3 × 4 × 5 √ 6 × 7 √ 8 × 9 √ 10 × 三、写出下列程序段的输出结果(每小题5分,共20分) 1、
a = 32
评分细则:直接写32,给4分 2、
6 7 8
评分细则:写对一个数给1分,三个全对给5分。 3、
another mumber mumber
评分细则: 写在一起,没换行扣1 4、
4 3 3 ,4
评分细则:写对一行,扣3分
四、程序填空题(每空2分,共20分) 1、
① &a, &b ② x>100或a*a+b*b>100 2、
③ a+b
④ &a[i] ⑤ s3++
5
3、
⑥ m%2 ⑦ s[i-1]
⑧ transfer(n) 4、
⑨ str[i]
⑩ i
五、编程题(20分)
1、 10分 main() {
int sumall(int a); int n,sum;
printf(\ scanf(\ sum=sumall(n);
printf(\}
int sumall(int a) {
int i,s1=1,sum=0; for(i=1;i<=a;i++) {s1=s1*i;
sum=sum+s1;} return(sum); }
评分细则:第一问5分,第二问5分;
如程序都正确但没有使用函数形式则扣2分。
2、 10分 main()
{ int a[10],i,j,max,min,t;
printf(\ for (i=0;i<10;i++) scanf(\ max=min=a[0]; for (i=1;i<10;i++)
{ if (maxa[i]) min=a[i];}
printf(\ for (j=0;j<9;j++) for(i=0;i<9-j;i++) if (a[i]>a[i+1])
{ t=a[i];a[i]=a[i+1];a[i+1]=t;} printf (\ for (i=0;i<10;i++)
6
printf(“%d”,a[i]);}
三. 编程题 1.编程计算 2+4+6+8+…+96+98+100 的值 .
void main ( ) { int i, sum=0; for (i=0 ; i<100 ;i+=2) sum+=i; printf(“sum=%d\\n“ , sum); } 都行,只要完成功能就可以。 注:用 while、do-while 或 goto 都行,只要完成功能就可以。 、
2.从键盘输入 10 个数,编程实现将其中最大的数与最小的数位置对换后,再输出调整后的数组。 . 个数,编程实现将其中最大的数与最小的数位置对换后,再输出调整后的数组。 void main ( ) { int a[10] , max=0 ,min=0 , i, t; for (i=0 ; i<10 ;i++) scanf (“%d”, &a[i]); for(i=0 ; i<10 ;i++) { if ( a[max] < a[i]) max = i; if( a[min] > a[i]) min =i ; } t = a[min]; a[min] = a[max]; a[max] = t; for (i=0 ; i <10 ;i++) printf(“%d “ , a[i]); } 8
四、写出程序运行的输出结果(20分) 1. main()
{ int a=6,b=4; a = a+b; b = a?b; a = a-b;
printf(“a=%d, b=%d”, a, b); }
答案:a=4,b=6
2. main() { int m,n;
for (m=5;m<=10;m++) for (n=2;n<=m-1;n++) if (m%n==0)
printf(“%d\\t”,m); }
考察学生对循环结构嵌套、循环终止条件并非固定常数等知识的理解 答案:6 6 8 8 9 10 10 3.main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10}; int i;
7
for (i=2;i<=8;i++)
{a[i]=a[10-i]; a[10-i]=a[i];} for (i=1;i<=9;i++) printf(“%d ”,a[i]);
}
考察学生对数组在内存中的存放、下标、变量值对调等知识的理解 答案:2 9 8 7 6 7 8 9 10 4. int func(int b) { int a; a=b+100; return (a); }
main() { int a,b;
a=1;
b=func(a);
printf(“a=%d,b=%d ”, a,b); }
考察学生对“局部变量”的理解。 答案:a=1,b=101
五、编程(20分)
1、 输入一个字符串(字符数不超过20),按照如下要求生成一个新的字符串:
1) 新生成的字符串只包含原字符串的英文字母; 2) 将原字符串的所有小写字母转换成大写字母; 最后输出新生成的字符串内容。 答案:
#include \main() {
char s1[21]; char s2[21]; int i,n=0;
printf(\ gets(s1);
for (i=0; i<=strlen(s1); i++) {
if ((s1[i]>='a' && s1[i]<='z') ||
(s1[i]>='A' && s1[i]<='Z') || s1[i]== '\\0')
s2[n++] = s1[i]; }
strupr(s2);
printf(\ printf(\}
2、有一个4X4的整数型二维数组所组成的矩阵,完成如下功能:
1)编写一个函数maxelement(),函数参数是该二维数组名,函数值是该数组所有元素中的
最大值。
2)完成主函数,先从键盘输入该数组的数值,然后调用上述函数求出该数组所有元素的最大值,最后在主函数输出结果。
8
答案:
int maxelement(int arr[][4]) {
int i,t; int max;
max = arr[0][0]; for(i=0;i<4;i++) {
for(t=0;t<4;t++) {
if(max
max = arr[i][t]; } } }
return max; }
main() {
int array[4][4]; int i,t;
for(i=0;i<4;i++) {
for(t=0;t<4;t++) {
scanf(\ } }
printf(\}
1.
一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是 ( ) A、 C语言简洁、紧凑
B、 能够编制出功能复杂的程序 C、 C语言可以直接对硬件进行操作 D、 C语言移植性好
2、以下不正确的C语言标识符是 ( ) A、 ABC B、 abc C、 a_bc D、 ab.c 3、一个C语言程序是由 ( ) A、 一个主程序和若干子程序组成 B、 函数组成
C、 若干过程组成 D、 若干子程序组成
4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是 ( ) A、 有零个或多个输入 B、 有零个或多个输出 C、 有穷性
9
D、 可行性
5、 设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为 ( ) A、 int B、 float C、 double D、 不确定
6、在C语言中,char型数据在内存中的存储形式是 ( ) A、 补码 B、反码 C、源码 D、ASCII码
7、有如下程序,输入数据:12345M678<cR>后(
scanf(\}
A、 12345 B、 123 C、 45 D、 345
8、若有以下定义int a,b; float x,则正确的赋值语句是 ( ) A、 a=1,b=2 B、 b++; C、 a=b=5 D、 b=int(x);
9、以下程序的执行结果是 ( ) #include
int i=10,j=10;
printf(\}
A、 11,10 B、 9,10 C、 11,9 D、 10,9
10、巳知字母A的ASCII码是65,以下程序的执行结果是 ( ) #include
char c1='A',c2='Y';
printf(\
A、 A,Y B、 65,65 C、 65,90 D、 65,89 11、下列运算符中优先级最高的是 ( ) A、 < B、 十 C、 % D、 !=
12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是 ( ) A、 ’x’&&’y’ B、 x<=y
C、 x||y+z&&y-z
D、 !((x<y)&&!z ||1)
13、判断char型变量cl是否为小写字母的正确表达式为 ( ) A、 ’a’<=c1<=f’z’ B、 (c1>=a)&&(c1<=z)
C、 (‘a’>=c1) (‘z’<=c1) D、 (c1>=’a’)&&(c1<=’z’) 14、字符串\在内存中占据的字节个数为 ( ) A、 0 B、 1 C、 2 D、 3
15、下面有关for循环的正确描述是( )
A、 for循环只能用于循环次数已经确定的情况 B、 for循环是先执行循环体语句,后判定表达式
10
。
C、 在for循环中,不能用break语句跳出循环体
D、 for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include
{int num=0; while(num<=2) {num++;
printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3 D、 1 2 3 4
17、以下描述正确的是 ( )
A、 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。
B、 do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。
C、 在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。 D、 do-while循环中,根据情况可以省略while。 18、以下对一维整形数组a的正确说明是 ( ) A、 int a(10); B、 int n=10,a[n]; C、 int n; D、 int a[10]; scanf(“%d”,&n); int a[n];
19、以下对二维数组a的正确说明是 ( ) A、 inta[3][]; B、 float a(3,4);
C、 double a[1][4]; D、 float a(3)(4);
20、若二维数组a有m列,则在a[j]前面的元素个数为 ( ) A、 j*m+i B、 i*m+j C、 i*m+j-1 D、 i*m+j+1
二、填空题(本大题共10空,每空2分,共20分)
1、结构化设计中的三种基本结构是 ___________________
2、在C语言中的实型变量分为两种类型,它们是________ 和 _________ 3、当a=5,b=4,c=2时,表达式 a>b!= c的值是 _______ 4、下列程序运行后的输出结果是 _____________ #include
int i,j;
for(i=4;i>=1;i--) {printf(\
for(j=1;j<=4-i;j++) printf(\
11
printf(\}
5、若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是___________ a[2][1]得到的初值是 ________________
6、在C语言中,二维数组元素的内存中的存放顺序是_______________
三、程序分析题(本大题共2题,每题4分,共8分,描述程序功能并写出程序执行结果) 1、#include
{int a,s,n,count; a=2;s=0;n=1;count=1;
while(count<=7) {n=n*a; s=s+n; ++count;} printf(“s=%d”,s); }
2、#include
{int a=[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j; for (i=0;i<3;i++) for(j=0;j<3;j++)
if (i==j) sum=sum+a[j]; printf(“sum=%d\\n”,sum); }
四、编程题(本大题共4题,每题8分,共32分)
1、编写摄氏温度、华氏温度转换程序。要求:从键盘输入一个摄氏温度,屏幕就显示对应的华氏温度,输出取两位小数。转换公式:F=(C+32)×9/5 。
2、试编程判断输入的正整数是否既是5又是7的正倍数。若是,则输出yes;否则输出no。 3、判断数m是否为素数(只能被1和它本身整除的整数)? 4、对15个数进行排序,按从小到大的顺序输出。
《C语言程序设计》期末考试试卷(A卷)评分标准及标准答案
一、单项选择题(本大题共20题,每题2 分,共40分) 1、 B 2、 D 3、 B 4、 B 5、 C 6、 D 7、 B 8、 B 9、 A 10、D 11、C 12、D 13、D 14、C 15、D 16、C 17、C 18、D 19、C 20、B
二、填空题(本大题共10空,每空2分,共20分) 1、 顺序结构 分支结构 循环结构
2、 单精度型(或:float型) 双精度型(或;double型] 3、 1 4、 * * * * * * * * * * 5、 0 6
6、 按行主顺序存放
三、程序分析题(本大题共2题,每题4分,共8分)
能正确表达出题目的含义、要求,即可得分,部分正确可按比例得分,否则不得分。
12
1、功能:求S=0+2+4+8+16+32+64+128 和。 输出结果:s=254
2、功能:出矩形阵a的主对角线上的元素之和。 输出结果:27
四、编程题(本大题共4题,每题8分,共32分)
能正确表达出题目的含义、要求,且格式正确,即可得满分,不要求形式完全相同。部分正确可按比例得分,否则不得分。 1、 #include
{ float c,f;
printf(\?????????????????.2分 scanf(\?????????????????.2分
f= (c+32.0)*9.0/5.0; ?????????????????.2分 printf(\?????????????????.2分 }
2、#include
scanf(\?????????????????.2分 if(x%5==0&&x%7==0) ?????????????????.2分 printf(\?????????????????.2分 else
printf(\?????????????????.2分 }
3、 # include
{int m,i,k;
scanf(\
k=sqrt(m); ?????????????????.2分
for(i=2;i<=k;i++)?????????????????.2分 {if(m%i==0)
break; ?????????????????.2分 }
if(i>k)
printf(\?????????????????.2分 }
4、 # include
{int i,j,a[15],t;
printf(\for(i=0;i<15;i++)
13
scanf(\?????????????????.2分
for(j=0;j<15;j++)?????????????????.2分 for(i=0;i<15-j;i++)?????????????????.2分 if(a>a[i+1])
{t=a;a=a[i+1];a[i+1]=t;} ?????????????????.2分
for(i=0;i<15;i++) printf(\}
14
正在阅读:
c语言期末试卷B卷(附答案)03-21
【创想智慧城市研究中心】中国智能电表市场分析与投资策略研究报04-07
2018中国十大塑料机械品牌排行榜-塑料机械品牌厂商05-01
武汉大学哲学专业十年试题(打印版)05-17
宝鸡市住房公积金贷款知识(在建商品房(期房)抵押担保)02-21
《奇迹男孩》观后感19篇12-11
幼儿园小班安全教案08-01
工程测量试题及答案09-28
国际收支统计监测系统06-30
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 期末
- 试卷
- 答案
- 语言
- 进口出口野生植物进出口管理行政许可事项申请表
- 七年级政治下册期中复习苏教版
- 2019年中秋节作文大全:中秋节新传
- 专利诉讼中立第三人制度设计研究
- 工程管理专业技能大赛方案
- 大学英语新世纪视听说第二册听力原文及答案免费
- (人教版)七年级下册教案:第六章第二节亚洲--自然环境-地形和
- 机械制造业财务报表分析
- 嵌入式系统概论课程大作业-程序设计说明书
- 安全员单项选择题
- 山西教师资格统考幼儿《保教知识与能力》必看考点:幼儿教育
- 2015—2016学年精编苏教版小学一年级数学下册期中测试卷
- 资源再生铝工业发展综述
- 第四届全国中小学“教学中的互联网搜索”优秀教学案例评选-初二
- 什么是管理模式
- 《开天辟地》教案
- (新北师大版)二年级数学上册期末试题(一)
- 广东省电子政务十一五规划(1)
- 尿素泵常见故障及解决方法
- 如皋强抓“五个环节”促进财政支农资金整合集聚成效明显