Hello,World!
编写一个能够输出 Hello,World!
的程序。
1 2 3 4 5
| #include <stdio.h> int main() { printf("Hello,World!"); }
|
输出结果:
Hello,World!
输出字符菱形
用 *
构造一个对角线长 55 个字符,倾斜放置的菱形。
简单粗暴法:
1 2 3 4 5 6 7 8 9
| #include <stdio.h> int main() { printf(" *\n"); printf(" ***\n"); printf("*****\n"); printf(" ***\n"); printf(" *\n"); }
|
慵懒粗暴法:
1 2 3 4 5
| #include <stdio.h> int main() { printf(" *\n ***\n*****\n ***\n *\n"); }
|
超级玛丽游戏
超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| ******** ************ ####....#. #..###.....##.... ###.......###### ### ### ........... #...# #...# ##*####### #.#.# #.#.# ####*******###### #.#.# #.#.# ...#***.****.*###.... #...# #...# ....**********##..... ### ### ....**** *****.... #### #### ###### ###### ############################################################## #...#......#.##...#......#.##...#......#.##------------------# ###########################################------------------# #..#....#....##..#....#....##..#....#....##################### ########################################## #----------# #.....#......##.....#......##.....#......# #----------# ########################################## #----------# #.#..#....#..##.#..#....#..##.#..#....#..# #----------# ########################################## ############
|
有一种printf多行字符串的写法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include<stdio.h> int main() { printf( " ********\n" " ************\n" " ####....#.\n" " #..###.....##....\n" " ###.......###### ### ###\n" " ........... #...# #...#\n" " ##*####### #.#.# #.#.#\n" " ####*******###### #.#.# #.#.#\n" " ...#***.****.*###.... #...# #...#\n" " ....**********##..... ### ###\n" " ....**** *****....\n" " #### ####\n" " ###### ######\n" "##############################################################\n" "#...#......#.##...#......#.##...#......#.##------------------#\n" "###########################################------------------#\n" "#..#....#....##..#....#....##..#....#....#####################\n" "########################################## #----------#\n" "#.....#......##.....#......##.....#......# #----------#\n" "########################################## #----------#\n" "#.#..#....#..##.#..#....#..##.#..#....#..# #----------#\n" "########################################## ############\n" ); }
|
A+B Problem
输入两个整数a,b,输出它们的和;
1 2 3 4 5 6 7 8
| #include<stdio.h> int main() { int a,b,c; scanf("%d %d",&a,&b); c=a+b; printf("%d",c); }
|
字符三角形
给定一个字符,用它构造一个底边长 55 个字符,高 33 个字符的等腰字符三角形。
输入格式: 输入只有一行,包含一个字符。
输出格式: 该字符构成的等腰三角形,底边长 55 个字符,高 33 个字符。
1 2 3 4 5 6 7
| #include<stdio.h> int main() { int a; scanf("%c",&a); printf(" %c\n %c%c%c\n%c%c%c%c%c",a,a,a,a,a,a,a,a,a); }
|
苹果采购
现在需要采购一些苹果,每名同学都可以分到固定数量的苹果,并且已经知道了同学的数量,请问需要采购多少个苹果?
输入格式:
输入两个不超过 109109 正整数,分别表示每人分到的数量和同学的人数。
输出格式:
一个整数,表示答案。保证输入和答案都在 int 范围内的非负整数。
1 2 3 4 5 6 7 8
| #include<stdio.h> int main() { int a,b,c; scanf("%d%d",&a,&b); c=a*b; printf("%d",c); }
|
字母转换
输入一个小写字母,输出其对应的大写字母。例如输入 q[回车] 时,会输出 Q。
1 2 3 4 5 6 7 8
| #include<stdio.h> int main() { char a; scanf("%c",&a); a-=32; printf("%c",a); }
|
在ASCII码表中,小写字母比大写字母大32.
数字反转
输入一个不小于 100100 且小于 10001000,同时包括小数点后一位的一个浮点数,例如 123.4 ,要求把这个数字翻转过来,变成 4.321 并输出。
1 2 3 4 5 6 7 8 9 10 11
| #include<stdio.h> int main() { float a,b; int c,d; scanf("%f",&a); c=a*10; d=c%10*1000+c/10%10*100+c/100%10*10+c/1000; b=(float)d/10; printf("%5.1f",b); }
|
运行结果:
656.8↙
865.6
浮点数不能取余,所以干脆变成整形转换,转换完成后在变回来。可以使用强制类型转换,也可定义中间变量。最后输出时“%5.1f”,意思是至少占5个字符宽度(包括一位小数和一个小数点),且小数点后面有1位小数,小数点占一位,所以整数部分至少占3位。
懒人法(直接利用字符串)
1 2 3 4 5 6 7
| #include <stdio.h> char a, b, c, d; int main(){ scanf("%c%c%c.%c", &a, &b, &c, &d); printf("%c.%c%c%c", d, c, b, a); return 0; }
|
再分肥宅水
现在有 t 毫升肥宅快乐水,要均分给 n 名同学。每名同学需要 2 个杯子。现在想知道每名同学可以获得多少毫升饮料(严格精确到小数点后3 位),以及一共需要多少个杯子。
输入格式:
输入一个实数 t 和一个正整数 n,使用空格隔开。
输出格式:
输出两行。
第一行输出一个三位小数,表示可以获得多少毫升饮料。第二行输出一个正整数,表示一共需要多少个杯子。
1 2 3 4 5 6 7 8 9 10
| #include <stdio.h> float a,c; int b,d; int main(){ scanf("%f %d",&a,&b); c=a/b; d=2*b; printf("%0.3f\n%d",c,d);; return 0; }
|
三角形面积
输入格式:
第一行输入三个实数a*,b,*c,以空格隔开。
输出格式:
输出一个实数,表示三角形面积。精确到小数点后 1位。
1 2 3 4 5 6 7 8 9 10 11
| #include <stdio.h> #include <math.h> double a,b,c,p,s; int main(){ scanf("%f %f %f",&a,&b,&c); p=0.5*(a+b+c); s=p*(p-a)*(p-b)*(p-c); s=sqrt(s); printf("%.1f\n",s);; return 0; }
|
double精度比float高,sqrt()是开根号的函数,使用时需引入头文件<math.h>。
上学迟到
学校和 yyy 的家之间的距离为 s 米,而 yyy 以 v 米每分钟的速度匀速走向学校。
在上学的路上,yyy 还要额外花费 10 分钟的时间进行垃圾分类。
学校要求必须在上午 8:00 到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。
由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include <stdio.h> int s,v,t,a,b,c,d,hour,min; int main(){ scanf("%d %d",&s,&v); t=s/v+10; if(s%v) {t=t+1;} hour=t/60; min=t%60; if(t>=1440) {printf("输入条件无效,提前时间大于24小时。");} else{ if(hour>8) {hour=8+24-hour;a=hour/10;b=hour%10;} if(8>hour>0){a=0;b=8-hour;} if(hour==0){a=0;b=7;} if(min!=0) {min=60-min;c=min/10;d=min%10;} else {c=d=0;} printf("%d%d:%d%d\n",a,b,c,d); } return 0; }
|
稍有麻烦的就是补零和时间格式。根据chatgpt建议修改代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include <stdio.h> int s,v,t,hour,min; int main(){ scanf("%d %d",&s,&v); t=s/v+10; if(s%v) {t=t+1;} hour=t/60; min=t%60; if(t>=1440) {printf("输入条件无效,提前时间大于24小时。");} else{ if(hour>8) {hour=8+24-hour;} if(hour<8&&hour>0) {hour=8-hour;} if(hour==0) {hour=7;} if(min==0) {min=60;} printf("%02d:%02d\n",hour,60-min); } return 0; }
|
在条件判断语句 8 > hour > 0
中,C 语言不支持连续的比较操作符(但我的编译器Dve能通过)。四位数的拆分可以通过输出格式前导零简化。不过还是没有通过洛谷的条件检测。可能有瑕疵尚未发现。
大象喝水
一只大象口渴了,要喝 2020 升水才能解渴,但现在只有一个深 h 厘米,底面半径为 r 厘米的小圆桶 (h* 和 r 都是整数)。问大象至少要喝多少桶水才会解渴。这里我们近似地取圆周率 π=3.14。
输入格式:
输入有一行:包行两个整数,以一个空格分开,分别表示小圆桶的深 h 和底面半径 r,单位都是厘米。
输出格式:
输出一行,包含一个整数,表示大象至少要喝水的桶数。
1 2 3 4 5 6 7 8 9
| #include <stdio.h> int h,r,v,k; int main(){ scanf("%d %d",&h,&r); v=3.14*r*r*h*100; k=2000000/v; if(2000000%v) {k=k+1;} printf("%d",k); }
|
毕竟没有2.5桶水,也不能四舍五入。所以引入条件判断。
小鱼的游泳时间
伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。
这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按 2424 小时制计算),它发现自己从 a 时 b 分一直游泳到当天的 c 时 d* 分,请你帮小鱼计算一下,它这天一共游了多少时间呢?
输入格式:
一行内输入四个整数,以空格隔开,分别表示题目中的 �,�,�,�a,b,c,d。
输出格式:
一行内输出两个整数 e 和 f,用空格间隔,依次表示小鱼这天一共游了多少小时多少分钟。其中表示分钟的整数 f 应该小于 6060。
1 2 3 4 5 6 7 8 9
| #include <stdio.h> int a,b,c,d,e,f; int main(){ scanf("%d %d %d %d",&a,&b,&c,&d); f=(c-a)*60+d-b; e=f/60; f=f%60; printf("%d %d",e,f); }
|
小玉买文具
班主任给小玉一个任务,到文具店里买尽量多的签字笔。已知一只签字笔的价格是 11 元 99 角,而班主任给小玉的钱是 a 元 b 角,小玉想知道,她最多能买多少只签字笔呢。
输入格式:
输入只有一行两个整数,分别表示 a 和 b。
输出格式:
输出一行一个整数,表示小玉最多能买多少只签字笔。
1 2 3 4 5 6 7 8 9
| #include <stdio.h> int a,b,c; int main() { scanf("%d %d",&a,&b); c=a*10+b; c=c/19; printf("%d",c); }
|
成绩
牛牛最近学习了 C++ 入门课程,这门课程的总成绩计算方法是:
总成绩=作业成绩×20%+小测成绩×30%+期末考试成绩×50%
牛牛想知道,这门课程自己最终能得到多少分。
输入格式:
三个非负整数 A*,B,C,分别表示牛牛的作业成绩、小测成绩和期末考试成绩。相邻两个数之间用一个空格隔开,三项成绩满分都是100 分。
输出格式:
一个整数,即牛牛这门课程的总成绩,满分也是 100 分。
1 2 3 4 5 6 7 8
| #include <stdio.h> int a,b,c,x; int main() { scanf("%d %d %d",&a,&b,&c); x=a*0.2+b*0.3+c*0.5; printf("%d",x); }
|