实验一

实验一

任务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_1

task1_2.c源代码

点击查看代码
#include<stdio.h>
int main()
{
	printf(" O    O\n");
	printf("<H>  <H>\n");
	printf("I I  I I\n");
	return 0;
 } 

运行测试截图

task1_2

任务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; 
 } 

运行测试截图

task2_1

task2_2

task2_3

任务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; 
 } 

运行测试截图

task3_1

task3_2

task3_3

task3_4

回答问题

修改后运行测试截图

task3_5

基于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;
 } 

运行测试截图

task4_1

任务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;
 } 

运行测试截图

task5_1

task5_2

task5_3

任务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;
 } 

运行测试截图

task6

实验总结

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

task4_1

task4_2

计算结果差异主要源于数据类型不同。在图二(31年)中,10亿按整型常量参与运算,后续除法均为整除,小数部分被自动舍去;改为浮点型常量并用round()四舍五入后得到图一(32年)。由此可见,数据类型会显著影响计算结果。

任务6中,scanf是格式化输入函数,格式符与变量类型必须严格匹配。若scanf中变量类型与定义类型不一致,scanf会按照错误类型解释输入并写入错误的内存宽度,导致数据存储异常、无法正常赋值。输出语句printf中,变量名只作为输出表达式,若格式符与参数类型匹配,调整变量名通常不会影响输出结果;但若类型不匹配,仍可能导致输出错误。

posted @ 2026-10-16 20:19  Balena  阅读(15)  评论(0)    收藏  举报