1. 程式人生 > 實用技巧 >實驗一10.16

實驗一10.16

任務一

/*Trial1-A simple C program*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
    
    printf_s("my stuno is:202083450087\n2020,i will be better!\n");

    system("pause");

    return 0;
}

任務二

//迴圈列印字元

#include <stdio.h>

int main()
{
    while (1)
        printf("0 1");

    return
0; }

while (1);改為while (0);後閃退

//迴圈列印字元

#include <stdio.h>

int main()
{
    while (1)
        printf("S10冠軍Tes");

    return 0;
}

任務三 math1

//用C語言實現的一個簡單算數運算程式

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x, y;
    int r1, r2, r3, r4;

    x = 1;
    y = 2;

    r1 
= x + y; r2 = x - y; r3 = x * y; r4 = x / y; printf("r1 = %d\n", r1); printf("r2 = %d\n", r2); printf("r3 = %d\n", r3); printf("r4 = %d\n", r4); system("pause"); return 0; }

任務三 math2

//用C語言實現的一個簡單算數運算程式

#include <stdio.h>
#include <stdlib.h>

int main()
{
    
float x, y; float r1, r2, r3, r4; x = 1; y = 2; r1 = x + y; r2 = x - y; r3 = x * y; r4 = x / y; printf("r1 = %f\n", r1); printf("r2 = %f\n", r2); printf("r3 = %f\n", r3); printf("r4 = %f\n", r4); system("pause"); return 0; }

任務四

//測試你是哪一類學習者

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int answer;
    char words[5000];

    printf("在家上學讓一些人歡喜一些人憂.\n");
    printf("1. 作為一個宅,社恐,覺得這樣很好. 有網路,自主學習,很ok.\n");
    printf("2. 不喜,不喜,很不喜. 眼睛快瞎了. 腦殼有點卡...\n");
    printf("3. 中間派. 不知道. 說不清.\n");
    printf("4. 其它...\n");
    printf("你的選擇: ");
    scanf_s("%d", &answer);

    if (answer == 4)
    {
        printf("請補充說明你的想法: \n");

        getchar();
        gets_s(words);
    }
    printf("\n");
    printf("當遇到問題時, 你會選擇:\n");
    printf("1. 遇到問題, 就解決問題。不懂的,搜尋式學習,逐個攻破.\n");
    printf("2. 遇到問題, 不高興。然後,...,沒有了.\n");
    printf("3. 其它...\n");
    printf("你的選擇: ");
    scanf_s("%d", &answer);

    if (answer == 1)
        printf(":)\n");
    else if (answer == 2)
        printf("這樣不能解決問題啊...我們選擇1好不好:)\n");
    
    else if (answer == 3)
    {
        printf("請補充說明你的想法: \n");
        getchar();
        gets_s(words);
    }
    system("pause");
    return 0;

}

實驗筆記:

1.在任務4中,“scanf()”與“gets()”會被報錯,改為“scanf_s()”與“gets_s()”編譯成功。

原因:①scanf()不會檢查輸入邊界,可能造成資料溢位。scanf_s()會進行邊界檢查。

②gets()可以無限讀取,易發生溢位。如果溢位,多出來的字元將被寫入到堆疊中,這就覆蓋了堆疊原先的內容,破壞一個或多個不相關變數的值,由於可以無限讀取,所以在2011年12月,ANSI 採納了 ISO/IEC 9899:2011 標準,標準中刪除了 gets()函式,使用一個新的更安全的函式gets_s()替代

2.在任務4中,問題2選擇2後會閃退,不會顯示“選1好不好...”,加入的system("pause");不能放在函式else if下

實驗總結:

在熟練掌握C語言中各種函式意義、資料型別的同時不斷練習程式設計,出錯、試錯才能更好的學習、運用C語言。