C语言上机试卷练习答案
- 格式:doc
- 大小:88.50 KB
- 文档页数:12
计算机二级C语言上机复习题及答案解析范文一份计算机二级C语言上机复习题及答案解析 1计算机二级C语言上机复习题及答案解析填空题给定程序中,函数fun的功能是:在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。
ss所指字符串数组__有N个字符串,且串长小于M。
程序中库函数strstr(s1, s2)的功能是在s1串中查找s2子串,若没有,函数值为0,若有,为非0。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#define N 5#define M 15void fun(char (*ss)[M], char *substr){ int i,find=0;for(i=0; i __1__ ; i++)if( strstr(ss[i], __2__) != NULL ){ find=1; puts(ss[i]); printf(“\n"); }if (find==__3__) printf("\nDon't found!\n");}main(){ char x[N][M]={"BASIC","C langwage","Java","QBASIC","Access"},str[M];int i;printf("\nThe original string\n\n");for(i=0;i printf("\nEnter a string for search : "); gets(str);fun(x,str);}解题思路:本题是根据给定的字符串数组中查找指定的字符串,如果存在,则显示。
C 语言上机模拟试题(附详细答案)1.程序填空题请补充main函数,该函数的功能是:从键盘输入一组字符串,以“*”结束输入,并显示出这个字符串。
例如,输入abcdefghi*,结果显示adcdefghi。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!#include <stdio.h>#include <windows.h>#define N 80main(){int i=-1,j=0;char str[N];system("cls");printf("\n Input a string \n");do{i++;/**********found**********/scanf(___1___);/**********found**********/}while(___2___);printf("\n**display the string** \n");while(j<i){/**********found**********/printf(___3___);j++;}}2.程序修改题下列给定程序中,函数fun()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。
请改正程序中的错误,使其能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <conio.h>#include <stdio.h>#include <windows.h>#define MAXLINE 20/**********found**********/fun(char *pstr[6]){int I, j;char *p;for(i=0;i<5;i++){for(j=i+1;j<6;j++)/**********found**********/{if(strcmp(*(pstr+i),pstr+j)>0){p=*(pstr+i);/**********found**********/*(pstr+i)=pstr+j;*(pstr+j)=p;}}}}main(){int I;char *pstr[6],str[6][MAXLINE];system("cls");for(i=0;i<6;i++) pstr[i]=str[i];printf("Enter 6 string(1 string at eachline):\n ");for(i=0;i<6;i++) scanf("%s",pstr[i]);fun(pstr);printf("The strings after sorting:\n ");for(i=0;i<6;i++)printf("%s\n",pstr[i]);}3.程序设计题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。
第一次上机作业(2021):要求:独立完成,上机调试通事后上交作业提交邮件主题命名:班级学号姓名(第1次作业),例如:电1301班2王鹏(第1次作业)以附件形式将每次作业的所有程序源程序紧缩打包后提交,紧缩文件命名格式同上。
程序必需采用缩进格式1.大写字母转换成小写字母从键盘输入一个大写英文字母,输出相应的小写字母。
例:输入G输出g2.求平方根输入一个实数x,计算并输出其平方根(保留1 位小数)。
例:输入17输出The square root of is3.温度转换设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32)a)输入华氏温度(实型)b)输出的摄氏温度结果保留两位小数例:Please input Fahrenheit temperature:The corresponding Celsius temperature is4. 计算旅途时刻输入二个整数time1 和time2,表示火车的起身时刻和抵达时刻,计算并输出旅途时刻。
(输入的有效的时刻范围是0000 到2359,不需要考虑起身时刻晚于抵达时刻的情形。
)例:输入712 1411 (起身时刻是7:12,抵达时刻是14:11)输出The train journey time is 6 hours 59 minutes.5. 数字加密输入一个四位数,将其加密后输出。
方式是将该数每一名上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。
例:输入1257输出The encrypted number is 4601试探题:你可否编程找出谁做的好事?有四位同窗中的一名做了好事,不留名,夸奖信来了以后,校长问这四位是谁做的好事。
⏹A说:不是我。
⏹B说:是C。
⏹C说:是D。
⏹D说:他乱说。
已知三个人说的是实话,一个人说的是谎话。
此刻要依照这些信息,找出做了好事的人。
C 语言上机考试题20套(试题)C 语言上机考试题(第一套)1.编写函数fun ,它的功能是:计算并输出下列级数和:)1(1321211+⨯++⨯+⨯=n n S 例如,当n = 10时,函数值为:0.909091注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。
试题程序:#include <conio.h>#include <stdio.h>double fun( int n ){…………}main() /*主函数 */{ clrscr();printf(″%f\n ″, fun(10));}2.在[10000, 20000]范围内考察个位数字是7的素数, 问:(1) 这样的素数有多少个?(2) 其中最大的一个等于几?3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。
C 语言上机考试题(第二套)1.编写函数fun ,它的功能是:计算并输出下列级数和:)1(1321211+⨯++⨯+⨯=n n S 例如,当n = 10时,函数值为:0.909091注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。
试题程序:#include <conio.h>#include <stdio.h>double fun( int n ){…………}main() /*主函数 */{ clrscr();printf(″%f\n″, fun(10));}2.回文数是指正读和反读都一样的自然数。
例如,8, 121, 5445这三个数都是回文数。
求:(1) [1,1000]之内既是回文数,又是素数的最大整数。
(2) [1,1000]以内既是回文数,又是素数的整数有多少个。
3. 编写程序,能对输入一行字符,统计其中分别有多少个单词和空格。
C语言上机程序设计题库【程序设计】功能:根据整型形参m,计算如下公式的值:y=sin(m)*10。
【参考代码】double y=0;y=sin(m)*10;return(y);功能:若x、y为奇数,求x到y之间的奇数和;若x、y为偶数,则求x到y之间的偶数和。
【参考代码】int i,s=0;for(i=x;i<=y;i+=2)s=s+i;return s;功能:编写程序,实现矩阵(3行3列)的转置(即行列互换)【参考代码】int i,j,t;for(i=0; i < 3; i++)for(j=0; j < i; j++){ t=array[i][j];array[i][j]=array[j][i];array[j][i]=t; }功能:求一个四位数的各位数字的立方和。
【参考代码】int d,s=0;while (n>0){d=n%10;s+=d*d*d;n/=10;}return s;功能:请编一个函数void fun(int tt[M][N],int pp[N]), tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
二维数组中的数已在主函数中赋予。
【参考代码】int i,j;for(j=0;j<N;j++){pp[j]=tt[0][j];for(i=1;i<M;i++)if(tt[i][j]<pp[j])pp[j]=tt[i][j];}功能:求一组数中大于平均值的数的个数。
【参考代码】int i,k=0;float s=0,ave;for(i=0;i<n;i++)s+=a[i];ave=s/n;printf("%f ",ave);for(i=0;i<n;i++)if(a[i]>ave)k++;return k;题目:分别统计字符串中字母、数字、空格和其他字符出现的次数(字符长度小于80)。
试卷编号:480所属语言:C语言试卷方案:C语言测验试卷总分:100分共有题型:3种一、单选共30题(共计60分)第1题(2.0分)题号:5515 难度:中第8章C语言规定:简单变量做实参时,它和对应形参之间的数据传递方式是(). A:地址传递B:单向值传递C:由实参传给形参,再由形参传回给实参D:由用户指定的传递方式答案:B第2题(2.0分)题号:5448 难度:中第7章若有说明:int a[10];则对a数组元素的正确引用是().A:a[10]B:a[3,5]C:a(5)D:a[10-10]答案:D第3题(2.0分)题号:5291 难度:中第2章下列程序的输出结果是().main(){char c1=97,c2=98;printf("%d %c",c1,c2);}A:97 98B:97 bC:a 98D:a b答案:B第4题(2.0分)题号:5230 难度:中第2章在C语言中,char型数据在内存中的存储形式是().A:补码B:反码C:原码D:ASCII码答案:D第5题(2.0分)题号:5420 难度:中第6章语句while(!E);中的表达式!E等价于().A:E==0B:E!=1C:E!=0D:E==1答案:A第6题(2.0分)题号:5429 难度:中第6章若i为整型变量,则以下循环执行次数是().for(i=2;i==0;) printf("%d",i--);A:无限次B:0次C:1次D:2次答案:B第7题(2.0分)题号:5526 难度:中第8章C语言程序中,若对函数类型未加显式说明,则函数的隐含说明类型为(). A:voidB:doubleC:intD:char答案:C第8题(2.0分)题号:5233 难度:中第2章下列标识符中,不合法的C语言用户自定义标识符是().A:printfB:enumC:_D:sin答案:B第9题(2.0分)题号:5540 难度:中第8章下列程序运行结果为:#define P 3#define S(a) P*a*amain(){int ar;ar=S(3+5);printf("\n%d",ar);}A:192B:29C:27D:25答案:B第10题(2.0分)题号:5205 难度:易第1章C语言源程序名的后缀是().A:exeB:cC:objD:cp答案:B第11题(2.0分)题号:5426 难度:中第6章有以下程序段int n=0,p;do{scanf("%d",&p);n++;}while(p!=12345&&n<3);此处do-while循环的结束条件是().A:p的值不等于12345并且n的值小于3B:p的值等于12345并且n的值大于等于3C:p的值不等于12345或者n的值小于3D:p的值等于12345或者n的值大于等于3答案:D第12题(2.0分)题号:5498 难度:中第8章以下正确的函数定义形式是().A:double fun(int x,int y)B:double fun(int x;int y)C:double fun(int x,int y);D:double fun(int x,y);答案:A第13题(2.0分)题号:5437 难度:中第6章C语言中while和do—while循环的主要区别是().A:While的循环控制条件比do—while的循环控制条件严格B:do—while的循环体至少无条件执行一次C:do—while允许从外部转到循环体内D:do—while循环体不能是复合语句答案:B第14题(2.0分)题号:5400 难度:中第5章int a=1,b=2,c=3;if(a>b)a=b;if(a>c)a=c;则a的值为().A:1B:2C:3D:不一定答案:A第15题(2.0分)题号:5406 难度:中第5章以下不正确的定义语句是().A:double x[5]={2.0,4.0,6.0,8.0,10.0};B:int y[5]={0,1,3,5,7,9};C:char c1[]={'1','2','3','4','5'};D:char c2[]={'\x10','\xa','\x8'};答案:B第16题(2.0分)题号:5278 难度:中第2章char a[]="This is a program.";输出前5个字符的语句是().A:printf("%.5s",a);B:puts(a);C:printf("%s",a);D:a[5*2]=0;puts(a);答案:A第17题(2.0分)题号:5435 难度:中第6章执行语句 for(i=1;i++<4;); 后变量 i 的值是().A:3B:4C:5D:不定答案:C第18题(2.0分)题号:5257 难度:中第2章下列数据中,为字符串常量的是().A:AB:"house"C:How do you do.D:$abc答案:B第19题(2.0分)题号:5567 难度:中第10章若有int i=3,*p;p=&i;下列语句中输出结果为3的是().A:printf("%d",&p);B:printf("%d",*i);C:printf("%d",*p);D:printf("%d",p);答案:C第20题(2.0分)题号:5271 难度:中第2章若有说明语句:char c='\72';则变量c().A:包含1个字符B:包含2个字符C:包含3个字符D:说明不合法,c的值不确定答案:A第21题(2.0分)题号:5442 难度:易第6章从循环体内某一层跳出,继续执行循环外的语句是().A:break语句B:return语句C:continue语句D:空语句答案:A第22题(2.0分)题号:5277 难度:中第2章以下不正确的叙述是().A:在C程序中所用的变量必须先定义后使用B:程序中,APH和aph是两个不同的变量C:若a和b类型相同,在执行了赋值语句a=b;后b中的值将放入a中,b中的值不变D:当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值答案:D第23题(2.0分)题号:5383 难度:中第4章以下不符合C语言语法的赋值语句是().A:a=1,b=2B:++j;C:a=b=5;D:y=(a=3,6*5);答案:A第24题(2.0分)题号:5507 难度:中第8章以下函数调用语句中实参的个数是().exce((v1,v2),(v3,v4,v5),v6);A:3B:4C:5D:6答案:A第25题(2.0分)题号:5416 难度:中第6章下列程序的输出为().main(){ int y=10;while(y--);printf("y=%d\n",y);}A:y=0B:while构成无限循环C:y=1D:y=-1答案:D第26题(2.0分)题号:5449 难度:中第7章下列字符数组长度为5的是().A:char a[]={'h', 'a', 'b', 'c', 'd'};B:char b[]= {'h', 'a', 'b', 'c', 'd', '\0'};C:char c[10]= {'h', 'a', 'b', 'c', 'd'};D:char d[6]= {'h', 'a', 'b', 'c', '\0' };答案:A第27题(2.0分)题号:5208 难度:中第1章以下叙述中正确的是().A:构成C程序的基本单位是函数B:可以在一个函数中定义另一个函数C:main()函数必须放在其它函数之前D:所有被调用的函数一定要在调用之前进行定义答案:A第28题(2.0分)题号:5451 难度:中第7章int a[10];给数组a的所有元素分别赋值为1、2、3、……的语句是().A:for(i=1;i<11;i++)a[i]=i;B:for(i=1;i<11;i++)a[i-1]=i;C:for(i=1;i<11;i++)a[i+1]=i;D:for(i=1;i<11;i++)a[0]=1;答案:B第29题(2.0分)题号:5256 难度:中第2章在C语言中,int、char和short三种类型数据在内存中所占用的字节数(). A:由用用户自己定义B:均为2个字节C:是任意的D:由所用机器的机器字长决定答案:D第30题(2.0分)题号:5262 难度:中第2章以下数据中,不正确的数值或字符常量是().A:0B:5LC:o13D:9861答案:C二、程序填空共2题(共计20分)第1题(10.0分)题号:333 难度:易第6章/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:下面的程序是求1!+3!+5!+……+n!的和。
C语言试卷(含答案)一、单项选择题(每小题2分,共40分)1、sizeof(float)是()A. 一个双精度型表达式B. 一个整型表达式C. 一种函数调用D. 一个不合法的表达式2、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值: scanf("i=%d,f=%f",&i,&f);为了把100和分别赋给i和f,则正确的输入为()。
A. 100B. i=100,f=765.12C. 100<回车>D. x=100y=3、#include<>voidmain(){inta=3,b=2,c=1;intx=10,y=20;if(a<b)< p="">if(b!=0)if(!x)y=1;elseif(x)y=0;y=-1;printf("%d",y);}上面的C程序的输出结果是()。
A. 20B. 1C. 0D. -14、C语言中,while和do…while循环的主要区别是()。
A. do…while的循环体至少无条件执行一次B. while的循环控制条件比do…while的循环控制条件严格C. do…while允许从外部转到循环体内D. do…while的循环体不能是复合语句5、执行下面的C程序段后,输出结果是()。
inta=5; while(a--);printf("%d",a);A. 54321B. 4321C. 0D. -16、在C语言中,()是在所有函数外部声明的。
A. 全局变量B. 局部变量C. 形参D.实参7、分析下面的C程序:#include<>voidmain(){intnum=0;while(num<=2){num++;printf("%d",num);}}输出结果是()。
A. 123B. 012C. 23D. 128、下面的C语言代码段的输出结果是()。
一、A组1、编程:求y=a+b,其中a和b是整数,由键盘输入。
#include<stdio.h>void main(){int a,b,y;scanf("%d,%d",&a,&b);y=a+b;printf("%d\n",y);}2、编程:求y=a+b,其中a和b是实数,由键盘输入。
#include<stdio.h>void main(){float a,b,y;scanf("%f,%f",&a,&b);y=a+b;printf("%f\n",y);}3、编程:求y=a-b,其中a和b是整数,由键盘输入。
#include<stdio.h>void main(){int a,b,y;scanf("%d,%d",&a,&b);y=a-b;printf("%d\n",y);}4、编程:求y=a-b,其中a和b是实数,由键盘输入。
#include<stdio.h>void main(){float a,b,y;scanf("%f,%f",&,&b);y=a-b;printf("%f\n",y);}5、编程:求y=a×b,其中a和b是整数,由键盘输入。
#include<stdio.h>void main(){int a,b,y;scanf("%d,%d",&a,&b);y=a*b;printf("%d\n",y);}6、编程:求y=a×b,其中a和b是实数,由键盘输入。
#include<stdio.h>void main(){float a,b,y;scanf("%f,%f",&a,&b);y=a*b;printf("%f\n",y);}7、编程:求y=a÷b,其中a和b是整数,由键盘输入。
#include<stdio.h>void main(){int a,b,y;scanf("%d,%d",&a,&b);y=a/b;printf("%d\n",y);}8、编程:求y=a÷b,其中a和b是实数,由键盘输入。
#include<stdio.h>void main(){int a,b,y;scanf("%f,%f",&a,&b);y=a/b;printf("%f\n",y);}9、编程:求y=a%b,由键盘输入。
#include<stdio.h>void main(){int a,b,y;scanf("%d,%d",&a,&b);y=a%b;printf("%d\n",y);}二、B组(以下题目,如果使用自定义函数实现,将有加分)10、编程:使用C库函数sin,求sin(x)的值,x是角度,由键盘输入。
sin函数原型:double sin(double x);所在库:math.h#include<math.h>#include<stdio.h>void main(){float x,z;scanf("%f",&x);z=sin(x);printf("%f\n",z);}11、编程:使用C库函数pow,求x的平方,x由键盘输入。
pow函数原型:double sin(double x,double y);pow函数的功能是求x y,所在库:math.h#include<math.h>#include<stdio.h>void main(){float x,z;scanf("%f",&x);z=pow(x,2);printf("%f\n",z);}12、编程:键盘输入两个整型数,将它们按从小到大的顺序排列。
13、#include<stdio.h>14、void main()15、{16、int x,y;17、scanf("%d,%d",&x,&y);18、if(x>y)printf("%d",x);19、else20、printf("%d\n",y);21、}22、编程:键盘输入两个实型数,将它们按从小到大的顺序排列。
23、#include<stdio.h>24、void main()25、{26、float x,y;27、scanf("%f,%f",&x,&y);28、if(x>y)printf("%f",x);29、else30、printf("%f\n",y);31、}32、编程:键盘输入5个整数,求这些数的和。
33、#include<stdio.h>34、void main()35、{36、int a,b,c,d,e,y;37、scanf("%d,%d,%d,%d,%d",&a,&b,&c,&d,&e);38、y=a+b+c+d+e;39、printf("%d\n",y);40、}41、编程:键盘输入5个实数,求这些数的和。
42、#include<stdio.h>43、void main()44、{45、float a,b,c,d,e,y;46、scanf("%f,%f,%f,%f,%f",&a,&b,&c,&d,&e);47、y=a+b+c+d+e;48、printf("%f\n",y);49、}50、编程:键盘输入5个实数,求这些数的平均值。
51、#include<stdio.h>52、void main()53、{54、float a,b,c,d,e,y;55、scanf("%f,%f,%f,%f,%f",&a,&b,&c,&d,&e);56、y=a+b+c+d+e/5;57、printf("%f\n",y);58、}17、编程:求100以内的整数之和。
#include<stdio.h>void main(){int a,i;a=1;for(i=1;i<=100;i++)a=a+i;printf("%d\n",a);}18、编程:求100以内的奇数之和。
#include<stdio.h>void main(){int a,i;a=0;for(i=1;i<=100;i++)if(i%2==1){a=a+i;}printf("%d\n",a);}三、C组(单片机C编程)说明:1)28~30题需要用到的数组:0E7H,0C3H,81H,00H,0FFH,7FH,3FH,1FH,0FH,07H,03H,01H,00H,0FFH,55H,0AAH,55H,0AAH,0FFH,00H,0FFH,00H,0FFH) 2)数字0~9的七段共阳极显示译码表:0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H19、用延时的方法实现P1.0位的发光二极管闪烁(延时时间不限)。
#include<AT89X51.H>deplay(){unsigned char i,j,k;for(i=0;i<10;i++)for(j=0;j<255;j++)for(k=0;k<255;k++);}main(){while(1){P1_0=!P1_0;deplay();}}20、用延时的方法实现P1.1位的发光二极管闪烁(延时时间不限)。
#include<AT89X51.H>deplay(){unsigned char i,j,k;for(i=0;i<10;i++)for(j=0;j<255;j++)for(k=0;k<255;k++);}main(){while(1){P1_1=!P1_1;deplay();}}21、用延时的方法实现P1.2位的发光二极管闪烁(延时时间不限)。
#include<AT89X51.H>{unsigned char i,j,k;for(i=0;i<10;i++)for(j=0;j<255;j++)for(k=0;k<255;k++);}main(){while(1){P1_2=!P1_2;deplay();}}22、用延时的方法实现P1.3位的发光二极管闪烁(延时时间不限)。
#include<AT89X51.H>deplay(){unsigned char i,j,k;for(i=0;i<10;i++)for(j=0;j<255;j++)for(k=0;k<255;k++);}main(){while(1){P1_3=!P1_3;deplay();}}23、用延时的方法实现P1.4位的发光二极管闪烁(延时时间不限)。
#include<AT89X51.H>deplay(){unsigned char i,j,k;for(i=0;i<10;i++)for(j=0;j<255;j++)for(k=0;k<255;k++);}main(){while(1)P1_4=!P1_4;deplay();}}24、用延时的方法实现P1.5位的发光二极管闪烁(延时时间不限)。
#include<AT89X51.H>deplay(){unsigned char i,j,k;for(i=0;i<10;i++)for(j=0;j<255;j++)for(k=0;k<255;k++);}main(){while(1){P1_5=!P1_5;deplay();}}25、用延时的方法实现P1.6位的发光二极管闪烁(延时时间不限)。