c语言while语句和do...while语句01
本帖最后由 liyifeng295641 于 2024-1-3 15:54 编辑这是小甲鱼的题,我写哪里有问题。@FishC
0. 统计从键盘输入的一行英文句子中大写字母的个数。
https://xxx.ilovefishc.com/forum/201602/13/171228gssrpey525vpri5u.png
#include <stdio.h>
int main(){
int count = 0;
printf("请输入一行英文句子:");
while(getchar() != '\n'){
if(getchar() >= 'A' && 'Z' <= getchar()){
count++;
}
}
printf("你总共输入了%d个大写字母!", count);
}
你的代码只有一点小问题,就是在判断大写字母时有错误。在代码中,你调用了两次getchar()函数,但是每次调用都会读取一个字符,导致第二次调用与第一次的结果不同。为了解决这个问题,你可以将第一次调用的结果存储在一个变量中,然后在判断语句中使用这个变量。下面是修改后的代码:
#include <stdio.h>
int main(){
int count = 0;
char ch;
printf("请输入一行英文句子:");
while((ch = getchar()) != '\n'){
if(ch >= 'A' && ch <= 'Z'){ // 修改这里的判断条件
count++;
}
}
printf("大写字母的个数为:%d\n", count);
return 0;
}
现在,当你输入一行英文句子后,程序将会统计出其中大写字母的个数并输出。希望对你有帮助!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2023-12-27 14:52
你的代码只有一点小问题,就是在判断大写字母时有错误。在代码中,你调用了两次getchar()函数,但是每次调 ...
你的意思是说getchar()函数,只能调用一次。我这使用了两次,从而需要一个变量ch把它第两次存起来使用,对吗?@FishC liyifeng295641 发表于 2023-12-27 14:56
你的意思是说getchar()函数,只能调用一次。我这使用 ...
没错!getchar()函数只能读取一个字符,如果你需要使用两次输入的字符,就需要将第二次读取的字符存储在一个变量中。可以定义一个变量,比如叫做ch,使用第一次getchar()函数读取一个字符并将其赋值给ch,然后再使用第二次getchar()函数读取下一个字符。这样,你就可以使用这两个字符了。下面是一个简单的示例代码:
#include <stdio.h>
int main() {
char ch1, ch2;
printf("请输入第一个字符:");
ch1 = getchar(); // 读取第一个字符
getchar(); // 消耗掉输入缓冲区中的回车符
printf("请输入第二个字符:");
ch2 = getchar(); // 读取第二个字符
printf("第一个字符:%c\n", ch1);
printf("第二个字符:%c\n", ch2);
return 0;
}
注意,在读取第一个字符后,我们调用了一次getchar()函数来消耗掉输入缓冲区中的回车符。这是因为在输入完第一个字符后按下回车键,回车键会被getchar()读取为一个字符,并留在输入缓冲区中。所以我们需要消耗掉这个回车符,才能继续读取下一个字符。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2023-12-27 14:56
没错!getchar()函数只能读取一个字符,如果你需要使用两次输入的字符,就需要将第二次读取的字符存储在 ...
1. 写一个程序,将用户输入的英文句子中的字母大小写进行调换(即大写字母转换为小写字母,小写字母转换为大写字母)。
我的代码如下:
#include <stdio.h>
int main(){
char ch;
printf("请输入一行英文句子:");
while((ch == getchar()) != '\n'){
if(ch >= 'A' && ch <= 'Z'){
ch = ch + 32;
putchar(ch);
}else if(ch >= 'a' && ch <= 'z'){
ch = ch - 32;
putchar(ch);
}
}
return 0;
}
帮我改进代码!@FishC liyifeng295641 发表于 2023-12-27 15:45
1. 写一个程序,将用户输入的英文句子中的字母大小写 ...
你的代码有几个小问题。首先,你在while循环条件中使用了一个等号(==)而不是赋值操作符(=)。应该将ch的获取与'\n'的比较放在一对圆括号中,像这样:while((ch = getchar()) != '\n')。其次,在判断小写字母的条件中,你使用了赋值操作符(=)而不是相等操作符(==),应该使用相等操作符,像这样:ch == 'a'。最后,你只是判断了大写字母和小写字母而没有进行相应的转换操作。下面是修改后的代码示例:
#include <stdio.h>
int main() {
char ch;
printf("请输入一行英文句子:");
while ((ch = getchar()) != '\n') {
if (ch >= 'A' && ch <= 'Z') {
ch += 32; // 大写字母转换为小写字母
} else if (ch >= 'a' && ch <= 'z') {
ch -= 32; // 小写字母转换为大写字母
}
putchar(ch);
}
return 0;
}
这个程序会根据用户输入的英文句子,将其中的大写字母转换为小写字母,将小写字母转换为大写字母,并输出转换后的结果。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2023-12-27 15:45
你的代码有几个小问题。首先,你在while循环条件中使用了一个等号(==)而不是赋值操作符(=)。应该将ch ...
#include <stdio.h>
int main()
{
int ch;
int num = 0;
printf("请输入待转换的字符串:");
do
{
ch = getchar();
if (ch >= '0' && ch <= '9')
{
num = 10 * num + (ch - '0');
}
else
{
if (num)
{
break; // 如果已有数字,则退出循环
}
}
}
while (ch != '\n');
printf("结果是:%d\n", num);
return 0;
}
可以给我解释一下第16行代码吗?@FshiC liyifeng295641 发表于 2023-12-27 19:11
#include
int main()
{
int ch;
...
你的代码看起来很接近正确了,只有一个小问题。在进行大小写转换时,你使用的是字母的ASCII码值相差32来实现转换,这是正确的。但是在判断条件中,你将大写字母判断为小于等于90,小写字母判断为大于等于97。这样一来,如果用户输入的字符不是字母,那么判断可能会出错。应该使用大于等于65和小于等于122来判断是否是字母。下面是修改后的代码示例:
#include <stdio.h>
int main() {
int ch;
int num = 0;
printf("请输入待转换的字符串:");
do {
ch = getchar();
if (ch >= '0' && ch <= '9') {
putchar(ch);// 数字不进行转换,直接输出
} else if (ch >= 'A' && ch <= 'Z') {
putchar(ch + 32);// 大写字母转换为小写字母
} else if (ch >= 'a' && ch <= 'z') {
putchar(ch - 32);// 小写字母转换为大写字母
} else {
putchar(ch);// 其他字符不进行转换,直接输出
}
} while (ch != '\n');
return 0;
}
这样就可以正确地进行大小写转换了。注意,当输入回车符时,程序会结束。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]