| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1315 人关注过本帖
标题:新人求助 心好累 一直解决不了
只看楼主 加入收藏
红蝶
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-4-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
新人求助 心好累 一直解决不了
程序代码:
switch(n)
    {
    case '1':    
        system("cls");
        cout<<"请输入原文:";
        gets(str1);     //输入原文字符串
        cout<<endl;
        cout<<"原文为:";
        puts(str1);
        cout<<endl;
        encrypt(str1);  //加密
        cout<<"密文为:";
        puts(str1);
        cout<<endl;
        break;[local]1[/local]
我想输入例如“afjkfd 788 jkakf”这样的字符串到字符数组str1中 然后按下回车再执行gets(str1);后面的程序 结果它直接全部执行完了 如图片那样

PNT]`Q64VCICIV_]40}H9~V.png (31.75 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: system color 
2017-04-12 15:03
红蝶
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-4-12
收藏
得分:0 
@九转星河
2017-04-12 16:27
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:20 
在gets(str1)之前有没有别的输入函数?如果有的话,那么就是回车问题。
在gets(str1);语句前面加一条语句getchar();

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-12 16:35
红蝶
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-4-12
收藏
得分:0 
完整代码在这呢
程序代码:
/*
    功能描述:输入原文 经过加密 输出密文 再经过解密 输出原文
    编写时间:2017年4月12日
    编写语言:C++
    编写环境:VC++6.0
    测试原文:Time Live Up To Deep Love.乱码*8-+【\
    测试密文:Grnv Orev Fk Gl Wvvk Olev.乱码*8-+【\
*/

#include<iostream>
#include<string>
#include<windows.h>
#include<conio.h>
using namespace std;


void encrypt(char *str1)  //加密与解密函数 定义一个字符型指针形参 
{
    int i,j;
    char str3[]={"ABCDEFGHIJKLMNOPQRSTUVWXYZ"},str4[]={"abcdefghijklmnopqrstuvwxyz"};
    for(i=0;str1[i]!='\0';)
    {
        if((str1[i]>='a'&&str1[i]<='z')||(str1[i]>='A'&&str1[i]<='Z')) //如果是字母 进入加密与解密阶段
        {    
            for(j=0;str3[j]!='\0';j++)   
            {
                if(str1[i]==str3[j])  //将字母与大写字母字符数组中字符进行比较
                {
                    str1[i]=str3[25-j];
                    i++;
                }
                if(str1[i]==str4[j])  //将字母与小写字母字符数组中字符进行比较
                {
                    str1[i]=str4[25-j];
                    i++;
                }
            }
        }
        else i++;  //如果是其他字符 不变
    }
}

void gotoxy(int x,int y) /*光标定位函数*/
{
    COORD coord={y,x};
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}

void main()
{
    int i;
    char c,n;
    char str1[200]={0}; //定义字符数组 用于储存原文或密文
    do
    {
        system("cls");
        gotoxy(6,15);
        cout<<"1.将原文转为密文.";
        gotoxy(8,15);
        cout<<"2.将密文转为原文.";
        gotoxy(10,15);
        cout<<"3.退出.";
        gotoxy(15,25);
        cout<<"请选择:";
        cin>>n;
    }while(n!='1'&&n!='2'&&n!='3');
    switch(n)
    {
    case '1':    
        system("cls");
        cout<<"请输入原文:";
        gets(str1);     //输入原文字符串
        cout<<endl;
        cout<<"原文为:";
        puts(str1);
        cout<<endl;
        encrypt(str1);  //加密
        cout<<"密文为:";
        puts(str1);
        cout<<endl;
        break;
    case '2':
        system("cls");
        cout<<"请输入密文:";
        gets(str1);    //输入密文字符串
        cout<<endl;
        cout<<"密文为:";
        puts(str1);
        cout<<endl;
        encrypt(str1);  //解密
        cout<<"原文为:";
        puts(str1);
        cout<<endl;
        break;
    case '3':
        exit(0);
    }
}
2017-04-12 16:59
红蝶
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-4-12
收藏
得分:0 
回复 3楼 renkejun1942
完整代码我贴上去了 麻烦能不能帮我看看 多谢
2017-04-12 17:00
红蝶
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-4-12
收藏
得分:0 
回复 3楼 renkejun1942
解决了 解决了 哈哈哈哈 我听你的在前面gets(str1) 前面加了getchar()顺利解决了问题 谢谢你
2017-04-12 17:03
红蝶
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-4-12
收藏
得分:0 
回复 3楼 renkejun1942
可是为什么会这样? 不加这个 它就自动运行到结束了 加了getchar() 就可以了?
2017-04-12 17:05
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 7楼 红蝶
getchar();用来收拾上次输入读取留下的回车符~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-04-12 17:14
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 7楼 红蝶
gets()函数从输入流中获取一个字符串,直到遇到\n(回车)停止。

更加具体的你需要自己翻查一下书上关于输入/输出的章节。
我转述告诉你,你还不如自己翻书,更简单,更直观。


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-12 17:17
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
gets函数,较scanf函数,完全没有优势。要注意输入流。
2017-04-13 01:57
快速回复:新人求助 心好累 一直解决不了
数据加载中...
 
   



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

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