鱼C论坛

 找回密码
 立即注册
查看: 4971|回复: 10

求解答

[复制链接]
发表于 2012-2-1 17:21:14 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 猪好大 于 2012-2-3 17:10 编辑

在小甲鱼老师的
第五章-循环控制结构程序07
最后出了个题目:译密码。
如果就输入大小写英文+4输出这简单啦。
问题是:1.如果我在后面加感叹号如        输入   ab!  输出 ef!
2.但如果我输入的数是带数字和符号的怎么办呢?     如:97aB66!!!
  数字和感叹号原样输出,大小写字母aB分别+4输出。 得97eF66!!!
求答案
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-2 09:35:48 | 显示全部楼层
用单个字符的Ascii码做判断,如果不是数字和英文大小写则直接输出!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-2 10:05:24 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <ctype.h>

  3. char encode( char c );
  4. int main(){
  5.         char tmp;
  6.         while( tmp = getchar() , tmp != '\n' ) {
  7.                 putchar( encode(tmp) );
  8.         }
  9.         putchar('\n');
  10. }

  11. char encode( char c ) {
  12.         if( isalpha(c) ) {
  13.                 return isalpha(c+4)?c+4:c+4-26;
  14.         }else{
  15.                 return c;
  16.         }
  17. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-2 15:02:09 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-2 15:26:22 | 显示全部楼层
#include<stdio.h>
#include<conio.h>

void main()
{
        int i, j;
        char ch, a[50];
        printf("请输入要加密的句子按回车结束:\n");
        for( i=0;i<50 ;i++ )
        {
                a[i]=getch();
                if(a[i]==13)      //回车的时候跳出输入循环
                {
                        printf("\n");
                        break;
                }
               
                putch(a[i]);    //使输入的字符显示出来
               
        }
        for( j=0; j<i; j++)
        {
                ch=a[j];
                if((ch>=65&&ch<=86)||(ch>=97&&ch<=118))   
                {
                        printf("%c",ch+4);
                        continue;
                }
                if(ch>=87&&ch<=90)          //判断后面四个字母
                {
                        ch=65+(ch-87);
                       
                }
                if(ch>=119&&ch<=122)
                {
                        ch=97+(ch-119);
                }
                putch(ch);                //如果是字母以外的话就直接输出了!!!
               
        }
       
        printf("\n");
       
        getch();
       
}       //我也是刚学到这里,希望能帮到你,有什么不足之处,欢迎指正。。。:handshake
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-2 15:36:23 | 显示全部楼层
本帖最后由 逗留者me 于 2012-2-2 15:36 编辑

分析了3楼的程序,很强大,isalpha(c)这个判断是否为字母很不错,学习了。。。。:lol
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-2 15:42:40 | 显示全部楼层
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main()
{
   char c;
   while(c=getchar(),c!='\n')
   {

       if(c>='a'&&c<='z'||c>='A'&&c<='z')
       {
           c=c+4;
           printf("%c",c);
       }
       else if(c>=48&&c<=57)
       {

           printf("%c",c);
       }
       else
       {
           printf("%c",c);
       }
   }
}
这是我跟据版主的一点启示自己弄的
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-2 16:05:15 | 显示全部楼层
猪好大 发表于 2012-2-2 15:42
#include
#include
#include

这个的话,wxyz是不行的需要小小改进一下
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-2 16:11:03 | 显示全部楼层
逗留者me 发表于 2012-2-2 15:26
#include
#include

你这个有些没有学到暂时有一点点搞不懂
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-2 16:19:18 | 显示全部楼层
本帖最后由 猪好大 于 2012-2-2 16:25 编辑
逗留者me 发表于 2012-2-2 16:05
这个的话,wxyz是不行的需要小小改进一下

是哦谢谢提醒
在判定大小写的时候再加一判定就得了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-19 22:52:38 | 显示全部楼层

04.char encode( char c );
这个是什么意思呀?配合下面的 char tmp 又是啥意思呢?

实在搞不懂,就来看答案来了
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-11 00:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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