如题所述
#include <stdio.h>
int main() {
int i = 0;
char s[100];
fgets(s,100,stdin);
while(s[i]) {
if(s[i] >= 'a' && s[i] <= 'z')
s[i] -= 'a' - 'A';
++i;
}
printf("%s\n",s);
return 0;
}追问
int main() {
int i = 0;
char s[100];
fgets(s,100,stdin);
while(s[i]) {
if(s[i] >= 'a' && s[i] <= 'z')
s[i] -= 'a' - 'A';
++i;
}
printf("%s\n",s);
return 0;
}追问
这种没学过
我是初学的,好像是加减32变化的大小写吧
追答对的。其实这样更好理解,莫名写出一个32会让人迷糊,若写作'a' - 'A'则更明白。
追问但是我们只教32的
温馨提示:答案为网友推荐,仅供参考
第1个回答 2015-05-13
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char a[100];
int i = 0;
for(i=0;i<99;++i)
{
a[i]=toupper(int ch);
}
a[++i] = '\0';
puts(a);
}
#include <ctype.h>
int main(void)
{
char a[100];
int i = 0;
for(i=0;i<99;++i)
{
a[i]=toupper(int ch);
}
a[++i] = '\0';
puts(a);
}
第2个回答 推荐于2016-06-26
main()
{char a[100],i=0;
scanf("%s",a);
while(a[i])
{if(a[i]>='a'&&a[i]<='z')
a[i]-=32;
i--;
}
printf("%s",a);
}追问
{char a[100],i=0;
scanf("%s",a);
while(a[i])
{if(a[i]>='a'&&a[i]<='z')
a[i]-=32;
i--;
}
printf("%s",a);
}追问
是字符串,不是一字母
追答你运行它,连续输入一串字符回车就知道了
那个i--应该是i++,我大意了
本回答被提问者采纳第3个回答 2020-11-26
信息学奥赛 1138-将字符串中的小写字母转换成大写字母