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