16.C語言錯題整理

不爱美女爱辣条發表於2024-04-04

一些C語言錯題

//求n的階乘
   int sum=1;
   int n;
    printf("請輸入n的值:");
    scanf("%d",&n);
        for (int j = 1; j < n+1; ++j) {
            sum*=j;
        }
        printf("%d\n",sum);
 int hee=0;
    int b=1;
    for ( int j = 1; j <= 3; j++) {
            b *= j; // 計算n的階乘
        hee += b; // 將n的階乘加到總和中
    }

    printf("%d",hee);
//模擬使用者登入 只能登陸三次(即輸入三次密碼)
    int a;
    int i;
    int b = 123456;
    for (i = 0; i < 3; i++) {
        printf("請輸入密碼:");
        scanf("%d", &a);
        if (a == b) {
            printf("密碼正確");
            break;
        } else {
            printf("密碼不正確\n");
        }
    }
    if (i == 3)
        printf("輸入次數超過三次");
//    中間排除法
    int arr[]={1,2,3,4,5,6,7,8,9,10};
    int size=sizeof(arr)/sizeof(arr[0]);  //陣列長度
    int left=0;
    int right=size-1;
    int k=7;
    //只有左下標小於等於右下標才能進行迴圈
    while (left<=right) {
        int a = (left + right) / 2;
        if (arr[a] > k) {
            //如果一半大於要找的數 右下標變成中間那個+1
            right = a + 1;
        } else if (arr[a] < k) {
            //如果一半小於要找的數 左下標變成中間那個+1
            left = a + 1;
        } else {
            printf("%d\n", a);
            break;
        }
    }
    if(left>right){
        printf("找不到");
    }
   int a=3;
    a+=a-=a*=a;
    printf("%d",a);
    double x=1, y;
    y = x + 3 / 2;
    printf("%lf", y);
 int i=0,j=0;
    for (; i < 10; ++i){
        for (; j < 10; ++j){
            printf("a");
        }
    }
//影片程式設計題1 三個數從大到小輸出
int main(){
    int a,b,c;
    int max,mid,min;
    printf("請輸出第一個數:");
    scanf("%d",&a);
    printf("請輸出第二個數:");
    scanf("%d",&b);
    printf("請輸出第三個數:");
    scanf("%d",&c);
    max=a>b?(a>c?a:c):(b>c?b:c);
    min=a<b?(a<c?a:c):(b<c?b:c);
    mid=a+b+c-max-min;
    printf("從大到小為:");
    printf("%d ",max);
    printf("%d ",mid);
    printf("%d ",min);
}
//影片程式設計題2 列印1-100之間所有3的倍數的數字
int main(){
    for (int i = 1; i < 101; ++i) {
        if(i%3==0){
            printf("%d ",i);
        }
    }
}
//影片程式設計題3 給兩個數 求最大公約數
int main(){
    int a,b;
    printf("請輸出第一個數:");
    scanf("%d",&a);
    printf("請輸出第二個數:");
    scanf("%d",&b);
//這是為了假設  因為後面迴圈的是a%b
    if(a<b){
        int c=a;
        a=b;
        b=c;
    }
    int c;
    while (b!=0){
        c=a%b;
        a=b;
        b=c;

    }
    printf("最大公約數為:%d",a);
}
//影片程式設計題4 列印1000年到2000年之間的閏年
int main() {
    for (int i = 1000; i < 2001; i++) {
        if (i % 4 == 0 || i % 400 == 0 && i % 100 != 0) {
            printf("%d ", i);
        }

    }
}
//影片程式設計題5 列印100-200之間的素數
質數又稱素數 一個大於1的自然數,除了1和它本身外,不能被其他自然數(質數)整除
如果一個數可以寫成 i=a*b  那a或者b 一定<=根號i
#include<math.h>
int main() {
    for (int i = 100; i < 201; ++i) {
            int j=0;
            for(j=2;j<=sqrt(i);j++){
                if(i%j==0){
                    break;
                }
            }
            if(j> sqrt(i)){
                printf("%d ", i);
            }
        }
    }

int main() {
    int a = 0, b = 0;
    for (a = 1, b = 1; a < 101; a++) {
        if (b > 21) break;
        if (b % 3 == 1) {
            b = b + 3;
            continue;
        }
        b = b - 5;
    }
    printf("%d ", a);
}
//影片程式設計題6 1-100整數中出現多少個數字9
int main() {
    int count = 0;
    for (int i = 1; i < 101; ++i) {
        // 1-90 100
        if (i % 10 == 9) {
            count++;
        }
        //90-99
        else if (i / 10 == 9) {
            count++;
        }
    }
    printf("%d", count);
}
//影片程式設計題7 計算1/1-1/2+1/3-1/4........1/99+-1/100值
int main() {
    double sum = 0;
    int f=1;
    for (int i = 1; i < 101; ++i) {
        //1/1=1 1/2=0......... 1/88=0

        //剛開始f=1 對應i=1  然後f=-1 對應i=2 然後f=-(-1)=1 對應i=3.........
        sum +=f* 1.0 / i;
        //f變成-1
        f=-f;
    }
    printf("%.1lf", sum);
}

//影片程式設計題8 求10個整數中最大值
int main(){
    int a[9];
    //max=0錯誤 如果為負數那麼0最大 實際上你並未輸入0
    int max=a[0];
    for (int i = 0; i < 10; ++i) {
        printf("輸入數字:");
        scanf("%d",&a[i]);
        if(a[i]>max){
            max=a[i];
        }

    }
    printf("%d",max);
}
//影片程式設計題9 乘法口訣表
int main() {
    for (int i = 1; i <10; i++) {
        for (int j = 1; j <i+1; j++) {
            printf("%d*%d=%d\t", j, i, i * j);
        }
        printf("\n"); // 每行結束後換行
    }
}

相關文章