C语言程序设计编程精选44例.docx
- 文档编号:2791751
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:94
- 大小:40.31KB
C语言程序设计编程精选44例.docx
《C语言程序设计编程精选44例.docx》由会员分享,可在线阅读,更多相关《C语言程序设计编程精选44例.docx(94页珍藏版)》请在冰豆网上搜索。
C语言程序设计编程精选44例
问题1:
三个数比较大小
题目描述
从键盘上输入0~100之间的三个数,按从小到大的顺序输出。
输入
输入只有一行,为三个整数。
输出
按从小到大输出这三个数。
样例输入
151020
样例输出
101520
提示
用if语句判断各种情况可以解决这个问题。
解答:
#include
intmain()
{
inta,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a>=b)
{
if(b>=c)
printf("%d%d%d",c,b,a);
else
{
if(a>=c)
printf("%d%d%d",b,c,a);
else
printf("%d%d%d",b,a,c);
}
}
else
{
if(b printf("%d%d%d",a,b,c); else { if(a printf("%d%d%d",a,c,b); else printf("%d%d%d",c,a,b); } } } 问题2: 输出是m的倍数或n的倍数、但不是m和n的公倍数的数 题目描述 输出1~k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1<=m,n 输入 输入三个整数,依次为k、m、n。 输出 从小到大输出符合题意的所有整数,两数之间用一个空格分开。 样例输入 1523 样例输出 23489101415 提示 难点在于输出格式的控制: 空格在数的中间,学会用循环时边界情况的特殊处理。 解答: #include intmain() { intk,m,n,i,a; scanf("%d%d%d",&k,&m,&n); if(m>=n) a=n; else a=m; printf("%d",a); for(i=a+1;i<=k;i++) if(i%m==0||i%n==0) { if(i%m==0&&i%n==0) printf(""); else printf("%d",i); } } 问题3: A+BProblem 题目描述 计算a+b,0<=a,b<1000。 输入 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。 输出 每行输出一个a+b的值,顺序与输入对应。 样例输入 12 1020 样例输出 3 30 提示 OJ系统上测试输入结束符为EOF(EndOfFile),其值为-1。 用scanf()把文件所有内容读完后,会读到EOF,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。 本题解法参看FAQ。 解答: #include intmain() { inta,b; for(;scanf("%d%d",&a,&b)! =EOF;) printf("%d\n",a+b); } 问题4: A+BProblem(II): Input/OutputPratice 题目描述 计算a+b,0<=a,b<1000。 输入 输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。 输出 每行输出一个a+b的和,顺序与输入对应。 样例输入 2 12 1020 样例输出 3 30 提示 N给出了测试样例数,用for循环处理方便。 解答: #include intmain() { intn,a,b,i; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d%d",&a,&b); printf("%d\n",a+b); } } 问题5: A+BProblem(III): Input/OutputPratice 题目描述 计算a+b,0<=a,b<1000。 输入 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。 当测试样为00时表示输入结束,00不参与运算。 输出 每行输出一个a+b的值,顺序与输入对应。 样例输入 12 1020 00 样例输出 3 30 提示 练习break的使用。 解答: #include intmain() { inta,b; for(;scanf("%d%d",&a,&b);) { if(a==0&&b==0) break; printf("%d\n",a+b); } } 问题6: A+BProblem(IV): Input/OutputPratice 题目描述 计算a+b,0<=a,b<1000。 输入 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。 输出 每行输出一个a+b的值,顺序与输入对应。 每个格式样例之间用一个空行分隔开。 样例输入 12 1020 1535 样例输出 3 30 50 提示 由于输出的和比空行多一个,所以全部计算放在一个循环里是不行的,必须要特殊处理开头或者结尾。 解答: #include intmain() { inti,a,b; i=1; scanf("%d%d",&a,&b); printf("%d\n",a+b); i++; for(;scanf("%d%d",&a,&b)! =-1;) printf("\n%d\n",a+b); } 问题7: n个数的最大值和最小值 问题描述 找出n个数中最大的数和最小的数,并将它们的值输出出来。 输入 输入为n+1个整数,都在int类型范围内。 这些数可能用若干空格或者换行符分隔开。 输入的第1个数为n,表示后续有n个数输入。 从输入的第2个数开始,求出直到第n+1个数中最大的数和最小的数。 输出 输出为两行,格式见sample。 样例输入 301-1 样例输出 Themaximumnumberis1. Theminimumnumberis-1. 提示 分隔符是空格还是回车都是空白符,对scanf("%d")来说没有区别;先读入n,然后用for循环就很容易控制读入n个数的过程。 解答: #include intmain() { inta,n,i,min,max; scanf("%d",&n); scanf("%d",&a); min=a; max=a; for(i=1;i { scanf("%d",&a); if(a>max) max=a; if(a min=a; } printf("Themaximumnumberis%d.\n",max); printf("Theminimumnumberis%d.",min); } 问题8: 成绩的等级 题目描述 把百分制的考试成绩转换成五级制的成绩: 90~100: Excellent 80~89: Good 70~79: Average 60~69: Pass 0~59: Failing 不在0~100之间的输入是非法数据,输出“Error”。 输入 输入多行,每行一个整数。 输出 输入所对应的成绩等级。 样例输入 -1 81 92 35 68 72 100 样例输出 Error Good Excellent Failing Pass Average Excellent 提示 用switch语句解决这个问题比较方便。 解答: #include intmain() { inta; for(;scanf("%d",&a)! =-1;) if(a<0||a>100) printf("Error\n"); else { switch(a/10) { case0: case1: case2: case3: case4: case5: printf("Failing\n");break; case6: printf("Pass\n");break; case7: printf("Average\n");break; case8: printf("Good\n");break; case9: case10: printf("Excellent\n");break; } } } 问题9: 只有一个二元运算符的表达式运算 题目描述 编程序读入并计算只有一个二元运算符的表达式的值。 用到的二元运算符有: “+”、“-”、“*”、“/”、“%”,与C语言的语法一致。 输入 每行输入一个表达式,格式为: 二个整型的操作数a和b,中间用一个符号分开,这个符号就是运算符。 测试样例不存在除数为0的情况。 输入以a和b为0,且用一个空格分开结束。 输出 每行对应输入的运算符为“+”、“-”、“*”、“/”、“%”,则计算a+b、a-b、a*b、a/b、a%b的值;否则输出“invalidop”。 样例输入 33+5 8*9 2.2 1-6 17/3 9%3 00 样例输出 38 72 invalidop -5 5 0 提示 教材上有非常相似的例题可以参考。 #include #include voidmain() { inti,a,b; charc; for(i=0;i<=100;i++) {for(;scanf("%d%c%d",&a,&c,&b)! =EOF;) if(a==0&&c==''&&b==0) gotoloop; else switch(c) { case'+': printf("%d\n",a+b); break; case'-': printf("%d\n",a-b); break; case'*': printf("%d\n",a*b); break; case'/': printf("%d\n",a/b); break; case'%': printf("%d\n",a%b); break; default: printf("invalidop\n"); } } loop: i=101; } 问题10: 求100以内的素数 题目描述 素数是只能被1和自身整除的正整数,根据数学定义1不是素数。 素数也叫质数。 输入 输入为两个整数m和n,满足0<=m<=n<=100。 输出 从大到小输出m~n之间的所有素数,一个素数一行。 如果m~n之间没有素数,则不输出任何数。 输出的所有数在两行“=====”之间。 样例输入 212 样例输出 ===== 11 7 5 3 2 ===== 提示 利用素数的数学规律可以很容易的解出此题,题目给出的数据范围是关键。 解答: #include intma
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 编程 精选 44