实验1

实验1

task1

1 #include <stdio.h>
2 int main()
3 {
4     printf(" o \n");
5     printf("<H>\n");
6     printf("I I\n");
7 
8     return 0;
9 }
View Code

屏幕截图 2026-03-18 141626

 

task1_1

 1 #include <stdio.h>
 2 int main()
 3 {
 4     printf(" o \n");
 5     printf("<H>\n");
 6     printf("I I\n");
 7     printf(" o \n");
 8     printf("<H>\n");
 9     printf("I I\n");
10 
11     return 0;
12 }
View Code

屏幕截图 2026-03-18 141718

 

task1_2

 1 #include <stdio.h>
 2 int main()
 3 {
 4     printf(" o \t o \n");
 5     printf("<H>\t<H>\n");
 6     printf("I I\tI I\n");
 7 
 8 
 9     return 0;
10 }
View Code

屏幕截图 2026-03-18 141740

 

task2

 1 #include <stdio.h>
 2 int main()
 3 {
 4      double a, b, c;
 5 
 6     scanf("%lf%lf%lf", &a, &b, &c);
 7 
 8     if(a+b > c && a+c > b && b+c > a)
 9         printf("能构成三角形\n");
10     else
11         printf("不能构成三角形\n");
12 
13     return 0;
14 }
View Code

 

屏幕截图 2026-03-18 141859

屏幕截图 2026-03-18 141910

 

task3

 1 #include <stdio.h>
 2 int main()
 3 {
 4     char ans1, ans2;  
 5 
 6     printf("每次课前认真预习、课后及时复习了没? (输入y或Y表示有,输入n或N表示没有) :  ");
 7     ans1 = getchar(); 
 8 
 9     getchar();
10 
11     printf("\n动手敲代码实践了没? (输入y或Y表示敲了,输入n或N表示木有敲) :  ");
12     ans2 = getchar();
13 
14     if ((ans1 == 'y' || 'Y') && (ans2 == 'y' || 'Y')) 
15         printf("\n罗马不是一天建成的, 继续保持哦:)\n");
16     else
17         printf("\n罗马不是一天毁灭的, 我们来建设吧\n");
18 
19     return 0;
20 }
View Code

屏幕截图 2026-03-18 141949

屏幕截图 2026-03-18 142232

 

question:会出现输入第一个问题答案后,敲下回车就直接进行判断,然后给出“罗马不是一天毁灭的,我们来建设吧”的答案。原因是当代码中没有“getchar()”时,当你输入第一个答案并按回车时,答案会被赋予ans1,而回车被赋予ans2,导致输出第二个回答。

task4

 1 #include <stdio.h>
 2 int main()
 3 {
 4     double x, y;
 5     char c1, c2, c3;
 6     int a1, a2, a3;
 7 
 8     scanf_s("%d%d%d", &a1, &a2, &a3);
 9     printf("a1 = %d, a2 = %d, a3 = %d\n", a1, a2, a3);
10     getchar();
11 
12     scanf_s("%c%c%c", &c1,1, &c2,1, &c3,1);
13     printf("c1 = %c, c2 = %c, c3 = %c\n", c1, c2, c3);
14     getchar();
15 
16     scanf_s("%lf,%lf", &x, &y);
17     printf("x = %lf, y = %lf\n", x, y);
18 
19     return 0;
20 }
View Code

屏幕截图 2026-03-18 143503

 

task5

 1 #include <stdio.h>
 2 int main()
 3 {
 4        int year;
 5        year = 1e9/60/60/24/365;
 6    
 7 
 8     printf("10亿秒约等于%d年\n", year);
 9 
10     return 0;
11 }
View Code

屏幕截图 2026-03-18 143543

 

task6

 1 #include <stdio.h>
 2 #include <math.h>
 3 int main()
 4 {
 5     double x, ans;
 6 
 7     scanf("%lf", &x);
 8     ans = pow(x, 365);
 9     printf("%.2f的365次方: %.2f\n", x, ans);
10 
11     return 0;
12 }
View Code

屏幕截图 2026-03-18 143639

屏幕截图 2026-03-18 143649

屏幕截图 2026-03-18 143720

 

task6_1

 1 #include <stdio.h>
 2 #include <math.h>
 3 int main()
 4 {
 5     double x, ans;
 6 
 7     while (scanf_s("%lf", &x) == 1)
 8     {
 9     
10         ans = pow(x, 365);
11         printf("%.2f的365次方: %.2f\n", x, ans);
12         printf("\n");
13     }
14     return 0;
15 }
View Code

屏幕截图 2026-03-18 144156

 

task7

 1 #include <stdio.h>
 2 int main()
 3 {
 4     double C, F;
 5 
 6     while (scanf_s("%lf", &C) == 1)
 7     {
 8         F = 1.8 * C + 32;
 9         printf("摄氏度C=%.2f时,华氏度=%.2f\n",C, F);
10         printf("\n");
11     }
12     return 0;
13 }
View Code

屏幕截图 2026-03-18 152238

 

task8

 1 #include <stdio.h>
 2 #include <math.h>
 3 int main()
 4 {
 5     int a, b, c;
 6     double area,s;
 7 
 8     while (scanf_s("%d%d%d", &a,&b,&c) == 3)
 9     {
10         s = (a + b + c) / 2.0;
11         area = sqrt(s * (s - a) * (s - b) * (s - c));
12         printf("a = % d, b = % d, c = % d, area = % .3f\n",a,b,c, area);
13         printf("\n");
14     }
15     return 0;
16 }
View Code

屏幕截图 2026-03-18 150257

实验总结

1.学会“while(scan_s(%d%d%d,&a,&b,&c) == 3)”,task6,7,8中都有用到类似代码,这是一种循环读取输入的写法,其核心逻辑是用scanf_s的返回值来控制循环。以开头代码为例,scanf_s返回值表示成功读取变量个数,如果成功读取3个整数,返回3,此时while括号内为真,表示为1,此时将进行循环;如果输入内容不符合格式(比如输入字母),返回小于3的值;如果遇到文件结束符(EOF),返回-1(好吧,这个EOF不太理解,根据提供的包含EOF的代码进行编程也无法运行,没懂,不会用)。

2.在编写task8时,第三个运算结果出现错误,问题出现在“s = (a+b+c)/2”,因为a,b,c都是int类型,所以执行的是整数除法,会直接截断小数部分,导致结果偏小,应该将2改为2.0,让除法变成浮点数整除,就能得到正确结果。想要得到精确结果要用浮点数整除。(这些细节真是防不胜防啊,老是在一些阴暗旮旯里出错,还有那个“;”,老是漏加:()

总结:真好玩,就是有点费脑子。:)                                                                       

                                                                                                                                                                                                                                                                                                                            2026-03-18

posted @ 2026-03-18 16:08  dd-ding  阅读(3)  评论(0)    收藏  举报