1. 程式人生 > >C primer plus 第六版 第八章 第二題 程式設計練習答案

C primer plus 第六版 第八章 第二題 程式設計練習答案

//本程式應題目而建立。
//   題目要求:  編寫一個程式,在遇到 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;
 }