| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2373 人关注过本帖
标题:疑惑的小问题,不难,语法方面的.
只看楼主 加入收藏
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
1 到 12 是退出啊
别的 重输入.
没错 TC++ 3.0

[[italic] 本帖最后由 xianshizhe111 于 2008-1-9 21:15 编辑 [/italic]]
2008-01-09 20:57
dousao
Rank: 2
等 级:论坛游民
帖 子:228
专家分:58
注 册:2007-11-8
收藏
得分:0 
atoi函数解决问题...
无论是dev还是tc或者其他编译器通过上面的方法都不行哈,你可能测试的时候没有输入字符,只输入了不符合条件的整数.
可以把scanf里的改成%s
然后转换.最后判断,解决问题.
2008-01-10 09:07
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
什么都输入了怎么会这都是反复验证的
不是拿我们开玩笑吧
效果是最后规则(输入1-12)退出循环
其它都while(循环)

[[italic] 本帖最后由 xianshizhe111 于 2008-1-10 12:44 编辑 [/italic]]
2008-01-10 12:39
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
在c++里面用变量是要赋值得,要不它会是负无穷大,所以即使逻辑上对的也会错得
2008-01-10 20:15
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include "stdlib.h"
#include "stdio.h"
int main()
{
    int num=0;
    do
    {
        system("cls");
        printf("********************\n");
        printf("请输入的保证是整形的数值!\n");
        printf("********************\n");
        scanf("%d",&num);
        
    }
    while(num>12||num<1);
    return num;
}
2008-01-10 20:17
nobush
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2008-1-10
收藏
得分:0 

這樣使用scanf函數是很危險的,因為他的作用機理是從輸入輸出緩區(buffer)拾取數據。
所以回車符會干擾你的程序。
需要在 scanf("%d",&num);後面加上一句fflush(stdin);解決這個問題。

我認為有的編譯器不報錯是由他的某種優化方式,但是這樣的危險代碼如果隱藏在大程序中的話肯定會出事的。
2008-01-10 23:37
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
哪个编译器上出错??
2008-01-12 17:52
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1705
专家分:4345
注 册:2007-12-27
收藏
得分:0 
知道scanf("%d......
这种形式处理不了非数字字符就行了,不用去研究为什么。

就好像另外一个事实:我解决不了物价上涨的问题,这个需要问为什么吗?
2008-01-13 00:49
快速回复:疑惑的小问题,不难,语法方面的.
数据加载中...
 
   



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

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