编程题
6.19 请编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的 ASCII 代码值,每行输出三对。
输出时分别用格式控制符 %c
和 %d
就能将输入的每个字符及对应的 ASCII 码值输出。
环境:Microsoft Visual C++ 2010 学习版
ex6_19.c
#include <stdio.h>
#include <Windows.h>
int main(void)
{
char ch;
int i=0;
while ((ch = getchar()) != '\n')
{
i++;
printf(" 字符%c,ASCII码值%d", ch, ch);
if (i == 3)
{
putchar('\n');
i = 0;
}
}
printf("\n");
system("pause");
return 0;
}
编译运行结果:
6.20 请编写程序,输入一行数字字符(用回车结束),每个数字字符的前后都有空格。请编程,把这一行中的数字转换成一个整数。例如,若输入:
2 4 8 3 enter
则输出整数:2483。
字符 9
与字符 0
相减得到数值 9
,存入字符变量 l
:
l= '9' - '0'
因为事先不清楚数字字符的个数,所以先按输入的顺序将转换成数值的数字,除以对应次序的 10 次方,最后通过在总和上乘以 10 的,输入数字个数的次方。
环境:Microsoft Visual C++ 2010 学习版
ex6_20.c
#include <stdio.h>
#include <ctype.h>
#include <Windows.h>
int main(void)
{
char ch;
int i=1, j=1, k=1;
double sum=0, l=0;
while ((ch = getchar()) != '\n')
{
if (isspace(ch))
{
continue;
}
else
{
l = ch - '0';
for (i = j; i > 0; i--) /* 数字字符个数 */
{
l = l/10.0;
}
k = k*10;
sum += l;
j = j + 1;
}
}
sum = sum*k;
printf("%d\n", (int)sum);
system("pause");
return 0;
}
编译运行结果:
这样输出的才是一个整数,而不是数字紧贴着输出。
6.21 请编写程序统计输入的行数,用 ! 号结束输入,! 号所在行不计入行数。
环境:Microsoft Visual C++ 2010 学习版
ex6_21.c
#include <stdio.h>
#include <ctype.h>
#include <Windows.h>
int main(void)
{
int n;
char ch;
n = 0;
while ((ch = getchar()) != '!')
{
if (ch== '\n')
{
n++;
}
}
printf("行数为:%d\n", n);
system("pause");
return 0;
}
编译运行结果:
6.22 请编写程序统计输入的一行中小写字母的个数。
环境:Microsoft Visual C++ 2010 学习版
ex6_22.c
#include <stdio.h>
#include <ctype.h>
#include <Windows.h>
int main(void)
{
int n;
char ch;
n = 0;
while((ch = getchar()) != '\n')
{
if (islower(ch))
{
n++;
}
}
printf("小写字母的个数为:%d\n", n);
system("pause");
return 0;
}
编译运行结果:
6.23 请编写输出以下图案的程序,图案的行数由输入的整数值确定(每行中字符之间没有空格)。
A
B
B
B
C
C
C
C
C
D
D
D
D
D
D
D
E
E
E
E
E
E
E
E
E
\begin{aligned} &A \\ B&BB \\ CC&CCC \\ DDD&DDDD \\ EEEE&EEEEE \\ \end{aligned}
BCCDDDEEEEABBCCCDDDDEEEEE
环境:Microsoft Visual C++ 2010 学习版
ex6_23.c
#include <stdio.h>
#include <Windows.h>
int main(void)
{
int i, j, n;
printf("请输入图案的行数:");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
for (j = 0; j < n-i; j++)
{
printf("%c", '\0');
}
for (j = 0; j < 2*i-1; j++)
{
printf("%c", 64+i);
}
printf("%c", '\n');
}
system("pause");
return 0;
}
编译运行结果: