實驗1_C語言輸入輸出和簡單程式應用程式設計

陈沫*發表於2024-09-28

實驗任務1:

task1.c

原始碼:

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 }

執行結果:

task1_1.c

原始碼:

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

執行結果:

task1_2.c

原始碼:

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

執行結果:

實驗任務2:

task2.c

原始碼:

 1 #include <stdio.h>
 2 int main()
 3 {
 4   double a, b, c;
 5   // 輸入三邊邊長
 6   scanf("%lf%lf%lf", &a, &b, &c);
 7   // 判斷能否構成三角形
 8   // 補足括號裡的邏輯表示式
 9   if(a+b>c&&a+c>b&&b+c>a)
10     printf("能構成三角形\n");
11   else
12     printf("不能構成三角形\n");
13   return 0;
14 }

執行結果:

實驗任務3:

task3.c

原始碼:

 1 #include <stdio.h>
 2 int main()
 3 {
 4     char ans1, ans2; 
 5     printf("每次課前認真預習、課後及時複習了沒? (輸入y或Y表示有,輸入n或N表示沒有) : ");
 6         ans1 = getchar(); // 從鍵盤輸入一個字元,賦值給ans1
 7     getchar(); // 思考這裡為什麼要加這一行。試著去掉這一行,看看對執行有沒有影響。
 8     printf("\n動手敲程式碼實踐了沒? (輸入y或Y表示敲了,輸入n或N表示木有敲) : ");
 9     ans2 = getchar();
10     if ((ans1 == 'y' || ans1 == 'Y') && (ans2 == 'y' || ans2 == 'Y'))
11         // 待補足,判斷使用者回答ans1和ans2都是小寫y或大寫Y
12         printf("\n羅馬不是一天建成的, 繼續保持哦:)\n");
13     else
14         printf("\n羅馬不是一天毀滅的, 我們來建設吧\n");
15     return 0;
16 }

執行結果:

回答問題:

getchar() 函式的使用是為了處理使用者輸入時留下的換行符(即消耗換行符)

實驗任務4:

原始碼:

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

錯誤:line9 a1a2a3前加& line15 f改為lf

執行結果:

實驗任務5:

task5.c

原始碼:

1 #include <stdio.h>
2 int main()
3 {
4     int year; 
5     year = (1000000000 + 15768000) / 31536000; 
6     printf("10億秒約等於%d年\n", year); 
7     return 0;
8 }

執行結果:

實驗任務6:

task6_2.c

原始碼:

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

執行結果:

實驗任務7:

task7.c

原始碼:

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     double c, f;
 6 
 7     while (scanf_s("%lf", &c) != EOF) 
 8     {
 9         f = c * 9.0 / 5.0 + 32.0;
10 
11         printf("攝氏度c = %.2f 時,華氏度f = %.2f \n", c, f);
12         
13         printf("\n");
14     }
15 
16     return 0;
17 }

執行結果:

實驗任務8:

task8.c

原始碼:

 1 #include <stdio.h>
 2 #include <math.h>
 3 
 4 int main()
 5 {
 6     double a, b, c, s, S;
 7 
 8     while (1) 
 9     {
10         printf("請輸入三角形的三條邊:\n");
11         scanf_s("%lf%lf%lf", &a, &b, &c);
12 
13         s = (a + b + c) / 2;
14         S = sqrt(s * (s - a) * (s - b) * (s - c));
15 
16         printf("三角形面積為: %.2f\n", S);
17         printf("\n");
18     }
19 
20     return 0;
21 }

執行結果:

實驗總結:

1.while語句的應用

比如:while (scanf_s("%lf", &c) != EOF) (實驗7)

還有其他形式:

while (1)
{
printf("請輸入三角形的三條邊:\n");
scanf_s("%lf%lf%lf", &a, &b, &c); (實驗8)

等等

2.四捨五入的不同表達

比如:a = a+0.5;

還有其他形式:

printf("三角形面積為: %.2f\n", S);

S = round(S * 100) / 100;

S = customRound(S, 2); 等等

3.重複輸入的不同表達

 1 #include <stdio.h>
 2 
 3 int main() {
 4     double a, b, c;
 5 
 6     while (1) { 
 7         printf("請輸入三角形的三條邊(輸入非數字結束):\n");
 8         if (scanf_s("%lf%lf%lf", &a, &b, &c) != 3) {
 9             printf("輸入無效,程式結束。\n");
10             break; 
11         }
12         printf("\n");
13     }
14 
15     return 0;
16 }

或者:

 1 #include <stdio.h>
 2 
 3 int main() {
 4     double a, b, c;
 5     char choice;
 6 
 7     do {
 8         printf("請輸入三角形的三條邊:\n");
 9         scanf_s("%lf%lf%lf", &a, &b, &c);
10 
11         printf("是否繼續輸入?(y/n):");
12         scanf_s(" %c", &choice); 
13     } while (choice == 'y' || choice == 'Y'); 
14 
15     return 0;
16 }

當然還有:

while (scanf_s("%lf", &c) != EOF)等等

相關文章