实验
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { printf(" O \n"); printf("<H>\n"); printf("I I\n"); printf("\n"); printf(" O \n"); printf("<H>\n"); printf("I I\n"); system("pause"); return 0; }
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { printf(" O O \n"); printf("<H> <H>\n"); printf("I I I I\n"); system("pause"); return 0; }
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { double x,y; scanf("%lf",&x); y=pow(x,365); printf("%.2f的365次方:%lf\n",x,y); system("pause"); return 0; }
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { double x, y; while(scanf("%lf", &x)!=EOF) {y = pow(x, 365); printf("%.2f的365次方:%lf\n", x, y); } system("pause"); return 0; }
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { double F, C; while(scanf("%lf", &C)!=EOF) { F = (9 * C) / 5 + 32; printf("摄氏度C=%.2lf时,华氏度F=%.2lf", C, F); } system("pause"); return 0; }
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { unsigned a1, q, sum, n; printf("n= "); scanf("%u", &n); a1 = 1; q = 2; sum = a1 * (1 - pow(q, n)) / (1 - q); printf("sum=%u",sum); system("pause"); return 0; }
若把32改为64,sum结果仍为4294967295
原因:int占四个字节,能够表示的整数范围0~4294967295,而int默认为有符号位,所以若用int无法实现。但如若用unsigned,则恰好能表示
但若是把32改为64,则unsigned也无法满足,double类型可以满足
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { int a1, a2, a3; char c1, c2, c3; double x, y; scanf("%d%d%d", &a1, &a2, &a3);//原代码缺少取字符 printf("%d,%d,%d\n", a1, a2, a3); scanf("%c%c%c", &c1, &c2, &c3); printf("%c,%c,%c\n", c1, c2, c3); scanf("%lf%lf", &x, & y);//原代码加了逗号,scanf双引号之间不建议加逗号,易出错 printf("%.1lf,%.1lf\n", x, y);//为了输出只有一位小数,最好使用格式修饰符 system("pause"); return 0; }
注意:在输入类型为数字时打空格,此代码下输出效果差别不大;但输入为字符时,空格也算符号,则输出效果完全不同
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { int aged1, aged2; char gender1, gender2; scanf("%d%c%d%c", &aged1,&gender1,&aged2, &gender2); printf("aged1=%d,gender1=%c\n", aged1, gender1); printf("aged2=%d,gender2=%c\n", aged2, gender2); system("pause"); return 0; }
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { char ans1,ans2; printf("每次课前认真预习、课后及时复习了没?(输入y或Y表示有,输入n或N表示没有): "); ans1 = getchar(); getchar(); printf("\n动手敲代码实践了没?(输入y或Y表示敲了,输入n或N表示木有敲): "); ans2 = getchar(); if ((ans1 == 'y' || ans1 == 'Y')&&(ans2=='y'||ans2=='Y')) printf("\n罗马不是一天建成的,继续保持哦:)\n"); else printf("\n罗马不是一天毁灭的,我们来建设吧\n"); system("pause"); return 0; }
如果把单个getchar()删去,则第一个符号输入完后输入空格,自动默认为非y或Y
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int ans; char words[5000]; printf("网课学习让一些人欢喜一些人忧\n"); printf("1.作为喜欢自学且自律的人,觉得这样很好,有网络,自主学习,很ok\n"); printf("2.不喜,不喜,很不喜,眼睛快瞎了,脑壳有点卡...\n"); printf("3.中间派,不知道,说不清.\n"); printf("4.其他...\n"); printf("你的选择: \n"); scanf("%d",& ans); if (ans == 4) { printf("请补充说明你的想法: \n"); getchar(); gets(words); } printf("\n"); printf("当遇到问题时,你会选择:\n"); printf("1.遇到问题,就解决问题,不懂的,搜索式学习,逐个攻破.\n"); printf("2.遇到问题,不高兴,然后,...,没有然后了.\n"); printf("3.其他...\n"); printf("你的选择:\n"); scanf("%d", &ans); if (ans == 1) printf(":)\n"); else if (ans == 2) printf("这样不能解决问题啊.....我们选择1好不好:)"); else if (ans ==3) { printf("请补充说明你的想法:\n"); getchar(); gets(words); } system("pause"); return 0; }
如果把单个的getchar()删去,则无法吞掉我们所按的回车键,那么我们即使选择了补充自己想法,电脑默认回车即为想法,因此而结束本个问题。
二、实验总结
1、收获
对于代码的流程清楚明晰了起来,初步认识了必要的关键字和一些格式修饰符,并且我进一步感受到了c语言的魅力
2、易错点
1)取字符之间一定要加逗号
2)使用scanf时输入字符要注意不要输入多余的字符,尤其是回车键
3)if条件句后千万不要加逗号,不然会报错
4)getchar可以吃掉回车键,要善于使用
5)记住ans=='y',这里面既要注意等号是两个!!!!又要注意y使用时要加单引号
6)!=EOF要三次执行Ctrl+Z+Enter
7)注意不同关键字所占字节以及能表示的最大整数