我的C语言编程非常基础:我可以打印出ASCII表。
问题是每行打印出10个ASCII字符,例如:
characters 1-10 (newline)
characters 10-20...
and so on up to 255
int main() {
int i;
while (i <= 255) {
printf("%c", i);
i = i + 1;
}
exit(0);
}
答案 0 :(得分:3)
以下建议的代码
isprint()
中的ctype.h
来确定是输出当前字符还是输出“。”。现在,建议的代码:
#include <stdio.h>
#include <ctype.h>
int main( void )
{
for( int i = 0; i<256; i++ )
{
if( !( i%10 ) )
{
printf( "\n%3d thru %3d ", i, i+9 );
}
if( isprint( i ) )
{
putchar( i );
}
else
{
putchar( '.' );
}
}
}
以上代码的输出为:
000 thru 009 ..........
010 thru 019 ..........
020 thru 029 ..........
030 thru 039 .. !"#$%&'
040 thru 049 ()*+,-./01
050 thru 059 23456789:;
060 thru 069 <=>?@ABCDE
070 thru 079 FGHIJKLMNO
080 thru 089 PQRSTUVWXY
090 thru 099 Z[\]^_`abc
100 thru 109 defghijklm
110 thru 119 nopqrstuvw
120 thru 129 xyz{|}~...
130 thru 139 ..........
140 thru 149 ..........
150 thru 159 ..........
160 thru 169 ..........
170 thru 179 ..........
180 thru 189 ..........
190 thru 199 ..........
200 thru 209 ..........
210 thru 219 ..........
220 thru 229 ..........
230 thru 239 ..........
240 thru 249 ..........
250 thru 259 ......
您可能想要修改建议的代码,例如:
答案 1 :(得分:2)
根据先前的答案,由于控制台(终端)的行为可能很奇怪,因此打印非ASCII字符是不好的。改为打印其他内容-例如点,
#define MINCHAR 32
#define MAXCHAR 127
int main() {
int i = 0;
while(i<=255) {
putchar((i >= MINCHAR && i <= MAXCHAR) ? i : '.');
if(!(i % 10) && i) putchar('\n');
i = i + 1;
}
putchar('\n');
}
答案 2 :(得分:1)
因此,如果您希望每隔10个字符换一行,则此代码应该有效。
int main() {
int i = 0;
while(i<=255) {
printf("%c", i);
if(i % 10 == 0)
printf("\n");
i = i + 1;
}
exit(0);
}