鱼C论坛

 找回密码
 立即注册
查看: 6423|回复: 17

这是什么情况呀

[复制链接]
发表于 2013-4-13 16:35:31 | 显示全部楼层 |阅读模式
1鱼币
1.#include <stdio.h>
int main()
{
char ch;
scanf("%c",&ch);
if((ch>'A'||ch=='A')&&(ch<'z'||ch=='Z'))
{
  ch=ch+32;
  printf("%c",ch);
}
else
{
  printf("%c",ch);
}
}
2.#include <stdio.h>
int main()
{
char ch;
printf("任意输入字母:");
scanf("%c",&ch);
if((ch>'A'||ch=='A')&&(ch<'z'||ch=='Z'))
{
  ch=ch+32;
   printf("%c\n",ch);
}
else
{
  printf("%c\n",ch);
}
题目是  把大写字母转换成小写字母  程序1可以完成 ;程序2不可以 为什么呀(输入大写字母时会转换成小写,但是当输入小写字母是就会出错)

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-13 17:21:44 | 显示全部楼层
本帖最后由 北辰制作室 于 2013-4-13 17:23 编辑

那是因为C语言(强调是C语言)里if只能一次处理两个数据,后面的再多也没用。比如说
#include <stdio.h>
int main()
{
        char ch;
        scanf("%c",&ch);
        if((ch>'A'||ch=='A')&&(ch<='Z'))
        {
                ch=ch+32;
                printf("%c",ch);
        }
        else
        {
                printf("%c",ch);
        }
}相当于它只判断了ch>='A'只要成立if就成立。所以你输入小写字母ASCII码还是会加32因此出现乱码。
改为#include <stdio.h>
int main()
{
        char ch;
        scanf("%c",&ch);
        if(ch>'A'||ch=='A')
        {
                if (ch<='Z')
                {
                        printf("%c",ch+32);
                }
                else
                        printf("%c",ch);
        }
}
就对了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-13 17:53:18 | 显示全部楼层
二楼说 C语言(强调是C语言)里if只能一次处理两个数据,后面的再多也没用;
好像没有这种说法,事实证明也不是的
你的第二个程序是因为z没有大写错的,

#include <stdio.h>
int main()
{
        char ch;
        printf("任意输入字母:");
        scanf("%c",&ch);
        if((ch>'A'||ch=='A')&&(ch<'Z'||ch=='Z'))
        {
                ch=ch+32;
                printf("%c\n",ch);
        }
        else
        {
                printf("%c\n",ch);
        }
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-13 18:00:32 | 显示全部楼层

真是难得给力的帖子啊。  谢谢啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-13 18:29:43 | 显示全部楼层
C语言的if一样可以多重判断
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-13 19:05:03 | 显示全部楼层
你们试试这个C语言代码吧
#include <stdio.h>
void main ()
{
        int a=1,b,c=10;
        scanf("%d",&b);
        if (a<b<c)
        {
                printf("1");
        }
        else
        {
                printf("0");
        }
}输入9和19看看结果就知道if咋判断的了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-14 10:31:28 | 显示全部楼层
北辰制作室 发表于 2013-4-13 19:05
你们试试这个C语言代码吧
#include
void main ()

在C语言中基本没有if( a < b < c),这种写法(考试除外),
基本都是这样写的

#include <stdio.h>
void main ()
{
        int a=1,b,c=10;
        scanf("%d",&b);
        if ( (a<b) && (b<c) )
        {
                printf("1");
        }
        else
        {
                printf("0");
        }
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-14 17:11:05 | 显示全部楼层
友来友网 发表于 2013-4-14 10:31
在C语言中基本没有if( a < b < c),这种写法(考试除外),
基本都是这样写的

高手  经过验证 你的程序可以通过(正确执行)  楼上的朋友不能正确执行  
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-16 22:00:21 | 显示全部楼层
楼主加油,鱼C加油!我们都看好你哦!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-17 08:19:26 | 显示全部楼层
来混鱼币咯。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-10 11:42:53 | 显示全部楼层
学习一下,呵呵呵。。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-10 16:47:39 | 显示全部楼层
#include <stdio.h>
int main()
{
char ch;
printf("任意输入字母:");
scanf("%c",&ch);
if((ch>='A')&&(ch<='Z'))
{
  ch=ch+32;
   printf("%c\n",ch);
}
else
{
  printf("%c\n",ch);
}


不是直接这样写就可以了嘛。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-10 16:53:38 | 显示全部楼层

if(a>b>c)  //这种写法只会在考试中出现,正常语法不提倡这么写
应该等价于:
if ((a > b) > c) //关系运算符的左结合性
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-12 14:05:28 | 显示全部楼层
友来友网 发表于 2013-4-13 17:53
二楼说 C语言(强调是C语言)里if只能一次处理两个数据,后面的再多也没用;
好像没有这种说法,事实证明也 ...

对,那里改成大写Z
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-13 07:39:03 | 显示全部楼层
#include <stdio.h>

int main()
{
        char ch;
        printf("任意输入字母:");
        scanf("%c",&ch);
        if((ch>'A'||ch=='A')&&(ch<'Z'||ch=='Z'))
        {
                ch=ch+32;
                printf("%c\n",ch);
        }
        else
        {
                ch = ch - 32;
                printf("%c\n",ch);
        }
}
试一试这个
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-16 19:48:02 | 显示全部楼层
很认真的看了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-16 23:03:41 | 显示全部楼层
楼上的都说的很清楚了,你判断语句里第一个z应该大写Z;
而且程序1不应该像你说的没问题的,和程序2一个问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-20 12:55:55 | 显示全部楼层
开始看的时候把题目看错了 以为是要把大写字母换成小写 小写的换成大写的呢 结果看了半天。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-3 15:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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