当前位置:文档之家› C语言程序设计试题与答案-4

C语言程序设计试题与答案-4

C语言程序设计试题与答案-4《C语言程序设计》试题(闭卷)一、单项选择题:(每题 2 分,共 30 分)1. C 语言规定:在一个源程序中,main函数的位置_____________。

A. 必须在最开始B.必须在系统调用的库函数的后面C. 可以任意D.必须在最后2. 下列说法中错误的是_____________。

A. 主函数可以分为两个部分:函数头和函数体B. 主函数可以调用任何非主函数的其他函数C. 任何非主函数可以调用其他任何非主函数D. 程序可以从任何非主函数开始执行3. 用 C 语言编写的源文件经过编的值是_____________。

A. 1,1B. 0,1C.1,0 D. 0,08. sizeof (char)的结果值是_____________。

A. 4B. 2C. 1D.出错9. 设 a 为整型变量,不能正确表达数学关系:10<a<15的 C 语言表达式是_____________。

A. 10<a<15B. a= =11|| a= =12 || a= =13 ||a= =14C. a>10 && a<15D. !(a<=10) && !(a>=15)10. 要为字符型变量 a赋初值,下列语句中哪一个是正确的_____________。

A. char a="3";B.char a=’3’;C. char a=%;D.char a=*;11. 设有定义:char s[12] ="STRING" ; 则printf( "%d\n",strlen(s)); 的输出是_____________。

A. 6B. 7C. 11D. 1212. 合法的数组定义是( )。

A. int a[3][ ]={0,1,2,3,4,5};B. int a[ ][ ] ={0,1,2,3,4};C. inta[2][3]={0,1,2,3,4,5,6};D. int a[2][3]={0,1,2,3,4,5,};13. 函数在定义时,省略函数类型说明符,则该函数值的类型为。

A. voidB. intC. floatD. double14. 若有定义:int x,*pb;以下正确的赋值表达式是___________。

A. pb =&xB. pb =xC. *pb =&xD. *pb=*x15. 有以下说明和定义语句(int在内存中占4B)Union Student{ char name[20];int age;float scor[3];}st;则sizeof(st)的值为_____________。

A.4 B. 12C. 20D. 361. C 语言中,源程序的基本单位是子函数。

( )2. C 是一个结构化的程序设计语言。

( )3. 运算符“%”要求两个操作数都是整型。

( )4. 变量名是由字母、数字、下划线构成的,长度不限。

( )5. 条件运算符是一个三目运算符。

( )6. 一维数组的下标在任何情况下,都不可以省略。

( )7. 循环结构中,执行continue 语句表示结束整个循环。

( )8. 数组的下标必须是整型常量或常量表达式。

( )9. putchar ()函数的作用是输出一个字符串。

( )10. 函数类型省略,系统会默认为void 。

( )二、判断题:(每题 1 分,共 10 分)1. 求m 和n 的最小公倍数#include<stdio.h>void main(){int m,n,i;printf("请输入两个整数m 和n :\n"); scanf("%d,%d",&m,&n);for(______________________;i++)if(_________________________) {printf("%d 和%d 的最小公倍数为:%d\n",m,n,i);_________________________}}三、程序填空:(每空3分,共 18 分)2. 求 1+1/2+1/3+……+1/100#include<stdio.h>void main(){int i;float s;_____________________________for(_______________________________) _____________________________ printf("1+1/2+1/3+……+1/100的值为:%.2f\n",s);}1.#include<stdio.h>#include<math.h>四、程序分析题:(每题6 分,共 12 分)void f1( int x, int y, intz ){ float y1,y2;y1=(-y+sqrt( z )) /(2.0*x);y2=(-y-sqrt( z )) /(2.0*x);printf("y1=%.2fy2=%.2f\n",y1,y2);}void f2(int x, int y){ printf("y1=y2=%.2f\n", -y/(2.0*x));}void f3( ){ printf("no\n");}void main(){ int a,b,c,d;printf("pleaseinput :a,b,c\n");scanf("%d,%d,%d",&a,&b,&c);d=b*b-4*a*c;if(d>0)f1( a,b,d);elseif(d==0)f2(a,b);elsef3();}程序功能:程序输入: 1,-6, 8程序执行结果:2.#include <stdio.h>#define M 3#define N 4void main (){ int a[M][N],b[N][M],i,j;printf("请输入矩阵a:\n");for(i=0;i<M;i++)for(j=0;j<N;j++){ scanf("%d",&a[i][j]);b[j][i]=a[i][j];}printf("矩阵b:\n");for(i=0;i<N;i++){ for(j=0;j<M;j++)printf("%5d",b[i][j]);printf("\n");}}程序功能:输入数据: 1 5 7 93 6 8 24 7 1 8执行结果:注意:算法要求写在试卷上。

1. 设计一个简单的超市收银系统。

(输入商品购买的数量和单价,显示总付款、实付款与找零)2. 求1000以内的完数,并统计个数。

五、算法设计与程序实现(每题15分,共 30 分)参考答案一、单项选择题:(每题2 分,共 30分)1. C2. D3. A4. C5. B6. A7. D8. C9. A 10.B11.A 12. D 13.B14.A 15.C二、判断题:(每题 1 分,共10 分)1.×2. √3. √4. ×5. √6. ×7. ×8. √9. × 10. ×三、程序填空题:(每空3 分,共18分)1. i=m;i<=m*n i%m= =0 && i%n= =0 break;2. s=1; i=2;i<=100;i++ s=s+1.0/i;四、程序分析题:(每题6 分,共12分)1.程序功能:一元二次方程求解。

程序执行结果:y1=4,y2=22.程序功能:矩阵转置。

程序执行结果:1 3 45 6 77 8 19 2 8五、算法设计与程序实现:(每题15分,共30分)1.算法:S1:输入商品的单价price和购买数量m;S2:若price或m为0,则执行s6;S3:求价格之和。

sum=sum+price*m;S4:求商品数量之和。

count=count+m;S5:执行s1;S6:输出购买商品的数量count和总额t_price;S7:输入实付款money;S8:输出找零change=money-t_price算法:#include <stdio.h>void main(){ int m,count=0;floatprice,t_price=0,money,change;printf("请输入购买商品的单价和数量:\n单价数量\n");do{scanf("%f %d",&price,&m);if(price==0||m==0)break;t_price=t_price+m*price;count=count+m;}while(1);printf("\n\n\n********************\n ");printf("购买商品:%d 个应付款:%.2f\n",count,t_price);printf("实付款:");scanf("%f",&money);change=money-t_price;printf("找零:%.2f\n",change);}2.算法:S1:x初始化,x=1;S2:求x的因子;S3:求x的因子之和sum;S4:若sum与x相等,则x为完数,并将x输出;S5:因子个数累加,count++;S6:x自增,x++;S7:若x<=1000,则执行s2;S8:输出完数的总个数count;程序:#include<stdio.h>void main(){int x,i,sum,count=0;for(x=1;x<=1000;x++){ sum=0;for(i=1;i<x;i++)if(x%i==0) sum=sum+i;if(sum==x){count++;printf("%d ",x);}}printf("\n\n1000之内的完数共有%d个\n",count);}。

相关主题