实践1
任务1
源代码task1_1.c
#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;
}
运行测试截图

源代码task1_2.c
#include <stdio.h>
int main()
{
printf(" o o \n");
printf("<H> <H>\n");
printf("I I I I\n");
return 0;
}
运行测试截图

任务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;
}
运行测试截图

任务3
源代码task3.c
#include <stdio.h>
int main()
{
char ans1, ans2; // 保存用户输入的答案
printf("每次课及时预习/复习了没? (是-输入y或Y, 否-输入n或N) : ");
ans1 = getchar(); // 从键盘输入一个字符,赋值给ans1
getchar(); // 去掉这一行,重新编译运行,观察是否影响程序结果
printf("\n动手敲代码实践了没? (是-输入y或Y, 否-输入n或N) : ");
ans2 = getchar();
if ((ans1 == 'y' || ans1 == 'Y')&&(ans2 == 'y' || ans2 == 'Y')) // 待补足,判断ans1和ans2都是y(大小写均可)
printf("\n罗马不是一天建成的, 继续保持哦:)\n");
else
printf("\n罗马不是一天毁灭的, 我们来建设吧\n");
return 0;
}
运行测试截图

问题回答
分析:gatchar()的作用是从标准输入读取一个字符,返回读到字符的ASCII码;缺少它使程序跳过了第二次输入,直接读取到换行符,无法得到我们想要的结果。

结论:当把源代码line9去掉后,只输入第一个问题的答案,且不论你输入的是y还是n,它最后都会跳过第二次输入直接给出“罗马不是一天毁灭的, 我们来建设吧”这一结果。
任务4
源代码task4.c
// 计算10亿秒约等于多少年,并打印输出
#include <stdio.h>
int main()
{
int year;
int total_seconds = 1000000000;
int seconds_per_year = 365 * 24 * 60 * 60;
year = total_seconds / seconds_per_year;
// 补足代码
// ×××
printf("10亿秒约等于%d年\n", year);
return 0;
}
运行测试截图

任务5
源代码task5.c
// 摄氏温度转换成华氏温度
#include <stdio.h>
int main() {
double c, f;
scanf("%lf", &c);
f = c * 1.8 + 32;
// 待补足: 摄氏温度-> 华氏温度
// xxx
printf("摄氏度c = %.2f时, 华氏温度f = %.2f\n\n", c, f);
return 0;
}
运行测试截图

任务6
源代码task6.c
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c;
double s, area;
printf("请输入三角形的三边长 a, b, c(用空格或逗号分隔):");
if (scanf("%lf %lf %lf", &a, &b, &c) != 3) {
printf("输入无效,请确保输入三个数字。\n");
return 1;
}
s = (a + b + c) / 2.0;
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("三角形的面积为:%.3f\n", area);
return 0;
}
运行测试截图

实验总结
1.通过本次实践,我加深了对字符和运算符的理解,并基本掌握了字符与运算符的作用和使用要求,能够在编写代码时正确输入且正常运行;
2.本次实践也让我学习到新的代码,增长了我的理论知识库。

浙公网安备 33010602011771号