C语言程序设计.docx
- 文档编号:26120081
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:189
- 大小:84.71KB
C语言程序设计.docx
《C语言程序设计.docx》由会员分享,可在线阅读,更多相关《C语言程序设计.docx(189页珍藏版)》请在冰豆网上搜索。
C语言程序设计
1.ProblemA:
Helloworld!
Description
Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。
三兄弟放学回家,父母分别跟他们打招呼。
Input
无
Output
请输出:
HelloDa_min,
HelloEr_min,
HelloXiao_ming!
SampleInput
SampleOutput
HelloDa_min,
HelloEr_min,
HelloXiao_ming!
HINT
请注意换行符
AppendCode
#include
intmain()
{
printf("HelloDa_min,\n");
printf("HelloEr_min,\n");
printf("HelloXiao_ming!
\n");
}
2.ProblemB:
求圆的面积和周长
Description
从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14。
Input
输入一个浮点型数据,有效数字不会超过十进制的6位。
Output
输出为两行。
第一行为圆的面积,第二行为圆的周长,格式见sample。
SampleInput
3
SampleOutput
Area:
28.260000
Perimeter:
18.840000
HINT
了解浮点类型的输入、输出和算术运算符
AppendCode
法一
#include
intmain()
{
doubler,p,s;
scanf("%lf",&r);
p=2*3.14*r;
s=3.14*r*r;
printf("Area:
%lf\n",s);
printf("Perimeter:
%lf\n",p);
}
法二
#include
#definepi3.14
intmain()
{
doubler;
scanf("%lf",&r);
printf("Area:
%lf\n",pi*r*r);
printf("Perimeter:
%lf\n",2*pi*r);
}
3.ProblemC:
平均值
Description
求3个数的平均值。
Input
输入只有一行,为3个较小的整数。
Output
输出为这3个整数的平均值,保留3位小数。
SampleInput
123
SampleOutput
2.000
HINT
注意除法运算对整型数据和浮点型数据是不一样的。
AppendCode
#include
intmain()
{
inta,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%.3lf",(a+b+c)/3.0);
}
4.ProblemD:
求字符的值
Description
从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。
Input
输入为3个字符。
Output
输出为3行。
每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。
每个输出的值占3个字符,不足3个字符前面补0。
SampleInput
0A
SampleOutput
048060030
032040020
065101041
HINT
了解字符值的存储和整型的关系。
AppendCode
#include
intmain()
{
chara,b,c;
scanf("%c%c%c",&a,&b,&c);
printf("%.3d%.3o%.3x\n",a,a,a);
printf("%.3d%.3o%.3x\n",b,b,b);
printf("%.3d%.3o%.3x\n",c,c,c);
}
5.ProblemA:
最简单的程序
Description
输出一行“Helloworld!
”。
Input
无
Output
Helloworld!
SampleInput
SampleOutput
Helloworld!
HINT
AppendCode
#include
intmain()
{
printf("Helloworld!
");
}
6.ProblemB:
算术基本运算
Description
计算两整数x和y(0 Input 输入只有一行,格式见sample。 Output 输出为多行,按顺序每行输出x,y的和、差、积、商、余数、x的平方和y的三次方,格式见sample SampleInput x=11,y=3 SampleOutput x+y: 14 x-y: 8 x*y: 33 x/yquotient: 3,remainder: 2 x^2: 121 y^3: 27 HINT 注意输入输出格式。 了解C语言整数除法运算符的特点,并且没有求幂的运算符。 AppendCode #include //#include intmain() { intx,y; scanf("x=%d,y=%d",&x,&y); printf("x+y: %d\n",x+y); printf("x-y: %d\n",x-y); printf("x*y: %d\n",x*y); printf("x/yquotient: %d,remainder: %d\n",x/y,x%y); printf("x^2: %d\n",x*x); printf("y^3: %d\n",y*y*y); } 7.ProblemC: 自增自减运算 Description C语言中有自增运算++、自减运算--,并且可以前置和后置。 编写一个程序: 对输入的一个整数a,输出a++、a--、++a、--a的值。 Input 一个整数a,a是很小的整数。 Output 输出为5行,第一行为a的值,后面依次为--a、a--、a++、++a的值。 5行输出纵向a要对齐,“: ”对齐,“: ”前后各一个空格,后面的数值不用对齐。 每行行尾都有回车。 SampleInput 0 SampleOutput a: 0 --a: -1 a--: 0 a++: 0 ++a: 1 HINT AppendCode #include intmain() { inta; scanf("%d",&x); printf("a: %d\n",a); printf("--a: %d\n",--a); printf("a--: %d\n",a--); printf("a++: %d\n",a++); printf("++a: %d\n",++a); } 8.ProblemF: 绝对值 Description 求整型数据和浮点型数据的绝对值。 Input 输入两个数,第一个是整数,第二个是浮点数。 Output 输出为两行,第一行为整数的绝对值,第二行为浮点数的绝对值,注意浮点数的绝对值不输出无意义的0。 SampleInput -1 1 SampleOutput 1 1 HINT 求绝对值可以用标准库函数来完成,也可以自己判断。 注意浮点数的输出格式。 求绝对值的函数在哪个头文件? 貌似很多人会搞错,包括很多编书的人! AppendCode #include //#include intmain(){ intn; floatm; scanf("%d%f",&n,&m); //n=abs(n); //m=fabs(m); if(n<0) { n=-n; } if(m<0) { m=-m; } printf("%d\n",n); printf("%g",m); return0; } 9.ProblemA: 奇数还是偶数? Description 输入一个整数,判读它是奇数还是偶数。 Input 输入只有一行,为一个100以内的正整数。 Output 输出为一行。 若输入为偶数则输出“even”,奇数输出“odd”。 SampleInput 30 SampleOutput even HINT 用整数运算可以解决,练习“? : ”表达式。 AppendCode 法一: #include intmain(){ intn; scanf("%d",&n); if(n>=0&&n<=100) { if(n%2==0)printf("even\n"); elseprintf("odd\n"); } return0; } 法二: #include intmain() { inta; scanf("%d",&a); printf(a%2==0? "even": "odd"); } 10.ProblemB: 简单的打折计算 Description 商店规定: 消费满n元,可以打八八折。 设某件商品标价m元,输入购买的件数x,计算出需要支付的金额(单位: 元),精确到分。 Input 输入只有一行,三个整数m、n和x,且0 Output 输出金额,精确到分。 SampleInput 953004 SampleOutput 334.40 HINT 了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。 AppendCode #include intmain() { intm,x,n,a; floatb; scanf("%d%d%d",&m,&n,&x); 0 x m a=m*x; if(a>n) b=0.88*a; else b=a; printf("%.2f\n",b); } 11.ProblemC: 判断闰年 Description 输入一个正整数的年份,判断是否为闰年。 Input 输入只有一行,为一个10000以内的正整数。 Output 输出为一行。 若输入为闰年偶数则输出“Yes”,否则输出“No”。 SampleInput 2010 SampleOutput No HINT 了解逻辑运算符和关系运算符。 AppendCode #include intmain() { intx; scanf("%d",&x); if(x>0&&x<10000) { if(x%4==0&&x%100! =0) printf("Yes\n"); elseif(x%400==0) printf("Yes\n"); else printf("No\n"); } else printf("error"); } 12.ProblemD: 水仙花数 Description 如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。 如: 13+53+33=153。 Input 一个整数x,100<=x<=999。 Output x是水仙花数,则输出“YES”,否则为“NO”。 SampleInput 153 SampleOutput YES HINT AppendCode #include //#include intmain(){ intn,a,b,c; chars[10]; scanf("%s",s); a=s[0]-48; b=s[1]-48; c=s[2]-48; n=a*100+b*10+c; if(a*a*a+b*b*b+c*c*c==n)printf("YES\n"); elseprintf("NO\n"); return0; } 13.ProblemE: 三个数比较大小 Description 从键盘上输入0~100之间的三个数,按从小到大的顺序输出。 Input 输入只有一行,为三个整数。 Output 按从小到大输出这三个数。 SampleInput 151020 SampleOutput 101520 HINT 用if语句判断各种情况可以解决这个问题。 AppendCode #include intmain() { inta,b,c; scanf("%d%d%d",&a,&b,&c); if(a>=b) { if(b>=c) printf("%d%d%d\n",c,b,a); elseif(c>=a) printf("%d%d%d\n",b,a,c); else printf("%d%d%d\n",b,c,a); } else { if(a>=c) printf("%d%d%d\n",c,a,b); elseif(b>=c) printf("%d%d%d\n",a,c,b); else printf("%d%d%d\n",a,b,c); } } 14.ProblemF: 奇怪的求和之一 Description 给定3个正整数a、b和c,按照如下规则求和: 如果这个数字是偶数,则累加到和中; 如果这个数字是奇数,则将大于该数的最小偶数累加到和中。 Input 三个正整数,均在100以内。 Output 一个和。 SampleInput 235 SampleOutput 12 HINT 如果不会使用分支语句,可使用条件运算符判断到底将哪个数累积到和中。 AppendCode #include intmain() { inta,b,c; scanf("%d%d%d",&a,&b,&c); if(a%2! =0)a++; if(b%2! =0)b++; if(c%2! =0)c++; printf("%d\n",a+b+c); } 15.ProblemG: 你过线了吗? Description 经过四年的学习,你决定报考我国著名的“285”高校之一的北青大学,经过认真的复习,残酷的考试,终于知晓了自己的考试成绩,也知道了北青大学的录取分数线,请你编程判断,自己过线了吗? Input 输入有2行,第一行有4个正整数,分别表示三门课程的分数线以及总分分数线。 第二行有3个非负整数,分别表示你考的三门课程的成绩。 Output 如果你的三门课程成绩都不低于相应课程的分数线,且你的考试总分也不低于北青大学的总分分数线要求,则输出“congratulations”,否则输出“sorry”。 SampleInput 708070240 808082 SampleOutput congratulations HINT 如果你不会使用分支语句,同样可以使用条件运算符实现该程序。 AppendCode #include intmain() { inta,b,c,d,e,f,g,h; scanf("%d%d%d%d\n%d%d%d",&a,&b,&c,&d,&e,&f,&g); h=e+f+g; if(e>=a&&f>=b&&g>=c&&h>=d) printf("congratulations"); else printf("sorry"); } 16.ProblemI: A+BProblem(II): Input/OutputPractice Description 计算a+b,0<=a,b<1000。 Input 输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。 Output 每行输出一个a+b的和,顺序与输入对应。 SampleInput 2 12 1020 SampleOutput 3 30 HINT N给出了测试样例数,用for循环处理方便。 AppendCode #include intmain() { inta[1000],b[1000],N,i; scanf("%d",&N); for(i=1;i<=N;i++) scanf("%d%d",&a[i],&b[i]); for(i=1;i<=N;i++) printf("%d\n",a[i]+b[i]); return0; } 17.ProblemH: A+BProblem Description 计算a+b,0<=a,b<1000。 Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。 Output 每行输出一个a+b的值,顺序与输入对应。 SampleInput 12 1020 SampleOutput 3 30 HINT OJ系统上测试输入结束符为EOF(EndOfFile),其值为-1。 用scanf()把文件所有内容读完后,会读到EOF,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。 本题解法参看FAQ。 AppendCode #include intmain(){ inta,b; while(scanf("%d%d",&a,&b)! =EOF){ printf("%d\n",a+b); } return0; } 18.ProblemA: 判断是否是元音字母 Description 输入一个英文字母,判断是否是元音字母。 元音字母是: a,e,i,ou,A,E,I,O,U Input 输入一个英文字母 Output 是元音字母,输出“yes”,否则输出“no”,行尾没有回车。 SampleInput A SampleOutput yes HINT AppendCode #include voidmain() { charch; scanf("%c",&ch); if(ch>='A'&&ch<='Z') ch=ch+32; if(ch=='a') printf("yes"); elseif(ch=='e') printf("yes"); elseif(ch=='i') printf("yes"); elseif(ch=='o') printf("yes"); elseif(ch=='u') printf("yes"); else printf("no"); } 19.ProblemB: 按顺序输出三个数 Description 对于输入的3个整数,按照从小到大的顺序输出。 Input 输入3个int类型内的整数,两两之间用一个空格隔开。 Output 按照从小到大的顺序输出上述三个数,两两之间用一个空格隔开。 SampleInput 213 SampleOutput 123 HINT AppendCode #include voidmain() { inta,b,c,temp; scanf("%d%d%d",&a,&b,&c); if(a { temp=a; a=b; b=temp; } if(a { temp=a; a=c; c=temp; } if(b { temp=b; b=c; c=temp; } printf("%d%d%d\n",c,b,a); } 20.ProblemE: 判断奇偶数 Description 判断输入整数的奇偶性。 Input 输入为一个整数。 Output 输出只有一行,代表判断结果。 如果输入的整数n是一个偶数,输出: nisanevennumber. 否则输出: nisanoddnumber. 见样例。 SampleInput 12 SampleOutput 12isanevennumber. HINT AppendCode #include intmain() { inta; scanf("%d",&a); if(a%2==0) printf("%disanevennumber.",a); else printf("%disanoddnumber.",a); } 21.ProblemA: 判断两个整数的大小关系 Description 输入2个整数a和b,如果a>b,则输出1,否则输出0。 Input 两个整数a和b,均不超过int类型的表示范围。 Output 表示a>b的结果: 如果a>b,则输出1,否则输出0。 SampleInput 34 SampleOutput 0 HINT AppendCode #include intmain() { inta,b; scanf("%d%d",&a,&b); if(a>b) printf("1"); else printf("0"); return0; } 22.ProblemD: 成绩的等级 Description 把百分制的考试成绩转换成五级制的成绩: 90~100: Excellent 80~89: Good 70~79: Average 60~69: Pass 0~59: Failing 不在0~100之间的输入是非法数据,输出“Error”。 Input 输入多行,每行一个整数。 Output 输入所对应的成绩等级。 SampleInp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计