首页 > 学院 > 开发设计 > 正文

C primer plus 字符输入输出

2019-11-08 02:26:18
字体:
来源:转载
供稿:网友

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;}

8.3  ctype.h 库中两个函数实现

 int isupper(int c); 判断字符C是否是大写字母。 int islower(int c); 判断字符C是否是小写字母。

8.4 程序将输入作为字符流读取,直到遇到EOF,报告每个单词的平均字母数。

其中空格和标点符号不应该计算。

#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;  
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表