| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 987 人关注过本帖
标题:请看看这两个题!
只看楼主 加入收藏
huaheshang
Rank: 2
来 自:日照
等 级:论坛游民
帖 子:91
专家分:37
注 册:2010-12-7
结帖率:79.31%
收藏
已结贴  问题点数:20 回复次数:9 
请看看这两个题!

1、从键盘输入一行字符,若为小写字母,则转化为大写字母;
    若为大写字母,则转化为小写字母;
    否则转化为ASCII码表中的下一个字符。

2、从键盘输入一批字符(以@结束),按要求加密并输出。 加密规则:
    a、所有字母均转换为小写。
    b、若是字母'a'到'y',则转化为下一个字母。
    c、若是'z',则转化为'a'。 d、其它字符,保持不变。
对于这种题型,我不是太懂,所以请大家帮忙!
搜索更多相关主题的帖子: 加密 键盘 字母 
2011-01-06 15:37
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
用for和if-else来解决

小代码,大智慧
2011-01-06 15:52
huaheshang
Rank: 2
来 自:日照
等 级:论坛游民
帖 子:91
专家分:37
注 册:2010-12-7
收藏
得分:0 
我知道用if-else语句,但是对getchar和putchar语句不熟,请把程序写出来,以便我学习研究!
2011-01-06 16:28
xufan123
Rank: 5Rank: 5
等 级:职业侠客
帖 子:226
专家分:318
注 册:2010-11-15
收藏
得分:10 
第一题
#include <stdio.h>   
#include<string.h>
void main()
{
    char ch[100];
    int i;
    gets(ch);
    for(i=0;i<strlen(ch);i++)
        if(ch[i]>='a'&&ch[i]<='z')
            ch[i]=ch[i]-32;
        for(i=0;i<strlen(ch);i++)
            printf("%c",ch[i]);
}
第二题
#include<stdio.h>
#include<string.h>
void main()
{
char ch[100];
int i;
for(i=0;;i++)
{
  scanf("%c",&ch[i]);
  if(ch[i]=='@')
  break;
}
strlwr(ch);
for(i=0;i<strlen(ch);i++)
{
if(ch[i]<='y'&&ch[i]>='a')
ch[i]=ch[i]+1;
if(ch[i]=='z')
ch[i]='a';
}
for(i=0;i<strlen(ch);i++)
printf("%c",ch[i]);
}  
这个试下
2011-01-06 16:32
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
第二题
程序代码:
#include<stdio.h>

int main()
{
char ch[100];
int i;
for(i=0;(ch[i]=getchar())!='#'&&ch[i]!=EOF;i++);
    ch[i]='\0';
for(--i;i>-1;i--)
{
    if(ch[i]<='Z'&&ch[i]>='A')
         ch[i]+=32;
   if(ch[i]<='y'&&ch[i]>='a')
         ch[i]=ch[i]+1;
    if(ch[i]=='z')
       ch[i]='a';
}
  puts(ch);

  scanf("%*s");
  return 0;
} 


小代码,大智慧
2011-01-06 16:57
xufan123
Rank: 5Rank: 5
等 级:职业侠客
帖 子:226
专家分:318
注 册:2010-11-15
收藏
得分:5 
#include<stdio.h>
#include<string.h>
void main()
{
char ch[100];
int i,s;
for(i=0;;i++)
{
  scanf("%c",&ch[i]);
  if(ch[i]=='@')
  break;
  s=i;
}
strlwr(ch);
for(i=0;i<=s;i++)
{
if(ch[i]<='y'&&ch[i]>='a')
ch[i]=ch[i]+1;
if(ch[i]=='z')
ch[i]='a';
}
for(i=0;i<=s;i++)
printf("%c",ch[i]);
}  
先前这个改下就好了
2011-01-06 17:12
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
回复 4楼 xufan123
第一题可能考虑不全面,有很多漏,例如大写字母化小,没有遇到大小写就字符变为下一个

小代码,大智慧
2011-01-06 17:14
shinan77
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:87
专家分:188
注 册:2010-9-24
收藏
得分:0 
这个问题很简单呀,判断+循环,楼主看来要好好学学基础知识了

--------将学到的东西为我所用,这才是学习的目的 --------
2011-01-06 17:25
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:5 
程序代码:
#include <stdio.h>   

int main()
{
    char ch[100],*c;
  
    gets(ch);

    for( c = ch ; *c ; c++)
    {
          if((*c - 'a')*('z' - *c) >=0 )
              *c -= 32;
          else
              if((*c - 'A')*('Z' - *c) >= 0)
                  *c += 32;
              else
                  ++ *c;

    }

    puts(ch);
    scanf("%*s");

    return 0;
}
第一题,楼主自己你加注释

小代码,大智慧
2011-01-06 17:54
xufan123
Rank: 5Rank: 5
等 级:职业侠客
帖 子:226
专家分:318
注 册:2010-11-15
收藏
得分:0 
因为我输入我时候不用大写输入 就没写这个东西
2011-01-07 12:17
快速回复:请看看这两个题!
数据加载中...
 
   



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

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