实验1
任务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
点击查看代码
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() 会读取包括空格、回车、Tab在内的所有字符,回车\n也是一个合法字符,不会自动忽略。有 getchar(); 的时候,ans1=getchar() 读取y,单独这行 getchar() 把缓冲区剩下的 \n 读取、扔掉,缓冲区清空,ans2 = getchar() 缓冲区空了,程序暂停,等待敲第二个字符。没有第9行 getchar() 的时候,ans1 = getchar(); 拿走缓冲区第一个字符 'y',赋值给ans1,缓冲区还剩下:'\n',程序直接跑到 ans2 = getchar();,直接读取缓冲区剩下的 \n 给到ans2。
任务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=9/5*c+32;
printf("摄氏度c = %.2f时, 华氏温度f = %.2f\n\n", c, f);
return 0;
}
- 运行测试截图

任务6
- 源代码task6
点击查看代码
#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("a=%.0f,b=%.0f,c=%.0f,area=%.3f",a,b,c,area);
return 0;
}
- 运行测试截图

实验总结
实验4中输入1000000000时,实验5中输入9时运行结果如图


因为1000000000,60,9,5 都是整数,C语言里整数除法 / 直接取其整数部分,所以要把数字由整型形式输入为浮点型形式代入进行运算
浙公网安备 33010602011771号