c语言编程题.好心人帮忙解决一下啊.5分

来源:百度知道 编辑:UC知道 时间:2024/06/23 16:37:08
0.若变量已正确定义,在执行以下while语句时,输出字符A后,ch的值为什么是0呢?
while(ch=getchar()==‘A’
1.请编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的AscII代码值,每行输出3对.
2.请编写程序,输入一行数字字符,(用回车结束)每个数字字符的前后都有空格.请编程,把这一行中的数字变成一个整数.例如,若输入(<cr>代表回车键); 2 4 8 3 <cr>
则输出整数2483
3.请编写程序统计输入的行数,用!号结束输入,!号所在行不计入行数.
4.请编写程序统计输入的一行中小写字母的个数.

0.
while(ch=getchar()=='A')
==的优先级高于=,所以上面的条件执行顺序为:
getchar()
getchar()=='A'
ch=(getchar()=='A')
先获取输入的字符,再检测是否为'A',将其结果存入ch中...

综上,当输入的字符不是'A'时,得到的ch为0,输入的字符为'A'时,得到1.
将其修改,使ch先保存输入的字符,然后再与字符'A'比较:
while((ch=getchar())=='A')

1,2,3,4放一起了...
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

char str_data[512]; // 每行输入的字符最大为500
char *str_ptr;

void func1() {
int i;

puts("Num1:");
fgets(str_data, 500, stdin);
for (i=0, str_ptr=str_data; *str_ptr; ++str_ptr) {
if (isalpha(*str_ptr)) {
if (i == 3) {
i = 0;
printf("\n");
}
printf("%c - %d\t", *str_ptr, *str_ptr);
++i;
}
}

printf("\n");
}

void func2() {
long res;