首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言指針數組排序實戰:scanf 格式化陷阱與 inc 函數參數誤用修正

     編輯:程式設計疑難解答

初學者編寫的 C 程序意圖輸入 10 個浮點數到數組,調用 inc 函數每個元素加 10 後輸出,但存在兩個關鍵錯誤:scanf 格式字符串包含多餘提示文本導致讀取失敗;inc 函數第二參數 n 未被使用,循環硬編碼 10。

錯誤代碼分析

// 錯誤 1:scanf 格式串包含中文提示,用戶必須原樣輸入才能匹配
scanf("___輸入各個元素值%f ____", p);

// 錯誤 2:inc 形參 n 未使用,循環寫死 10
void inc(float *pt, int n) {
    for (; m < 10; m++, p1++) *p1 += 10;
}

修正版代碼

#include <stdio.h>
void inc(float *pt, int n); // 聲明

int main() {
    float ar[10], *p;
    printf("輸入各個元素值: ");
    for (p = ar; p < ar + 10; p++)
        scanf("%f", p); // 純格式符,無多餘字符

    inc(ar, 10); // 傳入數組首地址與長度

    for (p = ar; p < ar + 10; p++)
        printf("%-8.2f ", *p);
    return 0;
}

void inc(float *pt, int n) {
    for (int m = 0; m < n; m++) // 使用參數 n
        pt[m] += 10;
}

關鍵點總結

  • scanf 只放格式符(%f、%d 等),提示信息用 printf 单独輸出
  • 函數參數要實際使用,避免硬編碼常數
  • 指針算術 p < ar+10 遍歷數組是 C 語言地道寫法
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved