首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

新人处女贴,可能有关问题对你们很简单,愿意的帮上,别见笑

2013-01-05 
新人处女贴,可能问题对你们很简单,愿意的帮下,别见笑在屏幕上显示如下的菜单,程序功能是当从键盘输入一个

新人处女贴,可能问题对你们很简单,愿意的帮下,别见笑
在屏幕上显示如下的菜单,程序功能是当从键盘输入一个整数时,对其判断,如果数字在1-4的范围内,则从键盘输入两个数,完成相应的运算后输出其结果。如果不在0-4的范围内则输出:输入错误。例如输入2,提示输入两个数,输出这两个数的差。计算完后再输出“是否继续(Y/N)?”,如果输入Y,则继续显示菜单,提示输入运算代码进行计算。#include<stdio.h>
int main(){
int n;
float a,b,y;
char c,Y,N;
printf("**********欢迎使用简易运算系统**********\n");
printf("        1,加法                          \n");
printf("        2,减法                          \n");
printf("        3,乘法                          \n");
printf("        4,除法                          \n");
printf("        0,退出                          \n");
printf("****************************************\n");
printf("请输入运算代码:");
do
{
    scanf("%d",&n);
    if(n<0||n>4)
printf("输入错误\n");
else
{
if(n==0)  break; 
printf("请输入两个数:");
scanf("%f%f",&a,&b);
if(n==1)
{
y=a+b;
printf("%.2f+%.2f=%.2f\n",a,b,y);
}
if(n==2)
{
y=a-b;
printf("%.2f-%.2f=%.2f\n",a,b,y);
}
if(n==3)
{
y=a*b;
printf("%.2f*%.2f=%.2f\n",a,b,y);
}
if(n==4)
{
y=a/b;
printf("%.2f/%.2f=%.2f\n",a,b,y);
}
printf("是否继续Y/N\n");
scanf("%d",&c);
}
}while(c==Y);
}

我调了好久,真没办法了,没预期结果。。。



[解决办法]

#include<stdio.h>
int main()
{
    int n;
    float a,b,y;
    char c='Y';
    do
    {
        printf("**********欢迎使用简易运算系统**********\n");
        printf("        1,加法                          \n");
        printf("        2,减法                          \n");
        printf("        3,乘法                          \n");
        printf("        4,除法                          \n");
        printf("        0,退出                          \n");


        printf("****************************************\n");
        printf("请输入运算代码:");
        scanf("%d",&n);
        if(n<0
[解决办法]
n>4)
            printf("输入错误\n");
        else
        {
            if(n==0)  break;
            printf("请输入两个数:");
            scanf("%f%f",&a,&b);
            if(n==1)
            {
                y=a+b;
                printf("%.2f+%.2f=%.2f\n",a,b,y);
            }
            if(n==2)
            {
                y=a-b;
                printf("%.2f-%.2f=%.2f\n",a,b,y);
            }
            if(n==3)
            {
                y=a*b;
                printf("%.2f*%.2f=%.2f\n",a,b,y);
            }
            if(n==4)
            {
                y=a/b;
                printf("%.2f/%.2f=%.2f\n",a,b,y);
            }
            printf("是否继续Y/N\n");
            scanf(" %c",&c);
        }
    }
    while(c=='Y');
}



尽量少的更改你的代码。
[解决办法]
这问题达不到效果明显是在是否继续那里输入的字符问题
输入缓冲区把回车 '\n' 给赋值到c中 得到的结论就是否了. 可以清空输入缓冲区或者在此scanf前加一个 getchar();来把回车吃掉
[解决办法]
楼主的问题是用了scanf("%c",&c);这个函数读取了你上次输入两个数a,b时产生的回车键。 所以c得值就是回车的ASCII码。解决方法很多。比如可以用getchar()把回车吃掉。最好不要这么用scanf

热点排行