c语言
.编写程序P5.C,输入一个字符,如果是大写英文字母,输出其小写字母;如果是小写英文字母,输出其大写字母;如果不是英文字母,输出“非英文字母”提示。#include<stdio.h>
int main()
{
char i;
if(i>='a'&& i<='z')
i='i'+32;
printf("该字符的大写字符:%p",&i);
else if(i>='A'&& i<='Z')
i='i'-32;
printf("该字符的小写字符是:%p",&i);
else
printf("该字符是非英文字母");
return 0;
}
G:\新建文件夹\第七题.cpp(6) : warning C4305: '=' : truncation from 'const int' to 'char'
G:\新建文件夹\第七题.cpp(6) : warning C4309: '=' : truncation of constant value
G:\新建文件夹\第七题.cpp(8) : error C2181: illegal else without matching if
G:\新建文件夹\第七题.cpp(11) : error C2181: illegal else without matching if
Error executing cl.exe. 本帖最后由 Kamikid 于 2018-1-9 20:12 编辑
你好,
这段代码运行出现问题是因为if-else块不明确。
阅读完你的代码后,个人认为需要这样修改:
#include<stdio.h>
int main()
{
char i;
if(i>='a'&& i<='z'){
i='i'+32;
printf("该字符的大写字符:%p",&i);
}
else if(i>='A'&& i<='Z'){
i='i'-32;
printf("该字符的小写字符是:%p",&i);
}
else{
printf("该字符是非英文字母");
}
return 0;
}
另外需注意的是:
1. 不太明白为什么 i = 'i' + 32,如果使用i作为字符变量,可直接写作 i += 32。
2. 大小写转换,第一个if块应为 i = i - 32,第二个else-if块应为 i=i+32。参见ASCII表:https://baike.baidu.com/item/ASCII/309296?fr=aladdin
3. %p会输出十六进制的指针,所以不会输出字符。应该使用%s #include<stdio.h>
int main()
{
char i;
printf("请输入一个字符:");
scanf("%s",&i);
if(i>='a'&& i<='z')
{
i=i+32;
printf("该字符的大写字符是:%p",&i);
}
else if(i>='A'&& i<='Z')
{
i=i-32;
printf("该字符的小写字符:%p",&i);
}
else{
printf("该字符是非英文字母");
}
return 0;
} 输出的是数字 1 小写字母的ascii码比大写的大,所以计算的时候大写转小写应该用减,反之亦然
2 printf输出时不要对变量取地址&,%p改为%c
页:
[1]