prac1:實現從鍵盤任意輸入10個整數,用函式程式設計實現將其中最大數與最小數的位置對換後,再輸出調整後的陣列。
#include
#define arrsize 10
void
maxminexchang(
int
a,
int
n)
else
if
(a[i] < minvalue)
}
temp = a[maxpos];
a[maxpos] = a[minpos];
a[minpos] = temp;
}
main()
maxminexchang(a, n);
printf
(
"after maxminexchange:\n"
);
for
(i=0; i
printf
(
"\n"
);
}
prac2:輸入一行字元,統計其中的英文本元、數字字元、空格和其他字元的個數。
輸入提示資訊:"please input a string:"
輸入字串用gets()
輸出提示資訊和格式:
"english character: %d\n"
"digit character: %d\n"
"space: %d\n"
從stdio流中讀取
字串,直至接受到換行符或
eof時停止,並將讀取的結果存放在buffer
指標所指向的字元
陣列中。換行符不作為讀取串的內容,讀取的換行符被轉換為『\0』空字元,並由此來結束字串。
返回值讀入成功,返回與引數buffer相同的
指標;讀入過程中遇到
eof(end-of-file)或發生錯誤,返回
null指標。所以在遇到返回值為null的情況,要用
ferror或
feof函式檢查是發生錯誤還是遇到eof。
注意本函式可以無限讀取,不會判斷上限,所以程式設計師應該確保
buffer的空間足夠大,以便在執行讀操作時不發生溢位。如果溢位,多出來的字元將被寫入到
堆疊中,這就覆蓋了堆疊原先的內容,破壞乙個或多個不相關變數的值。
這個事實導致gets函式只適用於玩具程式,為了避免這種情況,我們可以用
fgets(stdin) (fgets實際上可以讀取標準輸入(即大多數情況下的鍵盤輸入),具體參閱
fgets詞條)來替換gets()。在v7的手冊(2023年)中說明:為了
向後相容,gets刪除換行符,gets並不將換行符存入
緩衝區。
由於可以無限讀取,所以在2023年12月,ansi 採納了 iso/iec 9899:2011 標準,標準中刪除了 gets()
函式,使用乙個新的更安全的函式gets_s()替代(具體用法看下面示例)。
用法:gets()函式用來從標準輸入裝置(鍵盤)讀取
字串直到換行符結束,但換行符會被丟棄,然後在末尾新增'\0'字元。其呼叫格式為:
gets(s);
其中s為字串變數(字串
陣列名或字串
指標)。
gets(s)函式與scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函式輸入字串時存在乙個問題,就是如果輸入了空格會認為字串結束,空格後的字元將作為下乙個輸入項處理,但gets()函式將接收輸入的整個字串直到遇到換行為止。
也就是說:gets()函式讀取到\n(我們輸入的回車)於是停止讀取,但是它不會把\n包含到字串裡面去。
回到題目上面:
修改如下:
#include
#include
int main()
printf("english character: %d\n", c);
printf("digit character: %d\n", b);
printf("space: %d\n", a);
printf("other character: %d\n", d);
return 0;
}ps:c語言中有判斷字元ch是否為英文本母的isalpha()函式,判斷大寫字母的isupper(),判斷小寫字母的islower()
以上函式都包括在中。
用法例項:(在visual c++6.0中執行通過) 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include
#include
int
main()
printf
(
"\n"
);
return
0;
}
輸出:bd
prac3:定義乙個長度為30的整型陣列,按順序賦予從2開始的偶數,然後按順序每5個數求出乙個平均值,放在另乙個陣列中,輸出這個陣列。
**輸出格式要求:"%6d"
程式的執行示例如下:
6 16 26 36 46 56
#include
int
main()
i = 0;
for
(j = 0; j < 6; j++)
}
b[j] = sum / 5;
printf
(
"%6d"
, b[j]);
}
printf
(
"\n"
);
}
prac4:
程式設計計算1~1000之內的所有完數(例如,6的因子是1,2,3,而1+2+3=6)。**輸入資料提示資訊:無
**輸入資料格式:無
**輸出格式要求:"%d\n"
# include
int
sb(
int
n)
if
(j==n)
return
1;
else
return
0;
}
void
main()
}
C語言指標陣列和陣列指標
初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...
C語言指標陣列和陣列指標
初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...
C語言指標陣列和陣列指標
初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...