实验1 C语言简单程序编写
实验任务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();
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后:
运行测试截图:

分析和结论:键盘输入是行缓冲模式,y 后面的回车 '\n' 会留在输入缓冲区,line9是用来清理输入缓冲区中的回车符 '\n',让第二次输入能正常读取用户的真实答案。
实验任务4
task4.c:
// 计算10亿秒约等于多少年,并打印输出
#include <stdio.h>
#include <math.h>
int main()
{
int year;
year = (int)round(1000000000.0 / (365 * 24 * 3600));
printf("10亿秒约等于%d年\n", year);
return 0;
}
运行测试截图:

实验任务5
task5.c:
// 摄氏温度转换成华氏温度
#include <stdio.h>
int main() {
double c, f;
scanf("%lf", &c);
f = (9.0 / 5.0) * c + 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;
scanf("%lf %lf %lf", &a, &b, &c);
double s = (a + b + c) / 2.0;
double area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("area = %.3f\n", area);
return 0;
}
运行测试截图:

实验总结:
1.核心收获与思考:实验任务3和4给我的印象比较深,任务三中关于get char()作用的讨论使我联想到oj里输入字符判断类型并输出 ASCII码的那道题,同样的关键字,在不同位置,不同情况况下,所表示出的含义是不一样的 ,让我明白了代码的多样性,在平时学习里也应该多关注,多积累。实验4包括课上讲过的int()取整型和round()四舍五入,课上讲过的内容在课后立刻就能在题目中显现,让我明白了上课需要认真读老师展示的每一行代码,让自己有个印象,才能在课后面对实际问题时及时想到大体思路。
2.待解疑问:对于实验任务3中的思考问题的了解还是不够深入,我会加快自学进度并在下次课堂讲解时认真听讲。

浙公网安备 33010602011771号