实验一
实验一
任务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&&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();//从键盘输入一个字符,赋值给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;
}
运行测试截图




回答问题
修改后运行测试截图

基于getchar()函数的作用本身进行反思,getchar()函数的功能是从输入设备读取的一个字符,在输入过程中,空格、换行属于不可打印字符,也会被getchar()在输入过程中读取,并赋值给ans2,会导致在判断时返回值一定为false,且无法回答第二个问题。
任务4
task4.c源代码
点击查看代码
//计算10亿秒约等于多少年,并打印输出
#include<stdio.h>
#include<math.h>
int main()
{
int year;
year=(int)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 a,b,c;
double p,area;
int main()
{
scanf("%d%d%d",&a,&b,&c);
p=(a+b+c)/2.0;
area=sqrt(p*(p-a)*(p-b)*(p-c));
printf("a=%d,b=%d,c=%d,area=%.3lf",a,b,c,area);
return 0;
}
运行测试截图

实验总结
对于任务4,在计算过程中出现了两个不同的结果。(如下图)


计算结果差异主要源于数据类型不同。在图二(31年)中,10亿按整型常量参与运算,后续除法均为整除,小数部分被自动舍去;改为浮点型常量并用round()四舍五入后得到图一(32年)。由此可见,数据类型会显著影响计算结果。
任务6中,scanf是格式化输入函数,格式符与变量类型必须严格匹配。若scanf中变量类型与定义类型不一致,scanf会按照错误类型解释输入并写入错误的内存宽度,导致数据存储异常、无法正常赋值。输出语句printf中,变量名只作为输出表达式,若格式符与参数类型匹配,调整变量名通常不会影响输出结果;但若类型不匹配,仍可能导致输出错误。

浙公网安备 33010602011771号