task1_1.c
#include<stdio.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"); return 0; }
task1_2.c
#include <stdio.h> int main() { printf(" O O \n"); printf("<H> <H>\n"); printf("I I I I\n"); return 0; }
task2_2.c
#include <stdio.h> #include <math.h> int main() { double x, ans; while(scanf("%lf", &x) != EOF) { ans = pow(x, 365); printf("%.2f的365次方: %.2f\n", x, ans); printf("\n"); } return 0; }
task2_3.c
#include<stdio.h> #include<math.h> int main() { double F,C; scanf("%lf",&C); while(C) { F=9.0/5*C+32; printf("摄氏度C=%.2f时,华氏度f=%.2f\n",C,F); scanf("%lf",&C); } return 0; }
task3.c
#include<stdio.h> int main() { double x,y; char c1,c2,c3; int a1,a2,a3; scanf("%d%d%d",&a1,&a2,&a3);//未加地址运算符 printf("%d,%d,%d\n",a1,a2,a3); getchar(); scanf("%c%c%c",&c1,&c2,&c3); printf("%c,%c,%c\n",c1,c2,c3); scanf("%lf,%lf",&x,&y);//输出精度double型f前要加l printf("%lf,%lf\n",x,y); return 0; }
task4.c
#include <stdio.h> #include<math.h> int main() { int age1, age2; char gender1, gender2; scanf("%d%c%d%c", &age1, &gender1, &age2, &gender2); printf("age1 = %d, gender1 = %c\n", age1, gender1); printf("age2 = %d, gender2 = %c\n", age2, gender2); return 0; }
task5.c
#include <stdio.h> int main() { char ans1, ans2; printf("第3章认真学完一遍了没? (输入y或Y表示认真学完一遍了,输入n或N表示没有) :"); ans1 = getchar(); // 从键盘输入一个字符,赋值给ans1 getchar(); // 思考这里为什么要加这一行。试着去掉这一行,看看对运行有没有影响。 printf("\n动手敲代码实践了没? (输入y或Y表示敲了,输入n或N表示木有敲) :"); ans2 = getchar(); if (ans1=='y'||ans2=='y'||ans1=='Y'||ans2=='Y') // 待补足,判断用户回答ans1和ans2都是小写y或大写Y printf("\n罗马不是一天建成的, 继续保持哦:)\n"); else printf("\n罗马不是一天毁灭的, 我们回头建设吧\n"); return 0; }
task6.c
#include<stdio.h> int main() { int answer; char words[5000]; printf("网课学习让一些人欢喜一些人忧.\n"); printf("1.作为喜欢自学且自律的人,觉得这样很好,有网络,自主学习,很OK.\n"); printf("2.不喜欢,很不喜欢,眼睛快瞎了,脑壳有点卡...\n"); printf("3.中间派,不知道,说不清.\n"); printf("4.其它...\n"); printf("你的选择是:"); scanf("%d",&answer); if(answer==4) { printf("请补充说明你的想法:\n"); getchar(); gets(words); } printf("\n"); printf("当遇到问题时,你会选择:\n"); printf("1.遇到问题就解决问题。不懂的,搜索式学习,逐个攻破.\n"); printf("2.遇到问题,不高兴。然后,...,没有了.\n"); printf("3.其它...\n"); printf("你的选择:"); scanf("%d",&answer); if(answer==1) printf(":)\n"); else if(answer==2) printf("这样不能解决问题啊...我们选择1好不好:)\n"); else if(answer==3) { printf("请补充说明你的想法: \n"); getchar(); gets(words); } return 0; }
实验总结
1.
EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束。
在微软的DOS和Windows中,读取数据时终端不会产生EOF。此时,应用程序知道数据源是一个终端(或者其它“字符设备”),并将一个已知的保留的字符或序列解释为文件结束的指明;最普遍地说,它是ASCII码中的替换字符(Control-Z,代码26)。
在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。
档案存取或其它 I/O 功能可能传回等于象征符号值 (巨集) EOF 指示档案结束的情形发生。实际上 EOF 的值通常为 -1,但它依系统有所不同。巨集 EOF会在编译原始码前展开实际值给预处理器。
C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。
原文链接:https://blog.csdn.net/henu1710252658/article/details/83040281
2.pow() 函数用来求 x 的 y 次幂(次方),其原型为:
double pow(double x, double y);
且头文件:#include <math.h>
3.在连续运用多个scanf()函数或getchar()函数时,为了防止上一次输入的‘\n'被下一个输入函数读取,要在期间加入一个 getchar(); 语句,使被缓存在读取区的’\n'被消耗,从而不会影响下一次读取。
4.在scanf()函数中,%f对应float类型,%lf对应double类型,两者需要严格区分,否则无法输入数据。