实验1
实验结论
任务1
源代码
- task1.c
点击查看代码
#include <stdio.h>
int main()
{
printf(" 0 \n");
printf("<H>\n");
printf("I I\n");
return 0;
}
- 垂直方向
源代码task1_1.c
点击查看代码
#include <stdio.h>
int main()
{
printf(" 0 \n");
printf("<H>\n");
printf("I I\n");
printf(" 0 \n");
printf("<H>\n");
printf("I I\n");
return 0;
}
- 水平方向
源代码task1_2.c
点击查看代码
#include <stdio.h>
int main()
{
printf(" 0 0 \n");
printf("<H> <H>\n");
printf("I I I I\n");
return 0;
}
运行截图
- task1.c

task1_1.c

task1_2.c

任务2
源代码
- task2.c
点击查看代码
#include <stdio.h>
int main()
{
double a, b, c;
scanf("%lf%lf%lf", &a, &b, &c);
if(a + b > c && a + c > b && b + c >a)
printf("能构成三角形\n");
else
printf("不能构成三角形\n");
return 0;
}
运行截图
- task2.c
![image]()
![image]()
![image]()
任务3
源代码
- task3.c
点击查看代码
#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;
}
运行截图
- task3.c




问题
第9行去掉后会影响程序结果,会直接跳过第二个问题直接输出结果,且无论输入y、Y还是n、N,输出结果都是“罗马不是一天毁灭的,我们来建设吧”。经查找得知:getchar() 的作用是读取一个字符,原理是基于行缓冲机制从输入流中依次取字符,因此常用于清理缓冲区中残留的回车符。而这行代码的作用是吃掉第一次输入后遗留的回车符,防止它被第二个 getchar() 误读,导致程序“跳过第二次输入”。输入 y 再按回车,缓冲区里实际是 'y' 和 '\n' 两个字符。去掉第9行后,第一次输入残留的回车符会被第二个getchar()直接读走当作ans2,导致跳过第二次输入且判断恒为假,最终无论输入什么都会输出“罗马不是一天毁灭的,我们来建设吧”。
任务4
源代码
- task4.c
点击查看代码
#include <stdio.h>
#include <math.h>
int main()
{
int year;
year = (int)round(1000000000.0 / (3600*24*365));
printf("10亿秒约等于%d年\n", year);
return 0;
}
运行截图
- task4.c

任务5
源代码
- task5.c
点击查看代码
#include <stdio.h>
int main()
{
double c, f;
scanf("%lf", &c);
f = 9*c/5 + 32;
printf("摄氏度C = %.2f时,华氏温度f = %.2f\n\n", c, f);
return 0;
}
运行截图
- task5.c




任务6
源代码
- task6.c
点击查看代码
#include <stdio.h>
#include <math.h>
int main()
{
int a, b, c;
double s, x, area;
printf("请输入三角形三边长 :");
scanf("%d%d%d", &a, &b, &c);
if (a + b > c && a + c > b && b + c >a)
{
s = (a+b+c) * 1.0 / 2;
x = s*(s-a)*(s-b)*(s-c);
area = sqrt(x);
printf("a = %d,b = %d,c = %d,area = %.3f\n", a, b, c, area);
}
else
{
printf("不能构成三角形\n");
}
return 0;
}
运行截图
- task6.c





实验总结
通过这次试验了解到了函数round()和getchar()的作用和原理,巩固了算术运算符、关系运算符和逻辑运算符的使用方法,当然也锻炼了我写代码的能力。
posted on 2026-10-16 22:13 sunshine-c 阅读(7) 评论(1) 收藏 举报



浙公网安备 33010602011771号