8.2 程序将输入作为字符流读取,直到遇到EOF。该程序打印每个输入字符及其ASCLL编码的十进制。
ASCLL 序列中空格字符前面的字符是非打印字符,需特殊处理。如换行符制表符。可使用控制字符 如 Ctrl+A 显示为^A, A 的ASCLL值是Ctrl+A的值加64.
除去每次遇到换行符就换行以外,每行打印10对值。
#include<stdio.h> #define CTRL '^' #define NUM 64 int main() { int ch; int n=0; while((ch=getchar())!=EOF) { if(ch=='/n') { PRintf("//n"); printf("%d ",ch); } else if(ch=='/t') { printf("//t"); printf("%d ",ch); } else if(ch<' ') { putchar(CTRL); putchar(ch+64); printf("%d ",ch); } else { putchar(ch); printf("%d ",ch); } n++; if(n%10 == 0) printf("/n"); } return 0;}
int isupper(int c); 判断字符C是否是大写字母。 int islower(int c); 判断字符C是否是小写字母。
其中空格和标点符号不应该计算。
#include<stdio.h> #include<ctype.h> int main() { int ch; int letter=0; int Word=0; bool isword=false; printf("please input. enter ctrl+z to end!/n"); while((ch=getchar())!=EOF) { if(!isspace(ch) && !ispunct(ch)) //仅统计字符数 不统计空格和特殊字符 letter++; if(!isspace(ch) && !isword && !ispunct(ch))// 到达单词尾部 { isword=true; word++; } if(isspace(ch) && isword) // 开始新的单词 isword=false; } printf("%d characters input/n",letter); printf("%d words input/n",word); printf("The average number is %.2f/n",(float)letter/word); return 0;新闻热点
疑难解答