实验1_C语言输入输出和简单程序应用编程
任务1:
// 打印一个字符小人 #include <stdio.h> int main() { printf(" O \n"); printf("<H>\n"); printf("I I\n"); printf(" O \n"); printf("<H>\n"); printf("I I\n"); return 0; }
// 打印一个字符小人 #include <stdio.h> int main() { printf(" O O\n"); printf("<H> <H>\n"); printf("I I I I\n"); return 0; }
任务2:
#include <stdio.h> int main() { double a, b, c; // 输入三边边长 while(scanf("%lf%lf%lf", &a, &b, &c)!=EOF){ // 判断能否构成三角形 if ((a + b > c) && (a + c > b) && (b + c > a)) printf("能构成三角形\n"); else printf("不能构成三角形\n");} return 0; }
任务3:
#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; }
当把getchar();去掉后,重新编译运行,可能出现的结果是:即使你正确地输入了第一个问题的答案并准备输入第二个问题的答案时,程序可能会直接输出 “罗马不是一天毁灭的,我们来建设吧”
当回答第一个问题后按下回车键时,除了输入的字符被读取到ans1外,回车键会产生一个换行符留在输入缓冲区中。如果没有额外的getchar()来处理这个换行符,那么在读取第二个答案时,这个换行符会被立即读取到ans2,而不是等待我输入新的字符。这样,无论我们原本期望输入什么作为第二个答案,程序都认为是换行符,从而导致判断条件不满足,输出错误的结果。
任务4:
#include <stdio.h> int main() { double x, y; char c1, c2, c3; int a1, a2, a3; scanf("%d%d%d", &a1, &a2, &a3);//scanf("%d%d%d", a1, a2, a3); printf("a1 = %d, a2 = %d, a3 = %d\n", a1, a2, a3); scanf(" %c%c%c", &c1, &c2, &c3); printf("c1 = %c, c2 = %c, c3 = %c\n", c1, c2, c3); scanf("%lf,%lf", &x, &y);//scanf("%f,%lf", &x, &y); printf("x = %lf, y = %lf\n", x, y); return 0; }
任务5:
#include <stdio.h> int main() { int year; double secondsInYear = 60 * 60 * 24 * 365.25; // 考虑闰年,平均一年的秒数 year = (int)((1000000000.0 / secondsInYear) + 0.5); printf("10 亿秒约等于 %d 年\n", year); return 0; }
任务6:
#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"); }
任务7:
#include <stdio.h> int main() { double c; printf("请输入摄氏度温度:"); scanf("%lf", &c); while (c>= 0) { double f= 1.8 * c + 32; printf("摄氏度 c = %.2lf 时,华氏度 f = %.2lf。\n", c, f); printf("请输入摄氏度温度:"); scanf("%lf", &c); } return 0; }
任务8:
#include<stdio.h> #include<math.h> int main() { double a,b,c; while(scanf("%lf %lf %lf",&a,&b,&c)!=EOF) { if(a+b>c&&a+c>b&&b+c>a) { double p,area; p=(a+b+c)/2; area=sqrt(p*(p-a)*(p-b)*(p-c)); printf("a=%.0f b=%.0f c=%.0f area=%.3f\n",a,b,c,area); } else printf("0\n"); } return 0; }