《c语言题目汇总.doc》由会员分享,可在线阅读,更多相关《c语言题目汇总.doc(91页珍藏版)》请在金锄头文库上搜索。
1、Description给定一个球体的直径(非负数),求它的表面积和体积。Input输入只有一个非负实数,表示球体的直径。Output输出有2行,格式见样例。其中等号(“=”)前后各有一个空格,输出的结果保留6位小数。Sample Input2.0Sample Outputarea = 12.566371volume = 4.188790HINT在math.h中,定义了一个常量M_PI,它就是圆周率。如果你的结果不对,试着包含这个头文件并使用常量M_PI代替你程序中的圆周率。使用math.h中M_PI的程序在OJ上无法编译通过,请自行定义M_PI为3.14159265358979323846,或
2、者用三角函数计算M_PI的值,如:4*atan(1.0),-2*asin(-1)。#define M 3.14159265358979323846#include int main() double s, v, d; scanf(%lf, &d); s =M*d*d; v =M/3*d*d*d/2; printf(area = %lfn, s); printf(volume = %lfn, v);? return 0;Description如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:13+53+33=153。Input一个整数x,100=x=999。Outputx是水
3、仙花数,则输出“YES”,否则为“NO”。Sample Input153Sample OutputYES#include int main() int a,b,c,d; scanf(%d,&a); b=a/100; c=(a-b*100)/10; d=a-b*100-c*10; a=b*b*b+c*c*c+d*d*d? printf(YES):printf(NO); return 0; Description 给定3个正整数a、b和c,按照如下规则求和:如果这个数字是偶数,则累加到和中;如果这个数字是奇数,则将大于该数的最小偶数累加到和中。Input三个正整数,均在100以内。Output一个
4、和。Sample Input2 3 5Sample Output12HINT如果不会使用分支语句, 可使用条件运算符判断到底将哪个数累积到和中。#include int main() int x,y,z,h; scanf(%d %d %d,&x,&y,&z); x= x%2=0? x:x+1; y= y%2=0? y:y+1; z= z%2=0? z:z+1; h=x+y+z; printf(%d,h); Description经过四年的学习,你决定报考我国著名的“285”高校之一的北青大学,经过认真的复习,残酷的考试,终于知晓了自己的考试成绩,也知道了北青大学的录取分数线,请你编程判断,自己
5、过线了吗?Input输入有2行,第一行有4个正整数,分别表示三门课程的分数线以及总分分数线。第二行有3个非负整数,分别表示你考的三门课程的成绩。Output如果你的三门课程成绩都不低于相应课程的分数线,且你的考试总分也不低于北青大学的总分分数线要求,则输出“congratulations”,否则输出“sorry”。Sample Input70 80 70 24080 80 82Sample OutputcongratulationsHINT如果你不会使用分支语句,同样可以使用条件运算符实现该程序。#includeint main() int a,b,c,d,e,f,g,s; scanf(%d%
6、d%d%dn,&a,&b,&c,&d); scanf(%d%d%d,&e,&f,&g); s=e+f+g; if (e=a&f=b&g=c&s=d) printf(congratulations); else printf(sorry); Description计算a+b,0=a,b1000。Input输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。Output每行输出一个a+b的值,顺序与输入对应。Sample Input1 210 20Sample Output330HINTOJ系统上测试输入结束符为EOF(End Of File),其值为-1。用scanf()把文件所有内容
7、读完后,会读到EOF,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。本题解法参看FAQ。#include int main () int a,b; while (scanf(%dn%d, &a, &b)!=EOF) printf (%dn,a+b);Description计算a+b,0=a,b1000。Input输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。Output每行输出一个a+b的和,顺序与输入对应。Sample Input21 210 20Sample Output330#include int main () int a,b
8、,c,i; scanf (%d,&c); for(i=1;i=c;i+) while (scanf (%dn%d,&a,&b)!=EOF) printf (%dn,a+b); Description找出n个数中最大的数和最小的数,并将它们的值输出出来。Input输入为n+1个整数,都在int类型范围内。这些数可能用若干空格或者换行符分隔开。输入的第1个数为n,表示后续有n个数输入。从输入的第2个数开始,求出直到第n+1个数中最大的数和最小的数。Output输出为两行,格式见sample。Sample Input3 0 1 -1Sample OutputThe maximum number is
9、 1.The minimum number is -1.HINT分隔符是空格还是回车都是空白符,对scanf(%d)来说没有区别;先读入n,然后用for循环就很容易控制读入n个数的过程。#include int main() int i,n,m,max,min; scanf (%d%d,&n,&max); min=max; for(i=1;imax) max=m; else if(mmin) min=m; printf(The maximum number is %d.nThe minimum number is %d.,max,min);Description需要判断给定的一个整数是否同时满
10、足如下三个条件:1. 它是一个完全平方数。2. 它是一个偶数。3. 它是一个正数。注:若一个数能表示成某个自然数的平方的形式,则称这个数为完全平方数。例如:0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529Input一个int范围内的整数。Output如果输入的数字满足条件,则输出yes,否则输出no。Sample Input100Sample OutputyesHINT注意逻辑表达式判断三个条件的顺序。如果你不会使用分支语句,同样可以使用条件运算符实现该程序。库函数sqrt()可以
11、用于求一个数的平方根。#include #include int main() int n,c; scanf (%d,&n); c=sqrt(n); if(n=c*c&n%2=0&n0) printf(yes); else printf(no);Description把百分制的考试成绩转换成五级制的成绩:90100:Excellent8089:Good7079:Average6069:Pass059:Failing不在0100之间的输入是非法数据,输出“Error”。Input输入多行,每行一个整数。Output输入所对应的成绩等级。Sample Input-18192356872100Sam
12、ple OutputErrorGoodExcellentFailingPassAverageExcellentHINT用switch语句解决这个问题比较方便。#include int main() int n; while (scanf (%d,&n)!=EOF) if (n=100) printf (Excellentn); else if(n100) printf (Errorn); else switch (n/10) case 9:printf (Excellentn);break; case 8:printf (Goodn);break; case 7:printf (Averagen);break; case 6:printf (Passn);break; default :printf (Failingn);