| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1454 人关注过本帖
标题:关于C语言一道题帮我看看,哪错了?
只看楼主 加入收藏
糖纸
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-12-15
收藏
 问题点数:0 回复次数:11 
关于C语言一道题帮我看看,哪错了?
输入一个字母,如果它是小写字母,则首先将其转换成大写字母,在输出该字母的前序字母、该字母、该字母的后续字母。如输入a,则输出ZAB.如输入Z,则输出YZA.输入g,则输出FGH.

#include <stdio.h>
main()
{ char ch,c1,c2;
printf("Enter a character:");
ch=getchar();
if((ch>'a')&&(ch<'z')) {ch-=32;c1=ch-1;c2=ch+1;}
else if((ch>'A')&&(ch<'Z')) {c1=ch-1;c2=ch+1;}
else if(ch='a') {ch-=32;c1=ch+25;c2=ch+1;}
else if(ch='A') {c1=ch+25;c2=ch+1;}
else if(ch='z') {ch-=32;c1=ch-1;c2=ch-25;}
else if(ch='Z') {c1=ch-1;c2=ch-25;}

else {printf("unknown operator\n");}
putchar(c1);
putchar(ch);
putchar(c2);
putchar('\n');
}



我变成这样,就Z,z输出来有问题输出来是ZAB??哪错了。还有输入的如果不是字母,输出的也有问题??
搜索更多相关主题的帖子: C语言 
2008-12-15 17:20
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
你的方法感觉过于复杂,帮你修改修改。
功能还加多一点,输入一个字母,输出它的前面一个自己加后面一个,如果是Z和A的话特殊处理。
程序代码:
#include <stdio.h>
#include <conio.h>
#include <ctype.h>

int main(void){
  char c1,c2,c3;
  printf("Enter a character:");
  c2=getchar();
  if(isalpha(c2))
    if(c2=='A' || c2=='a'){
      c1=c2+25;
      c3=c2+1;
    }else if(c2=='z' || c2=='Z'){
      c1=c2-1;
      c3=c2-25;
    }else{
      c1=c2-1;
      c2=c1+1;
    }
  printf("%c%c%c\n",c1,c2,c3)

  getch();
  return 0;
}

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-12-15 18:09
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
然后看了一下你写的,在判断是错了,全部都是一个=,应该是两个=
一个等于是赋值,两个等于是比较。
具体代码如下:
程序代码:
#include <stdio.h> 
int main(void){
  char ch,c1,c2; 
  printf("Enter a character:"); 
  ch=getchar(); 
  if((ch>'a')&&(ch<'z')){
    ch-=32;
    c1=ch-1;
    c2=ch+1;
  }else if((ch>'A')&&(ch<'Z')){
    c1=ch-1;
    c2=ch+1;
  }else if(ch=='a'){ /*应该是==*/
    ch-=32;
    c1=ch+25;
    c2=ch+1;
  }else if(ch=='A'){ /*应该是==*/
    c1=ch+25;
    c2=ch+1;
  }else if(ch=='z'){ /*应该是==*/
    ch-=32;
    c1=ch-1;
    c2=ch-25;
  }else if(ch=='Z'){ /*应该是==*/
    c1=ch-1;
    c2=ch-25;
  }else{
    printf("unknown operator\n");
  }
  putchar(c1); 
  putchar(ch); 
  putchar(c2); 
  putchar('\n'); 
  getch();
  return 0;
}

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-12-15 18:14
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 第2楼 zqy110007 的帖子
你的代码你没运行过吧?

一:你的代码有错误,无法运行。

二:不符合题意,楼主要求输出大写字母。

呵 ,再改改。
2008-12-15 18:37
Leo小马
Rank: 1
来 自:漳州平和
等 级:新手上路
帖 子:43
专家分:0
注 册:2008-12-15
收藏
得分:0 
很好很强大~!
2008-12-15 20:37
wxgzy1234
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-12-15
收藏
得分:0 
2楼的那位这段貌似不对
if(c2=='A' || c2=='a'){
      c1=c2+25;
      c3=c2+1;
输入大小写c1都是等于输入的加25哪输a的话c1就等于z了.
要分开来判断不?底下也是的..
我也书初学者.不知道啊说对列.
2008-12-15 20:48
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
我都运行过啊.
楼上的,,,谢谢你的建议,我并没有看到楼主说是大写的,如果是大写的话这代码确实不对..
我这个大小写通包.

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-12-15 21:50
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 第2楼 zqy110007 的帖子
少个分号 ,无法运行。

呵。
2008-12-15 22:46
boliyuan
Rank: 1
来 自:四川南充
等 级:新手上路
帖 子:59
专家分:2
注 册:2007-6-26
收藏
得分:0 
同意第8楼的。。。
楼主的意思应该不是说只考虑输入a,则输出ZAB.如输入Z,则输出YZA.输入g,则输出FGH这几种吧!

只要开心就好!
2008-12-15 23:07
herostone
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-12-15
收藏
得分:0 
回复 第8楼 feifei168 的帖子
顶!!!!!!!!!!!!
2008-12-15 23:22
快速回复:关于C语言一道题帮我看看,哪错了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014901 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved