当前位置: 代码迷 >> C语言 >> 有问题
  详细解决方案

有问题

热度:188   发布时间:2008-04-06 10:22:40.0
有问题
我编了一个小程序,名义是模仿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  

----------------解决方案--------------------------------------------------------
scanf格式字符

格式字符
说 明

d
用来输入十进制整数

o
用来输入八进制整数

x
用来输入十六进制整数

c
用来输入单个字符

S
用来输入字符串,将字符串送到一个字符数组中,以‘\0’作为结束标志

f、e
用来输入实数,可以用小数形式或指数形式输入
----------------解决方案--------------------------------------------------------
如果用s%的话你输入123就是123
如果用c%的话只把你输入的第一个字符赋给变量
----------------解决方案--------------------------------------------------------
for(;t = t;)    // while(t)
                // 还有t的值没有初始化

// 第一个发现的问题 //
----------------解决方案--------------------------------------------------------
#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");
}

----------------解决方案--------------------------------------------------------
对于输入方面要做错误处理,并且要把'\n'从输入流中去除。
----------------解决方案--------------------------------------------------------
  相关解决方案