| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3695 人关注过本帖
标题:给大家出到有趣的题目:)
只看楼主 加入收藏
jellen
Rank: 1
等 级:新手上路
威 望:1
帖 子:107
专家分:0
注 册:2004-5-3
收藏
得分:0 

guanyou,

做的好!你的程序基本上满足了要求:) 现在你还可以想想,如何对用户的错误输入做处理,比如用户打错字想用Backspace删除然后修改,你应该怎么实现(按一下Backspace, '*'就要少一个:),然后注意用户输入的长度最好不要有限制(我们不知道用户会输入多少字符,你可以用new, delete动态实现)

Anyway, good done!

再见,理想!
2004-06-18 15:30
jellen
Rank: 1
等 级:新手上路
威 望:1
帖 子:107
专家分:0
注 册:2004-5-3
收藏
得分:0 

这是我写的代码(用纯C完成,在WinXP + Dev-C++环境中编译通过),大家可以参考一下:

#include <stdio.h> #include <string.h> #include <stdlib.h>

#define ADDSIZ 32

int main() { int ch; char *str; int i = 0; int maxSize = 64; str = (char *)malloc(sizeof(char)*maxSize); if(!str) /*判断内存分配是否失败*/ { printf("Memory Access Failed!\n"); exit(1); } printf("Enter password: "); while((ch = getch()) != '\r') { if(i > maxSize-1) /*是否越界*/ { maxSize += ADDSIZ; str = (char *)realloc(str, sizeof(char)*maxSize); if(!str) { printf("Memory Access Failed!\n"); exit(1); } } if(ch == 8) /*处理Backspace*/ { if(i > 0) { printf("\b \b"); /*注意这里!!*/ --i; } } else { str[i++] = ch; putchar('*'); } } str[i] = '\0'; if(strcmp(str, "12345") == 0) printf("\nYou are passed!\n"); else printf("\nPassword wrong!\n"); system("PAUSE"); return 0; }


再见,理想!
2004-06-18 17:07
guanyou
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2004-6-14
收藏
得分:0 

在C++编译是还要加这个头文件

#include<conio.h>


2004-06-18 17:30
guanyou
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2004-6-14
收藏
得分:0 

为什么我用cout<<"\b"<<"\b";达不到效果??


2004-06-18 17:55
jellen
Rank: 1
等 级:新手上路
威 望:1
帖 子:107
专家分:0
注 册:2004-5-3
收藏
得分:0 

你加空格没有? 达到那个效果就是:退格==》空格==》退格(空格就是把以前的星号覆盖)


再见,理想!
2004-06-18 18:53
jellen
Rank: 1
等 级:新手上路
威 望:1
帖 子:107
专家分:0
注 册:2004-5-3
收藏
得分:0 

哦,我试了一下,用cout应该这样实现:

#include <iostream> #include <stdio.h> #include <cstdlib> #include <conio.h> using namespace std;

int main() { int ch; while((ch = getch()) != EOF) { if(ch == 8) cout<<'\b'<<' '; //这里少一个'\b' putchar(ch); } }


再见,理想!
2004-06-18 19:02
guanyou
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2004-6-14
收藏
得分:0 
我试过了,OK了!!

2004-06-18 22:12
喜来乐
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2004-6-23
收藏
得分:0 

#include <stdio.h>

#include <string.h>

int main()

{

char a[6]="12345",b[6]; /* 密码保存在文件中也一样,就是写的麻烦些,所以就保存数组中 */

int i;

pb:

printf("input the password:");

for(i=0;i<5;i++) {

b[i]=getch(); if(b[i]=='\r') goto pb1; putchar('*');

}

getch(); b[i]='\0';

pb1: if(!(strcmp(a,b)))

printf("\nyou are passed.");

else

{

printf("\nplease input password again\n");

goto pb;

}

return 0;

}

[此贴子已经被作者于2004-06-23 16:56:02编辑过]

2004-06-23 16:47
jellen
Rank: 1
等 级:新手上路
威 望:1
帖 子:107
专家分:0
注 册:2004-5-3
收藏
得分:0 
楼上的朋友,程序通过
但是你的程序里用goto语句可不是一个好习惯,以后注意:)

再见,理想!
2004-06-24 09:19
快速回复:给大家出到有趣的题目:)
数据加载中...
 
   



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

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