C语言编程,怎么从键盘输入一行字符,要求少于20个

原题是这样的:从键盘输入一行字符(少于20个),将其中的小写改成大写(其他字符保持不变),并将转换后的字符输出,输入#结束。
为了实现输入超过20个,也显示前20个,是不是得用数组呀??怎么用啊?我对题意的了解,没错吧?
我是这样做的 #include<stdio.h>
int main()
{
int c[20];
printf("Please enter a character:");
while((c[20]=getchar())!='#')
if(c[20]>='a'&&c[20]<='z')
putchar(c[20]-'a'+'A');
else
putchar(c[20]);
printf("\n");
return 0;

}
无法实现这个功能呀?请问前辈么,这个怎么办?????

#include<stdio.h>
int main()
{
int c[20];
printf("Please enter a character:");
while((c[20]=getchar())!='#')/*这里用c[20]等于将输入的字符直接赋值给下标为20的哪个数组元素也就是说你的C[0]到c[19]都没赋值,而且你要输入的是20个元素而c[20]是第21个元素了, 再有就是while后面如果没有其他语句就应该加一个 ; 符号表示执行一个空语句*/
if(c[20]>='a'&&c[20]<='z')
putchar(c[20]-'a'+'A');
else
putchar(c[20]);
printf("\n");
return 0;

}
#include<stdio.h>
int main()
{
int c[20];
int ch,i=0;
printf("Please enter a character:");
while((ch=getchar())!='#')
{
c[i]=ch;
i++;
}
if(c[20]>='a'&&c[20]<='z')
putchar(c[20]-'a'+'A');
else
putchar(c[20]);
printf("\n");
return 0;

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-26
#include
int
main()
{
int
c[20];
printf("Please
enter
a
character:");
while((c[20]=getchar())!='#')/*这里用c[20]等于将输入的字符直接赋值给下标为20的哪个数组元素也就是说你的C[0]到c[19]都没赋值,而且你要输入的是20个元素而c[20]是第21个元素了,
再有就是while后面如果没有其他语句就应该加一个
;
符号表示执行一个空语句*/
if(c[20]>='a'&&c[20]<='z')
putchar(c[20]-'a'+'A');
else
putchar(c[20]);
printf("\n");
return
0;
}
#include
int
main()
{
int
c[20];
int
ch,i=0;
printf("Please
enter
a
character:");
while((ch=getchar())!='#')
{
c[i]=ch;
i++;
}
if(c[20]>='a'&&c[20]<='z')
putchar(c[20]-'a'+'A');
else
putchar(c[20]);
printf("\n");
return
0;
}
第2个回答  2019-03-28
这道题有好多种解法,你的想法不错,只是数组没有用对,楼上已经指出了,这里不多说了。你用了getchar()和putchar()函数,这题不用数组也能解决,程序如下:
#include
int
main()
{
int
c,i=1;
printf("Please
enter
a
character:\n");
while((c=getchar())!='#')
{
if(c>='a'&&c<='z')
putchar(c-'a'+'A');
else
putchar(c);
i++;
if
(i==20)
break;
}
printf("\n");
return
0;
}
getchar()函数把接收的字符存入缓存区,当输入结束时,调用putchar()函数,从缓存区按输入的顺序一个字符一个字符的输出。若实现输入超过20个,也显示前20个,只要让函数输出前二十个就可以了。加一个判断语句就行了。
回答完毕。
第3个回答  2009-11-18
这道题有好多种解法,你的想法不错,只是数组没有用对,楼上已经指出了,这里不多说了。你用了getchar()和putchar()函数,这题不用数组也能解决,程序如下:
#include<stdio.h>
int main()
{
int c,i=1;
printf("Please enter a character:\n");
while((c=getchar())!='#')
{
if(c>='a'&&c<='z')
putchar(c-'a'+'A');
else
putchar(c);
i++;
if (i==20) break;
}
printf("\n");
return 0;
}
getchar()函数把接收的字符存入缓存区,当输入结束时,调用putchar()函数,从缓存区按输入的顺序一个字符一个字符的输出。若实现输入超过20个,也显示前20个,只要让函数输出前二十个就可以了。加一个判断语句就行了。
回答完毕。
第4个回答  2020-06-10
#include<stdio.h>
int
main()
{
int
c[20];
printf("Please
enter
a
character:");
while((c[20]=getchar())!='#')/*这里用c[20]等于将输入的字符直接赋值给下标为20的哪个数组元素也就是说你的C[0]到c[19]都没赋值,而且你要输入的是20个元素而c[20]是第21个元素了,
再有就是while后面如果没有其他语句就应该加一个
;
符号表示执行一个空语句*/
if(c[20]>='a'&&c[20]<='z')
putchar(c[20]-'a'+'A');
else
putchar(c[20]);
printf("\n");
return
0;
}
#include<stdio.h>
int
main()
{
int
c[20];
int
ch,i=0;
printf("Please
enter
a
character:");
while((ch=getchar())!='#')
{
c[i]=ch;
i++;
}
if(c[20]>='a'&&c[20]<='z')
putchar(c[20]-'a'+'A');
else
putchar(c[20]);
printf("\n");
return
0;
}