实验1
任务1
+源代码task1.c
点击查看代码
//打印一个字符小人
#include <stdio.h>
int main()
{
printf(" O \n");
printf("<H>\n");
printf("I I\n");
return 0;
}
点击查看代码
//打印一个字符小人
#include <stdio.h>
int main(void)
{
int i;
for(i=0;i<2;i++)
{
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
+源代码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'))
printf("\n罗马不是一天建成的,继续保持哦:)\n");
else
printf("\n罗马不是一天毁灭的,我们来建设吧\n");
return 0;
}
+运行测试截图

+实验结论
当把源代码line9去掉后,重新编译运行,结果仅能完成一次输入后回车,第二次的问答无法完成。getchar的作用可能是暂停程序等待用户按回车。
任务4
+源代码task4.c
点击查看代码
//计算10亿秒约等于多少年,并打印输出
#include <stdio.h>
#include <math.h>
int main()
{
int year;
double sec = 1000000000.0;
double year_d = sec/(365*24*3600);
year = round(year_d);
printf("10亿秒约等于%d年\n", year);
return 0;
}
+运行测试截图

任务5
+源代码task5.c
点击查看代码
// 摄氏度转换成华氏温度
#include <stdio.h>
int main()
{
double c, f;
scanf("%lf", &c);
f = c*9/5+32;
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;
scanf("%lf%lf%lf", &a, &b, &c);
s = (a+b+c)/2;
area = sqrt(s*(s-a)*(s-b)*(s-c));
printf("%.3f\n", a, b, c, area);
return 0;
}
+运行测试截图

实验总结
通过本次的实验实践,我对double、getchar等在编译运行过程中产生的运行效果有了更深入的理解,对于其本质逻辑也有了初步认知。认识到不同的代码逻辑运行出的不同效果,会在补足代码时思考更简洁的逻辑结构。
浙公网安备 33010602011771号