C语言上机练习题及复习资料
计算机二级C语言上机试题库和答案解析(100套)

完美WORD格式计算机二级 c 语言上机题库及答案内部资料,切勿外传!.第 1 套填空题请补充 FUN 函数,FUN 函数的功能是求 10 的阶乘。
注意:部分源程序给出如下。
请勿改动主函数 main 和其他函数中的任何内容,仅在 fun 函数的横线上填入所编写的若干表达式或语句。
试题程序:#include<stdio.h>longfun(int n){if ( 1 )return (n*fun( 2));return 3;}main(){printf("10!=%ld\n", fun(10));}第 1 处填空:n>1 或 1<n第 2 处填空:n-1第 3 处填空:1 或 11 或 1L改错题下列给定程序的功能是:读入一个整数 K(2〈=K〈=10000),打印它的所有因子(即所有为素数的因子)。
例如,若输入整数 2310,则应输出:2、3、5、7、11。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <conio.h>#include <stdio.h>/********found********/IsPrime(intn);{int i,m;m =1;/********found********/for (i=2; i<n;i++)if !(n%i){m = 0;break;}return(m);}main(){int j, k;printf("\nplease enter an integer number between2and 10000:");scanf("%d", &k);printf("\n\nThe prime factor(s) of %dis(are):", k);for (j=2; j<k; j++)if ((!(k%j)) && (IsPrime(j)))printf(" %4d,", j);printf("\n");}第 1 处:Isprime(int n);应改为Isprime(int n)第 2 处:if !(n%i)应该为if(!(n%i))编程题M 个人的成绩存放在 score 数组中,请编写函数 fun,它的功能是:返回低于平均分的认输,并将低于平均分的分数放在below 所指的数组中。
C语言上机150道题

C语言上机150道题及参考答案1.某一门课程考试之后,需要统计考生(10人)的平均成绩,并找出其中的最高分和最低分。
2.从键盘输入两个正整数,输出这两个整数的商,要求商的小数点后保留5位。
例如输入355和113,输出3.14159。
3.用while循环结构编写程序打印ASCII码为33-127的字符。
4.用do-while,for循环结构编写程序打印ASCII码为33-127的字符。
5.用for循环结构编写程序打印ASCII码为33-127字符。
6.在1-500中,找出能同时满足用3除余2,用5除余3,用7除余4的所有整数,用循环结构。
7.输入一个整数将其倒着输出,如54321——12345。
8.计算s=1+1/3+1/5+…+1/n,截止到1/n<10-4。
9.从键盘输入一整数n,计算1*1+2*2+...+n*n的值。
10.用while 循环计算1+2+……+100的和。
11.用do while循环计算1+2+……+100的和。
12.用for 循环计算1+2+……+100的和。
13.输入一个小于等于10的整数n ,计算n!。
14.输入两个正整数m和n,计算m!+n!,m和n的值均小于10。
15.用循环语句,计算1~100之间的所有3的倍数之和。
16.用循环语句,计算100-200之间的所有7的倍数之和。
17.输出1-100之间,7的整数倍数或数字尾数为7的数字,统计出这些数字个数。
18.输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。
19.输入一个整数,统计它有几位数。
如输入367,则该数有3位数。
20.编写程序,输出1到50中间所有能被3整除的正整数。
21.把100~200之间不能被3整除的输出。
22.编程Y=1+3+5+7+...111。
23.编程y=1*1/2*1/3*1/4*1/5*1/6*...前十项之积。
24.编程输出九九乘法表。
25.求1到100奇数和。
c语言上机考试训练题库及答案

3000≤s 15%折扣
设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f的计算公式为:f=p*w*s*(1-d),请按照上述标准利用switch语句编写程序计算运费,并画出程序NS图。
#include <stdio.h>
int main()
{
if(i%2==0&&i%3==0&&i%7==0)
printf("%d\n",i);
}
}
26.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include<stdio.h>
main()
{
char ch;
int z=0,k=0,s=0,q=0;
while((ch=getchar())!='\n')
#include<stdio.h>
void main()
{int i,sum=0;
for(i=100;i<=996;i+=4)
if(i/10%10!=4)
sum+=i;
printf("和为:%d",sum);
}
15.输入一个字符串,统计该字符串的长度以及字母a出现的次数。
#include <stdio.h>
void main()
{int i,j=0;
char ch[ ]=" ";
printf("please input some characters\n");
gets(ch);
for (i=0;ch[i];i++)
c语言上机考试题库

c语言上机考试题库单项选择题1.有char c=’1’,下面说法中正确的是()。
A. 语句putc+2);的输入结果为51B. 语句put“%d”,c+2);的输出结果为3C. 语句put“%c”,c+2);的输入结果为51D. 语句put“%c”,c+2);的输出结果为32.设c1,c2均就是char型变量,则下面不恰当的函数调用为()。
A. scanf(”c1=2=%c”,&c1,&c2);B. get);C. putc2);D. putc1,c2);3.为了表示关系x>=y>=z,下面C语言表达式中正确的是()。
A. (x>=y)&&(y>=z)B. (x>=y)and(y>=z)C. (x>=y>=z)D. (x>=y)&(y>=z)4.设x,y,z,t为int型变量,则继续执行以下语句后,t的值()。
x=y=z=1;t=++x||++y&&++z;A. 不定值B. 2C. 1D. 05.对if语句中表达式的类型,下面正确的说法是()。
A. 必须就是关系表达式B. 必须是关系表达式或逻辑表达式C. 可以就是任一表达式D. 必须是关系表达式或算术表达式6.对for(表达式1;;表达式3)可以认知为()。
A. for(表达式1;0;表达式3)B. for(表达式1;表达式1;表达式3)C. for(表达式1;1;表达式3)D. for(表达式1;表达式3;表达式3)7.执行语句for(i=1;i++<4;);之后,变量i的值为()。
A. 3B. 4C. 5D. 不确定8.若二维数组a存有m列,则在a[i][j]前的元素个数为()。
A. j*m+iB. i*m+jC. i*m+j-iD. i*m+j+19.下面说法中正确的是()。
A. 在C语言中,可以采用动态内存分配技术,定义元素个数气门的数组B. 在C语言中,数组元素的个数可以不确定,允许随即变动C. 在C语言中,数组元素的数据类型可以不一致D. 在C语言中,定义数组后,就确定了它能容纳的相同数据类型元素的个数10.无法把字符串:“good!”参数值数组b的语句就是()。
C语言上机试题

C语言第一次上机1、有人把C语言称为中级语言,意思是?A. 操作上比低级语言简单,比其它语言复杂B. 其功能比低级语言强,但比高级语言弱C. 其编译方式处于低级语言和高级语言之间D. 既具有低级语言的功能,又具有高级语言功能本题正确答案为:D2、C语言程序由什么组成?A. 函数B. 主程序和子程序C. 子程序D. 过程本题正确答案为:A3、下列说法正确的是?A. VC++6.0是面向对象的高级语言,采用编译方式向机器语言转换B. VC++6.0是面向对象的高级语言,采用解释方式向机器语言转换C. VC++6.0是面向过程的高级语言,采用编译方式向机器语言转换D. VC++6.0是面向过程的高级语言,采用解释方式向机器语言转换本题正确答案为:A4、下列说法错误的是?A. 其它函数不能单独运行,只能被主函数或其它函数调用B. 程序是从第一个函数开始执行C. 主函数执行完毕,程序就结束了D. 程序总是从主函数开始执行,不管主函数在什么位置本题正确答案为:B5、字符串 "\n\\\'\123"包括几个字符(即占用几个字节的存储空间)?A. 4B. 10C. 5D. 11本题正确答案为:C6、假设所有变量均为整数,表达式a=2,b=5,a<b?a++:b,a+b的值是A. 3B. 8C. 7D. 2本题正确答案为:C7、若变量f已说明为float类型,i为int类型,则下面哪个表达式(或语句)能够实现将f中的数值保留小数点后两位,第三位进行四舍五入的运算?A. f=(f*100+0.5)/100.0B. i=f*100+0.5,f=i/100.0;C. f=(int)(f*100+0.5)/100.0;D. f=(f/100+0.5)*100.0;本题正确答案为:B8、若 a=3, 下列表达式的值为?a*a,a+5,a++, a*3A.4B. 45C. 12D. 9本题正确答案为:C9、若a=10, b=20,表示 x在a,b之间的表达式为?A. x>=a && x<=bB. a=<x && x<=bC. x>=a || x<=bD. a<=x<=b本题正确答案为:A10、下面那个表达式的值与其它的不一样?A. sizeof(char)*8B. sizeof(8)C. sizeof(10)*2D. sizeof(double)本题正确答案为:B11、若int a=5, b=4, c=6, d;则执行 d=a>b?(a>c?a:c):b 后,d的值为?A. 5B. 4C. 6D. 1本题正确答案为:C12、下面那个表达式的值为4?A. 11/3B. (int) (11.0/3+0.5)C. (int) (11.0/3)+0.5D. 13.0/3本题正确答案为:B13、下面那个不是合法的常量A. 0101010B. 048C. 0xabD. 348本题正确答案为:B14、若有 char c;表示c为字母的表达式为?A. c>='A'&&c<='z'B. c>='a'&&c<='z' || c>='A' && c<='Z'C. c>='a'&&c<='Z'D. c>='a'&&c<='z' && c>='A' && c<='Z'本题正确答案为:B15、C语言中整形常量不包括种:A. 二进制常量B. 八进制常量C. 十六进制常量D. 十进制常量本题正确答案为:A16、若有 int i=4, k, j;则执行 k=i++, j=++i 后, k与j的值分别为?A. k=4, j=5B. k=5, j=6C. k=5, j=5D. k=4, j=6本题正确答案为:D17、若有 a=3,则执行下列语句为a的值为?a+=a*=a;A. 3B. 12C. 9D. 18本题正确答案为:D18、以下合法的赋值语句是?A. x=y=100B. c=int(a+b);C. x+y;D. d--;本题正确答案为:D19、设x,y,z均为int型变量,则执行语句: x=y=3; t=++x||++y后,y的值为A. 1B. 不定值C. 4D. 3本题正确答案为:D20、若有 scanf("a=%d:%d",&a,&b);想把10给a,20给b, 则正确的输入格式为?A. a=10,b=20B. a=10:20C. a=10,20D. a=10:b=20本题正确答案为:B 21、若有scanf("%2d%3d%d",&a,&b,&c);运行时输入 1234567890,则a,b,c的值分别为?A. a=12,b=345,c=678B. 输入错误C. a=1234567890,b,c保持原来的值D. a=12,b=345,c=67890本题正确答案为:D22、若有scanf("%2d%*2d%3d",&a,&b);程序运行时输入 123456789,则a,b的值为?A. a=12,b=567B. a=1234,b=567C. a=12,b=345D. a=12,b=34本题正确答案为:A23、若有 char c;c=getchar()=='A';程序运行时从键盘输入 A, 则c的值为?A. AB. 0C. 以上都不对D. 1本题正确答案为:D24、若有int a=1234;printf("%2d",a); 的输出结果是?A. 12B. 34C. 出错D. 1234本题正确答案为:D程序设计1、函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。
计算机二级C语言上机题库及答案(100套)

~计算机二级c 语言上机题库及答案内部资料,切勿外传!.第1 套填空题请补充FUN 函数,FUN 函数的功能是求10 的阶乘。
注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在fun 函数的横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h>long fun(int n){if ( 1 )return (n*fun( 2 ));return 3 ;}main(){printf("10!=%ld\n", fun(10));}第1 处填空:n>1 或1<n第2 处填空:n-1第3 处填空:1 或11 或1L改错题下列给定程序的功能是:读入一个整数K(2〈=K〈=10000),打印它的所有因子(即所有为素数的因子)。
例如,若输入整数2310,则应输出:2、3、5、7、11。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <conio.h>#include <stdio.h>/********found********/IsPrime(int n);{int i, m;m = 1;/********found********/for (i=2; i<n; i++)if !(n%i){m = 0;break;}return(m);}main(){int j, k;printf("\nplease enter an integer number between 2and 10000:");scanf("%d", &k);printf("\n\nThe prime factor(s) of %d is(are):", k);for (j=2; j<k; j++)if ((!(k%j)) && (IsPrime(j)))printf(" %4d,", j);printf("\n");}第1 处:Isprime(int n);应改为Isprime(int n)第2 处:if !(n%i)应该为if(!(n%i))编程题M 个人的成绩存放在score 数组中,请编写函数fun,它的功能是:返回低于平均分的认输,并将低于平均分的分数放在below 所指的数组中。
C语言上机100题

一、填空题考试做题要求:1、在__1__处填写正确的答案,并将下划线和数字删除。
2、将题目做完之后一定要保存。
3、不能删除/**********found**********/,也不能多行或少行。
1、给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。
当调用正确时, 程序输出:x1=5.000000, x2=3.000000,x1*x1+x1*x2=40.000000请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!#include <stdio.h>double f1(double x){ return x*x; }double f2(double x, double y){ return x*y; }/**********found**********/__1__ fun(int i, double x, double y){ if (i==1)/**********found**********/return __2__(x);else/**********found**********/return __3__(x, y);}main(){ double x1=5, x2=3, r;r = fun(1, x1, x2);r += fun(2, x1, x2);printf("\nx1=%f, x2=%f, x1*x1+x1*x2=%f\n\n",x1, x2, r);}2、程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩。
函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。
#include <stdio.h>#include <string.h>struct student {long sno;char name[10];float score[3];};void fun(struct student a[], int n){ /**********found**********/__1__ t;int i, j;/**********found**********/for (i=0; i<__2__; i++)for (j=i+1; j<n; j++)/**********found**********/if (strcmp(__3__) > 0){ t = a[i]; a[i] = a[j];a[j] = t; }}main(){ struct student s[4]={ {10001,"ZhangSan", 95, 80, 88}, {10002,"LiSi", 85, 70, 78}, {10003,"CaoKai", 75, 60, 88},{10004,"FangFang", 90, 82, 87}};int i, j;printf("\n\nThe original data :\n\n");for (j=0; j<4; j++){printf("\nNo:%ldName:%-8sScores: ",s[j].sno, s[j].name);for (i=0; i<3; i++)printf("%6.2f ", s[j].score[i]);printf("\n");}fun(s, 4);printf("\n\nThe data after sorting:\n\n");for (j=0; j<4; j++){ printf("\nNo: %ld Name: %-8sScores: ",s[j].sno, s[j].name);for (i=0; i<3; i++)printf("%6.2f ", s[j].score[i]);printf("\n");}}3、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),作为函数值返回;并将大于平均值的数放在形参y所指数组中,在主函数中输出。
C语言上机试题1-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 ){float…………}main() /*主函数 */{ clrscr();printf(″%f\n ″, fun(10));}解答:#include <conio.h> #include <stdio.h> double fun( int n ) { double s=0; int i; for(i=1;i<n+1;i++) s+=1.0/(i*(i+1)); return s; } main() /*主函数 */ { system("cls"); printf("%f\n",fun(10)); }说明:主函数中的clrscr()函数为TC 下使用的清屏函数,在VC 中不能使用,在本题中可以直接删除或改为system("cls")2.在[10000, 20000]范围内考察个位数字是7的素数, 问:(1) 这样的素数有多少个?(2) 其中最大的一个等于几?解答:#include <stdio.h>int main(void){int max,num=0;int i,j;for(i=10000;i<20001;i++){for(j=2;j<i;j++)if( i%j==0 )break;if( j==i && i%10==7){num++;max=i;}}printf("num=%d,max=%d\n",num,max);return 0;}3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1输入三个整数x,y,z,把这三个数由小到大输出。
# include <stdio.h>void main(){int x,y,z,a;scanf ("%d,%d,%d",&x,&y,&z);if(x>y) {a=x; x=y;y=a;}if(x>z) { a=x; x=z; z=a;}if(y>z) {a=y; y=z; z=a;}printf("%d,%d,%d\n",x,y,z);}2输入圆的半径,输出圆的周长和面积。
# include<stdio.h># define PI 3.1415926# define S ==PI*r*r# define V (4.0/3)*PI*r*r*rvoid main(){double r;printf("please input r:");scanf("%lf",&r);printf("area is %.4lf\n",S);printf("volume is %.4lf\n",V);}输入正方形的边长,输出正方形的周长和面积。
# include<stdio.h>void main(){float c,zc,mj;printf("输入你的正方形");scanf("%f\n",&c);zc=4*c;mj=c*c;printf("周长%f,面积%f,边长%f",zc,mj,c);}3用格式输入函数输入3个字符,并用输出函数反向输出3个字符和他们的ASCII 码。
# include<stdio.h>int main(){char-ch1,ch2,ch3;printf("please input three characters:\n");scanf("%C%C%c",&ch1,&ch2,&ch3);printf("%c\n%d\n",ch3,ch3);printf("%c\n%d\n",ch2,ch2);printf("%c\n%d\n",ch1,ch1);}输入一个摄氏温度,要求输出华氏温度。
公式为f=9/5*c+32。
# include<stdio.h>void main(){float C,F;scanf("%f",&F);C=5.0/9*(F-32);printf("%8.2f",C);}4。
比较两个数大小的题#include<stdio.h>void main(){ int a,b;scanf("%d,%d",&a,&b);if(a>b) printf("%d\n",a);else printf("%d\n",b);}第二题:此题作废(千万不要用)#include<stdio.h>voidmain(){ char a,b,c;scanf("%c,%c,%c",&a,&b,&c);while((a<97||a>122)||(b<97||b>122)||(c<97||c>122));{printf("您输入非三个小写字母,请重新输入:\n");scanf("%c,%c,%c",&a,&b,&c);}printf("%c,%c,%c\n",a-32,b-32,c-32);}5输入任意10个数,求他们的平均值。
# include <stdio.h>void main(){Printf( "请输入10个整数:" );int a[10], k = 0, sum = 0;for (int i = 0; i < 10; ++i) ;{i>a[i];if 10>=a[i] >0 ++k;sum = sum+a[i];}float ave=sum / 10 .0printf( "平均值为:%f\n",ave);}6实现从键盘输入两个整数,按从小到大次序输出这两个数。
# include<stdio.h>void main(){int a, b, tem;printf("input two numbers:\n");scanf("%d,%d",&a,&b );if(a>b){tem=a;a=b;b=tem;}printf ("%d,%d",a,b);7从键盘输入三个整数,输出最大的那个数。
#include<stdio.h>void main(){int a,b,c,max;printf("请输入三个整数:\n");scanf("%d%d%d",&a,&b,&c);max=a>b?a:b;max=max>c?max:c;printf(“max=%d\n”,max);}}8输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。
# include<stdio.h>void main(){int x,y,z,n;printf("please input an integer less than 1000\n");scanf("%d",&n);x=n/100; n=n-100*x; y=n/10;z=n-10*y;if (x>0)printf("%d%d%d\n",z,y,x);else if(y>0) printf("%d%d\n",z,y);else printf("%d\n",z);}9输入三角形的边长,求三角形面积。
(面积=sqrt( s ( s-a ) (s-b) (s-c) ),s=(a+b+c)/2 )。
# include<stdio.h>void main(){float a,b,c,s,area;int ok=0;printf("input a,b,c:");scanf ("%f,%f,%f",&a,&b,&c);{a+b>c? ok++:0;a+c>b? ok++:0;b+c>a? ok++:0;ok==3(s=1/2*(a+c+b);area=sqrt (s*(s-a)*(s-b)*(s-c) );printf ("s=%f\n,area=%f\n",s,area);}10输入2个数,比较其大小,将较大的数输出。
#include<stdio.h>void main(){int a,b,c,max,min;printf(“Input a=”);scanf(“%d”,&a);printf(“Input b=”);scanf(“%d”,&b);If(a>b)printf(“较大的数是%d\n”,a);elseprintf(“较大的数是%d\n”,b);}11输入任意三个整数,求它们的和及平均值。
#include“stdio.h"void main(){ int a,b,c,sum; float ave;scanf("%d %d %d",&a,&b,&c);sum=a+b+c; ave=(a+b+c)/3.0;printf("三个数的和为:%d\n",sum);printf("三个数的平均值为:%f\n",ave);}12求解方程ax2+bx+c=0的实数根。
a,b,c由键盘输入,a≠0且b2-4ac>0。
#include <stdio.h>#include <math.h>void main() {float a, b, c, x1, x2;printf("请输入a, b, c的值:");scanf("%f%f%f", &a, &b, &c);if (b*b - 4*a*c <= 0)printf("输入的系数不对,b2-4ac不大于0!程序退出!\n");else { x1 = (-b + sqrt(b*b - 4*a*c))/2*a;x2 = (-b - sqrt(b*b - 4*a*c))/2*a;printf("x1 = %.2f\n", x1);printf("x2 = %.2f\n", x2); }}13写一个程序,输入一个班学生的成绩,求全班的平均成绩。
#include <iostream> usingnamespace std; void failnum(int score[], int num) { int n = 0; for(int i = 0; i < num; i++) { if(score[i] < 60) n++; } cout<<"不及格人数:"<<n<<endl; } void average_num(int score[], int num) { int sum = 0, number = 0; float n = 0; for(int i = 0; i < num; i++) sum = sum + score[i]; n = (sum * 1.0) / num; for(i = 0; i < num; i++) { if(score[i] >= n) number++; } cout<<"平均分为:"<<n<<endl; cout<<"成绩在全班平均分及平均分之上的学生人数:"<<number<<endl; } void stastics(int score[], int num) { int n1 = 0, n2 = 0, n3 = 0, n4 = 0, n5 = 0; for(int i = 0; i < num; i++) { if(score[i] < 60) n1++; else if(score[i] <= 69) n2++; else if(score[i] <= 79) n3++; else if(score[i] <= 89) n4++; if(score[i] >= 90) n5++; } cout<<"分数在60以下占:"<<( (n1* 1.0) / num)*100<<"%"<<endl; cout<<"分数在60-69占:"<<( (n2* 1.0) / num)*100<<"%"<<endl; cout<<"分数在70-79占:"<<( (n3* 1.0) / num)*100<<"%"<<endl; cout<<"分数在80-89占:"<<( (n4* 1.0) / num)*100<<"%"<<endl; cout<<"分数在90以上占:"<<( (n5* 1.0) / num)*100<<"%"<<endl; } int main() { int score[35], num; cout<<"输入全班总人数:"; cin>>num; cout<<"输入内容(每个数不超出0-100),用空格分开:"<<endl; for(int i = 0; i < num; i++) cin>>score[i]; failnum(score, num); average_num(score, num); stastics(score, num); return 0; }14编写程序输出如下图形:(没有的!!!!)** ** * ** * * *从键盘输入一个整数判断是否为素数。