1. 程式人生 > 實用技巧 >實驗2 彙編源程式和彙編除錯

實驗2 彙編源程式和彙編除錯

實驗報告

任務1

#include <stdio.h>
int main() {
    int a = 5, b = 7, c = 100, d, e, f;

    d = a / b * c;
    e = a * c / b;
    f = c / b * a;
    printf("d=%d, e=%d, f=%d\n", d, e, f);

    return 0;
}

任務2

#include <stdio.h>
int main() {
    int x=1234;
    float f=123.456;
    double m=123.456
; char ch='a'; char a[]="Hello, world!"; int y=3, z=4; printf("%d %d\n", y, z); printf("y=%d, z=%d\n", y,z); printf("%8d,%2d\n", x,x); printf("%f, %8f, %8.1f, %0.2f, %.2e\n",f,f,f,f,f); printf("%lf\n",m); printf("%3c\n", ch); printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n
",a,a,a,a,a); return 0; }

程式碼中12~13行輸出了整型資料

%8d表示以8位輸出,由於原資料為四位,故在左側用空格補足八位,%2d以兩位輸出,為避免損失,輸出原資料。

15行中,%f表示輸出浮點型;%8輸出八位;%8.1f輸出八位資料,保留一位小數;%0.2f輸出兩位小數;%.2e按指數形式輸出,保留兩位小數。

%lf:輸出雙精度型資料

%3c:輸出三位字元

%s:按字串輸出;%15s:輸出十五位字串;%10.5:輸出佔十位,取了前五位%2.5s:取前五位,佔兩位,為防損失輸出五位。%.3e以指數形式輸出,保留三位,a為字串,輸出三位。

任務3

#include<stdio.h>
int
main() { double x, y; char c1, c2, c3; int a1, a2, a3; scanf("%d %d %d\n", &a1, &a2, &a3); printf("%d,%d,%d\n", a1, a2, a3); scanf("%c%c%c", &c1, &c2, &c3); printf("%c%c%c\n", c1, c2, c3); scanf("%lf,%lf", &x, &y); printf("%lf,%1f\n", x, y); return 0; }

任務4

#include <stdio.h>
int main() {
    char x;
    x = getchar();
    if (x >= '0'&&x <= '9')
        printf("%c是數字字元\n", x);
    else if ((x >= 'A'&&x <= 'Z')||(x>='a'&&x<='z'))
        printf("%c是英文字母",x);
    else
        printf("%c是其它字元\n", x);
    return 0;
}

任務5

#include <stdio.h>
int main() {
    char ans1, ans2;
    printf("複習了沒? (輸入y或Y表示複習了,輸入n或N表示沒複習) : ");
    ans1 = getchar();
    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;
}

去掉第六行的“getchar()”後程序只接受了ans1就結束了

任務6

#include<stdio.h>
#include<math.h>
int main() {
    int n, sum;
    scanf_s("%d", &n);
    int k = n + 1;
    sum = 1 * (1 - pow(2,k))/ (1 - 2);
    printf("當n=%d時,sum=%d", n, sum);
    return 0;
}

實驗總結

任務1:程式進行計算時從左到右進行,由於程式碼中的資料都為整型,計算時結果只保留整數部分,因此會產生損失。各步計算順序不同,產生的誤差自然也不同。

任務2:

程式碼中12~13行輸出了整型資料

%8d表示以8位輸出,由於原資料為四位,故在左側用空格補足八位,%2d以兩位輸出,為避免損失,輸出原資料。

15行中,%f表示輸出浮點型;%8輸出八位;%8.1f輸出八位資料,保留一位小數;%0.2f輸出兩位小數;%.2e按指數形式輸出,保留兩位小數。

%lf:輸出雙精度型資料

%3c:輸出三位字元

%s:按字串輸出;%15s:輸出十五位字串;%10.5:輸出佔十位,取了前五位%2.5s:取前五位,佔兩位,為防損失輸出五位。%.3e以指數形式輸出,保留三位,a為字串,輸出三位。

任務5:程式碼中第六行內容刪除後,執行時只能接收一個回答。