实验1
四、实验结论
实验任务1
- 源代码task1_1.c
//打印垂直两个字符小人
#include <stdio.h>
int main()
{
int i;
for(i=0;i<2;i++)
{
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) && b<(a+c) && c<(a+b) )
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;
}
- 运行测试截图




- 问题回答
运行结果:

运行测试截图:



分析:
1.由函数名称getchar()可推测,该函数作用是读取输入的字符;,由于测试源代码line14未出现赋值运算符,推测line14对ans1、ans2的值无影响。
2.由测试图1-2,可知测试源代码line14对line9的读取没有影响,在line18执行前对ans2的值也无影响,认为是line18读取了错误的ans2的值,即输入Y后存在某个值占位。
3.由测试图2-3,可知测试时输入连续的Y(即YY)会导致line18也读取到Y,可知占位的值是Enter。同时证明getchar()读取的是单个字符而非字符串。
结论:
line14的getchar()目的是读取Enter,防止其占位导致line18错误读取。
实验任务4
- 源代码task4.c
//计算10亿秒等于多少年
#include <stdio.h>
#include <math.h>
int main()
{
int year ;
year = round( 1000000000.0/( 60*60*24*365 ) );
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()
{
int a, b, c;
double s, area;
scanf("%d%d%d", &a, &b, &c);
s = (a+b+c)/2.0;
area = sqrt(s*(s-a)*(s-b)*(s-c));
printf("a = %d,b = %d,c = %d,area = %.3f\n", a, b, c,area);
}
- 运行测试截图

五、实验总结
在旧版C语言标准(C89/C90)中不允许for循环中声明变量int
如图,初次运行task1__1时出现了这一神奇的报错,与记忆中for中可以直接定义int相悖。一开始以为是头文件,搜索后发现是因为文件后缀为.c导致规则与C++有差距,后缀换为cpp后果然不再报错。


在作业要提交源代码的情况下,最好将要做测试的文件另存
关于task3的测试,一开始直接在原文件中做了简单的测试,然后为了提交作业时的简便删去了测试语句。隔了几个小时后想进一步测试,结果被迫重新输入测试语句。这个故事告诉我们:“在作业要提交源代码的情况下,最好将要做测试的文件另存”。
对未知问题做分析,尤其是要写出分析过程和几轮时,不要在分析结束前和室友乱讨论
在对task3做测试时,刚刚做完黑盒测试,下意识和室友提了一句,结果室友直接说出了AI给予的结论。导致我对task3的测试几乎完全是顺着结论推原因。这个故事告诉我们:“对未知问题做分析,尤其是要写出分析过程和几轮时,不要在分析结束前和室友乱讨论”。

浙公网安备 33010602011771号