放假了,过年了,为防各位大神脑袋生锈,特请教一题【新手】
本帖最后由 DuanXu1 于 2013-02-09 16:54:38 编辑 C primer plus 第五版 p186 第2题:
题目叙述和我编的代码如下:
/*7.2.编写一个程序。该程序读取输入直到遇到#字符。使程序打印每个输入的字符以及它的
十进制ASCII码。每行打印8个字符/编码对。建议:利用字符计数和模运算符(%)在
每8个循环周期时打印一个换行符。
*/
#include <stdio.h>
#define STOP '#'
#define NEWLINE 8 //每行打印的对数
int main (void)
{
char ch;
int count = 0;
printf ("Enter a line of text (# to terminate):\n");
while ((ch = getchar ()) != STOP)
{
if (ch == '\n')
printf ("\\n %3d ", '\n'); //输出为可见字符
else if (ch == ' ')
printf ("Sp %3d ", ' '); //输出为可见字符
else
printf ("%2c %3d ", ch, ch);
if (++count % NEWLINE == 0)
printf ("\n");
}
getchar ();
getchar ();
return 0;
}
Enter a line of text (# to terminate):
This chapter has presented quite a few topics to review,#
T 84 h 104 i 105 s 115 Sp 32 c 99 h 104 a 97
p 112 t 116 e 101 r 114 Sp 32 h 104 a 97 s 115
Sp 32 p 112 r 114 e 101 s 115 e 101 n 110 t 116
e 101 d 100 Sp 32 q 113 u 117 i 105 t 116 e 101
Sp 32 a 97 Sp 32 f 102 e 101 w 119 Sp 32 t 116
o 111 p 112 i 105 c 99 s 115 Sp 32 t 116 o 111
Sp 32 r 114 e 101 v 118 i 105 e 101 w 119 , 44
Enter a line of text (# to terminate):
Enter two lines
#include <stdio.h>
#define STOP '#'
#define NEWLINE 8 //每行打印的对数
int main (void)
{
char ch;
int count = 0;
while(1)
{
printf ("Enter a line of text (# to terminate):\n");
while ((ch = getchar ()) != STOP)
{
if (ch == '\n')
printf ("\\n %3d ", '\n'); //输出为可见字符
else if (ch == ' ')
printf ("Sp %3d ", ' '); //输出为可见字符
else
printf ("%2c %3d ", ch, ch);
if (++count % NEWLINE == 0)
printf ("\n");
}
printf("\n");
if((ch= getchar()) =='\n')
continue;
}
return 0;
}
/*7.2.编写一个程序。该程序读取输入直到遇到#字符。使程序打印每个输入的字符以及它的
十进制ASCII码。每行打印8个字符/编码对。建议:利用字符计数和模运算符(%)在
每8个循环周期时打印一个换行符。
*/
#include <stdio.h>
#define STOP '#'
#define NEWLINE 8 //每行打印的对数
int main (void)
{
charch;
intcount = 0;
charbuffer[1024] = {0};
intoffset = 0;
printf ("Enter a line of text (# to terminate):\n");
while ((ch = getchar ()) != STOP)
{
buffer[offset++] = ch;
}
for (int i = 0; i < offset; i++)
{
ch = buffer[i];
if (ch == '\n')
printf ("\\n %3d ", '\n'); //输出为可见字符
else if (ch == ' ')
printf ("Sp %3d ", ' '); //输出为可见字符
else
printf ("%2c %3d ", ch, ch);
if (++count % NEWLINE == 0)
printf ("\n");
}
getchar ();
getchar ();
return 0;
}