鱼C论坛

 找回密码
 立即注册
查看: 3984|回复: 4

[已解决]c语言

[复制链接]
发表于 2018-1-9 19:29:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
.编写程序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.
最佳答案
2018-1-9 21:51:00
1 小写字母的ascii码比大写的大,所以计算的时候大写转小写应该用减,反之亦然
2 printf输出时不要对变量取地址&,%p改为%c
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-9 20:02:11 | 显示全部楼层
本帖最后由 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
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-1-9 20:51:49 | 显示全部楼层
#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;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-9 20:53:06 | 显示全部楼层
输出的是数字
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-9 21:51:00 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
1 小写字母的ascii码比大写的大,所以计算的时候大写转小写应该用减,反之亦然
2 printf输出时不要对变量取地址&,%p改为%c
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-19 22:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表