C语言 计算一串字符中出现的数字字符数
生活随笔
收集整理的這篇文章主要介紹了
C语言 计算一串字符中出现的数字字符数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
getchar 函數的功能是讀取字符串并將其返回。輸入結束或讀取過程中發生錯誤時,就會返回EOF值。
#include <stdio.h>int main(void){int i, str;int count[10] = {0};puts("請輸入數字:");puts("輸入完成后 按 Enter"); puts("再按 Ctrl + z ");puts("Enter 結束");while ((str = getchar()) != EOF){switch (str){case '0' :count[0]++;break;case '1' :count[1]++;break;case '2' :count[2]++;break;case '3' :count[3]++;break;case '4' :count[4]++;break;case '5' :count[5]++;break;case '6' :count[6]++;break;case '7' :count[7]++;break;case '8' :count[8]++;break;case '9' :count[9]++;break;}}puts("數字字符的出現次數:");for (i = 0; i < 10; i++){printf("%d: %d\n", i, count[i]);} return 0; }運行結果:
注:
在需要對象式宏EOF的程序中,如果沒有包含<stdio.h>頭文件,則進行如下定義式不行的。
#define EOF -1
因為EOF規定為“負”,但不一定是“-1”。
緩沖:
緩沖:
在此程序中,并不是每讀入一個字符后就馬上輸出,而是按下回車鍵后一并輸出。
C語言的輸入輸出一般會將讀入的字符以及待輸出的字符暫時保存在緩存中,當達到下列條件時才進行實際的輸入輸出操作。
- 1.緩存已滿 (全緩沖)
- 2.輸入換行符 (行緩沖)
- 3.立即輸出 (無緩沖)
由于每個數字字符在ASCII 碼表中都有對應的值,通過以下程序可對字符的值進行打印。
#include <stdio.h>int main(void){int i;printf("EOF = %d\n", EOF);for (i = 0; i< 10; i++){printf("'%d' = %d\n", i, '0' + i);} return 0; }運行結果:
利用ASCII 碼表中字符對應的值,可改善 計算一串字符中出現的數字字符數程序中的代碼,使程序變得更加簡潔。
#include <stdio.h>int main(void) {int i, j, str;int count[10] = { 0 };puts("請輸入數字:");puts("輸入完成后 按 Enter");puts("再按 Ctrl + z ");puts("Enter 結束");while ((str = getchar()) != EOF) {if (str >= '0' && str <= '9') {count[str - '0']++;}}puts("數字字符的出現次數:");for (i = 0; i < 10; i++) {printf("%d: ", i);for (j = 0; j < count[i]; j++){putchar('*');}puts("");} }運行結果
總結
以上是生活随笔為你收集整理的C语言 计算一串字符中出现的数字字符数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言 递归实现辗转相除法 和 辗转相减
- 下一篇: C语言 字符串的读取