| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 576 人关注过本帖
标题:有问题
只看楼主 加入收藏
z_orange
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-4-6
收藏
 问题点数:0 回复次数:5 
有问题
我编了一个小程序,名义是模仿ATM机的,但差得太远了。偶还初学。
编的过程中,麻烦碰到了不少。后来运行修改了好多次后发现问题在对X的定义上。用%s和%c时,运行的结果相差很大。大家解释一下。
#include <stdio.h>
void main()
{
 /*这个里面使用的是%s*/    
 char x;
 int a,b,t,c=0;
 printf("欢迎使用本程序\n");
 printf("***存钱,请按1***余额显示,请按3***\n");
 printf("***取钱,请按2***退出程序,请按4***\n");
 for(;t=t;)
 {
 printf("请输入您的操作=");
 scanf("%s",&x);
 switch(x)
 {
  case'1':
          printf("请输入您存钱的数目=");
          scanf("%d",&a);
          c=c+a;
          printf("交易成功,您现在的余额为%d\n",c);break;
  case'2':
          printf("请输入您取钱的数目=");
          scanf("%d",&b);
          if(b>c)
          printf("SORRY,您的余额不够\n");
          else
          {
          c=c-b;
          printf("交易成功,您现在的余额为%d\n",c);
          }
          break;
  case'3':printf("您现在的余额为%d\n",c);break;
  case'4':t=0;break;
  default:printf("输入错误\n");
 }
 }
 printf("退出成功,谢谢您的使用\n");
}
搜索更多相关主题的帖子: printf 定义 switch 
2008-04-06 10:22
bjtusq
Rank: 2
来 自:BJTU
等 级:论坛游民
帖 子:141
专家分:20
注 册:2006-8-5
收藏
得分:0 
scanf格式字符

格式字符
 说 明
 
d
 用来输入十进制整数
 
o
 用来输入八进制整数
 
x
 用来输入十六进制整数
 
c
 用来输入单个字符
 
S
 用来输入字符串,将字符串送到一个字符数组中,以‘\0’作为结束标志
 
f、e
 用来输入实数,可以用小数形式或指数形式输入

[url][/url]
2008-04-06 10:34
bjtusq
Rank: 2
来 自:BJTU
等 级:论坛游民
帖 子:141
专家分:20
注 册:2006-8-5
收藏
得分:0 
如果用s%的话你输入123就是123
如果用c%的话只把你输入的第一个字符赋给变量

[url][/url]
2008-04-06 10:35
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
for(;t = t;)    // while(t)
                // 还有t的值没有初始化

// 第一个发现的问题 //

—>〉Sun〈<—
2008-04-06 10:41
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
#include <stdio.h>

int main(void)
{
    int x;      // 建议使用 int
   
    int  a,
         b,
         t = 1,       // t 初始化
         c = 0;
         
    printf("\n欢迎使用本程序\n");
    printf("  存钱,请按1      余额显示,请按3\n");
    printf("  取钱,请按2      退出程序,请按4\n\n");

    while(t)              // 如果t 为0退出循环
    {

        
        printf("请输入您的操作=");
        scanf("%c", &x);              // 用%c 获取字符
        
        switch(x)
        {
            case'1':
                printf("请输入您存钱的数目=");
                scanf("%d",&a);
                c = c + a;
                printf("交易成功,您现在的余额为%d\n", c);
                break;
            case'2':
                printf("请输入您取钱的数目=");
                scanf("%d", &b);
                if(b > c)
                    printf("SORRY,您的余额不够\n");
                else
                {
                    c = c - b;
                    printf("交易成功,您现在的余额为%d\n", c);
                }
                break;
            case'3':
                printf("您现在的余额为%d\n", c);
                break;
            case'4':
                t = 0;
                break;
            default:
                printf("输入错误\n");
                break;
        }
        // while(getchar() != '\n');
    }
    printf("退出成功,谢谢您的使用\n");
}

—>〉Sun〈<—
2008-04-06 10:50
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
对于输入方面要做错误处理,并且要把'\n'从输入流中去除。

—>〉Sun〈<—
2008-04-06 10:52
快速回复:有问题
数据加载中...
 
   



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

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