个人练习感悟
1.三个任意整数从小到大排序
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c;
printf(“我可以为您进行从大到小排序,请任意输入三个的整数:”);
scanf(“%d%d%d”,&a,&b,&c);
if(a>b&&a>c)
if(b>c) printf(“%d,%d,%d”,a,b,c);
else if(b<c) printf(“%d,%d,%d”,a,c,b);
if(b>a&&b>c)
if(a>c) printf(“%d,%d,%d”,b,a,c);
else if(a<c) printf(“%d,%d,%d”,b,c,a);
if(c>a&&c>b)
if(a>b) printf(“%d,%d,%d”,c,a,b);
else if(a<b) printf(“%d,%d,%d”,c,b,a);
printf(“\n”);
return 0;
}
小结:
可以去除 if(…)只留下else,这样可以把相等的数包含进去
错误示例:没有if,直接在else后加(),这是错误写法,切记!!
当然,可能有更好的写法,但本小白还不知道(哭)
2.输入日期,可求出是这年的第几天
#include <stdio.h>
#include <stdlib.h>
int main()
{
int y,m,d,ey,day=0;
printf(“请输入日期(年-月-日):”);//计算该日期是这年的第几天
scanf(“%d-%d-%d”,y,m,d);
if((y%40&&y%100!=0)||(y%4000))
ey=29;
else ey=28;
switch(m)
{
case 12: day+=31;
case 11: day+=30;
case 10: day+=31;
case 9: day+=30;
case 8: day+=31;
case 7: day+=31;
case 6: day+=30;
case 5: day+=31;
case 4: day+=30;
case 3: day+=31;
case 2: day+=ey;
case 1: day+=31;
}
switch(m)
{
case 12: day-=31;break;
case 11: day-=30;break;
case 10: day-=31;break;
case 9: day-=30;break;
case 8: day-=31;break;
case 7: day-=31;break;
case 6: day-=30;break;
case 5: day-=31;break;
case 4: day-=30;break;
case 3: day-=31;break;
case 2: day-=ey;break;
case 1: day-=31;break;
}
day+=d;
printf(“%d”,day);
return 0;
}
小结:
吐血,调试结果是对的,但就是执行不了结果,是codeblocks的原因吗?
真给我整自闭了。
但是这个题利用了case的持续执行的特性,达到月份相加的效果,值得留意。
3.打印超级玛丽!
#include <stdio.h>
#include <stdlib.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”
);
return 0;
}
小结:
直接复制大佬的代码,学到了C语言中多行字符串的写法,真不错
printf中()独自一行,每行为“… \n”的格式
3.输入一个字符,输出一个字符的三角形
#include <stdio.h>
#include <stdlib.h>
int main()
{
char c;
scanf(“%c”,&c);
printf(" %c\n",c);
printf(" %c%c%c\n",c,c,c);
printf(“%c%c%c%c%c%c\n”,c,c,c,c,c);
return 0;
}
吐槽:
洛谷上的题,自己运行最后一个字符一直是“?”,但洛谷判断我是对的,奇了个怪了,也先保留一下吧
#就这样先,人生不如意之事十有八九,不过是少许风霜罢了(doge)
标签:case,##,31,C语言,break,得与失,printf,include,day
From: https://blog.csdn.net/Superachieve/article/details/142618779