C primer plus 第六版 第八章 第二题 编程练习答案

时间:2021-10-16 14:38:52

Github 地址:这里这里φ(>ω<*)

//本程序应题目而建立。
//   题目要求:  编写一个程序,在遇到 EOF 之前,把输入作为字符流读取。程序要打印每个输入的字符及其对应的 ASCII 十进制值。 
//               每行打印十对值。( 如果有的话 )


#include<stdio.h>
void printf_if_else(int j, int value);


   int main(void)
{
int   i = 0;    //循环用。
int   r_p = 0;  // read_put .读取输入及输出。



for (i = 0; ( r_p = getchar() ) != EOF; i++)
{
printf_if_else( i, r_p );
}


printf("\nOver ! \nBye !\n");


return 0;
 }


 void printf_if_else( int j, int value )
 {
int i = 0;      //保存 main 主函数 下的 i 值。
int r_p = 0;    //保存读取输入。
r_p = value;    //将输入进主函数的值,也就是 main 主函数下的 r_p 值保存进子函数的 r_p值。  方便编写。
i = j;          //将 main 主函数下的变量 i,循环用值 赋值到当前子函数。  方便编写。
char  n = '\n'; //保存换行符。  方便编写。                                                               
 
  //输出部分。
//在当前行满十对值的情况下。
if (i % 10 == 0 && r_p == n)
{
putchar(n);
printf("\\n  %d .   ", r_p);
}
else if (i % 10 == 0 && r_p != n)
{
putchar(n);
printf("%c  %d .   ", r_p, r_p);
}
else if (i % 10 == 0 && r_p == ' ')
{
putchar(n);
printf("Space  %d .   ", r_p);
}
//在当前行不满十对值的情况下。
else if (r_p == n)
{
printf("\\n  %d .   ", r_p);
}
else if (r_p == ' ')
{
printf("Space  %d .   ", r_p);
}
else 
{
printf("%c  %d .   ", r_p, r_p);
}
   
return 0;
 }