task1_1
源代码
#include<stdio.h> int main() { printf(" O \n"); printf("<H>\n"); printf("I I\n\n\n"); printf(" O \n"); printf("<H>\n"); printf("I I\n"); return 0; }
运行截图
task1_2
源代码
#include<stdio.h> int main() { printf(" O %16 O \n"); printf("<H> %16 <H>\n"); printf("I I %16 I I\n"); return 0; }
运行截图
task2_2
源代码
#include<stdio.h> #include<math.h> int main() { double x,ans; while(scanf("%lf",&x)!=EOF){ ans=pow(x,365); printf("ans=%f\n",ans); } return 0; }
task2_3
源代码
#include<stdio.h> #include<math.h> int main() { double x,ans; while(scanf("%lf",&x)!=EOF){ ans=(9.0/5)*x+32; //注意要将9/5转换为double类型计算,否则结果永远是32。 printf("摄氏度c=%f时,华氏度f=%.2f\n",x,ans); } return 0; }
task3
源代码
#include<stdio.h> #include<math.h> int main() { double n,sum; printf("n="); scanf("%lf",&n); sum=(1-pow(2.0,n))/(1-2); printf("sum=%f",sum); return 0; }
思考:答案错误,精度不足
将数据类型从double 改为 long double即可
#include<stdio.h> #include<math.h> int main() { long double n, sum, x; printf("n="); scanf_s("%lf", &n); x = pow(2.0, n); sum = (1 - x) / (1 - 2.0); printf("sum=%lf", sum); return 0; }
运行截图:
task 4
修改后的代码:
#include<stdio.h> int main() { double x, y; char c1, c2, c3; int a1, a2, a3; scanf_s("%d%d%d", &a1, &a2, &a3); printf("%d,%d,%d\n", a1, a2, a3); getchar(); c1 = getchar(); // printf("1\n"); c2 = getchar(); // printf("2\n"); c3 = getchar(); //printf("3\n"); getchar(); printf("%c\n", c1); printf("%c\n", c2); printf("%c\n", c3); scanf("%lf,%lf", &x, &y); printf("%f,%lf\n", x, y); return 0;//因为用scanf总是出现奇奇怪怪的错误 所以改用getchar,因为不知道程序到底进行到哪一步出了问题 所以中间添加了printf看程序进行到了哪一步 }
运行截图:
task5:
源代码:
#include <stdio.h> #define _CRT_SECURE_NO_WARNINGS 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; }
task6
源代码:
#include <stdio.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"); return 0; }
task7
#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(); // 这一行去掉之后会导致get(words)失效 因为回车键给到了get(words) 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:注意要将9/5转换为double类型计算。
2:中间添加了printf看程序进行到了哪一步,以更好地判断程序哪里除了问题。 例如getchar();用于吃掉enter键
3:易错点:scanf("%d",&a)不加取址符&
scanf的输入问题:scanf("%d %c",&a,%char1); 中间的空格可以吃掉输入时所有的空格;
%d%c%d%c输入的对应格式应该是数字字符(spacekey)数字字符
标签:main,int,scanf,实验,printf,include,getchar From: https://www.cnblogs.com/meijianfeng/p/16783259.html