鱼C论坛

 找回密码
 立即注册
查看: 3493|回复: 13

哪里错误了啊,运行显示错误,请大师修改

[复制链接]
头像被屏蔽
发表于 2011-9-22 13:18:44 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-22 13:28:13 | 显示全部楼层
你的 输入语句  scanf ("%d",a); 没有取地址符  正确的是 scanf ("%d", &a);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-22 14:03:42 | 显示全部楼层
这句scanf("%d",a);把这个改成scanf("%d",&a);还有你既然让别人输入a的值~干嘛一开始还把0赋给a呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-22 20:40:32 | 显示全部楼层
for (;a>=1 || a<=4;)
这里的条件有误吧。输入 a < 1 || a > 4,提示输入错误吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-22 20:45:59 | 显示全部楼层
#include<stdio.h>
main ()
{
int a;
printf("功能列表\n");
printf("输入1微粒数与物质的量计算\n");
printf("输入2质量与物质的量计算\n");
printf("输入3气体体积与物质的量计算\n");
printf("输入4溶液浓度与物质的量计算\n");
printf("请输入操作代码 ");
scanf("%d",&a);
  for (;(a < 1) || (a > 4);)
  {
  printf("输入的是错误操作代码\n");
  printf("请重新输入操作代码 ");
  scanf("%d",&a);
  }
  switch(a){
  case 1: printf("微粒数与物质的量计算");
   break;
  case 2: printf("质量与物质的量计算");
   break;
  case 3: printf("气体体积与物质的量计算");
   break;
  case 4: printf("溶液浓度与物质的量计算");
   break;
  default : printf("请选择合法操作");
  }
  
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-22 21:00:15 | 显示全部楼层
1.for循环用do-while替换比较好。
2.scanf函数的a要取地址,即:scanf("%d",&a);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
 楼主| 发表于 2011-9-22 22:17:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-22 22:33:03 | 显示全部楼层
代码贴出我看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-22 22:48:30 | 显示全部楼层
本帖最后由 ZPCG 于 2011-9-22 22:51 编辑
djpp123 发表于 2011-9-22 22:17
取a地址,
还是运行错误


错误1: int a=0;既然要求用户输入a值,干嘛要初始化他的值为0;
错误2: scanf("%d",a);改成取a地址,&a,你懂得!
错误3: for (;a>=1 || a<=4;),这一句,你打入1~4的任何数都是提示错的,应该改为:  a<1 || a>4;
错误4: case 1: printf("微粒数与物质的量计算");
       scanf("%d",a);

这句后面加个scanf("%d",a);干嘛?
顺便说一句,你刚发这个贴的时候就想回了,但一直在犹豫,因为你的标题中指定请大师修改,我整整踌躇了近九个小时,不敢回答,现在实在忍不住了,所以鼓起勇气回了个贴,不好意思,没达到你标题要求的回答资格也回贴修改了,请千万见谅!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-22 23:41:09 | 显示全部楼层
这个程序应该这样写,能处理非法的输入,任何字符,任何字符串,代码调试通过。
#include <windows.h>
#include<stdio.h>

int main (void)
{
        char a[MAX_PATH];
        int num = 0;

        memset(a,0x00000000,sizeof(a));

        printf("功能列表\n");
        printf("输入1微粒数与物质的量计算\n");
        printf("输入2质量与物质的量计算\n");
        printf("输入3气体体积与物质的量计算\n");
        printf("输入4溶液浓度与物质的量计算\n");
        printf("请输入操作代码:");

loop:        
        scanf("%s",a);
        num = atoi(a);

        while( (num < 1) || (num > 4) )
        {
                printf("输入的是错误操作代码\n");
                printf("请重新输入操作代码:");
                goto loop;
        }

        switch(num)
        {
        case 1: printf("微粒数与物质的量计算\n");
                break;
        case 2: printf("质量与物质的量计算\n");
                break;
        case 3: printf("气体体积与物质的量计算\n");
                break;
        case 4: printf("溶液浓度与物质的量计算\n");
                break;
        default : printf("请选择合法操作\n");
                break;
        } 

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-23 20:42:05 | 显示全部楼层
上一个程序由于用了scanf函数,经测试会出现问题,我又改了一下代码,这个代码是最后的版本,你将里面printf中打印的字符串换成你需要的就可以了,注释我没写,有问题可以提问。
#define SUCCESS 1
#define FAILURE 0
typedef int BOOL;
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int count = 0;

void messageBox();
void check(char string[]); 
BOOL fun(char string[]);

int main(void)
{
        char temp[MAX_PATH];
        
        memset(temp,0x00000000,sizeof(temp));
        while(1)
        {
                messageBox();
                gets(temp);
                check(temp);
                if(fun(temp))
                {
                        return SUCCESS;
                }
        }
        return 0;
}

void messageBox()
{
        printf("This is a Connection Database Application.\n");
        printf("==========================================\n");
        printf("Please chooes the operate.\n\n");
        printf("1:Connect SQL Server.\n");
        printf("2:Connect MySQL.\n");
        printf("3:Connect Oracle.\n");
        printf("4:Connect DB2.\n\n");
        printf("Please input a number:");
}

void check(char string[])
{
        if( !(0 == strcmp(string,"1") || 0 == strcmp(string,"2") || 0 == strcmp

(string,"3") || 0 == strcmp(string,"4")) )
        {
                printf("input error!\n");
                count++;
                #ifdef DEBUG
                printf("count = %d\n\n", count);
                #endif
                if(count == 3)
                {
                        printf("Times is more than 3, Application End!\n\n");
                        exit (0);
                }
        }
}

BOOL fun(char string[])
{
        if( 1 == strlen(string))
        {
                switch(atoi(string))
                {
                case 1: printf("Connection Starting:(SQL Server)...\n");
                        printf("Please wait...\n");
                        return SUCCESS;
                case 2: printf("Connection Starting:(MySQL)...\n");
                        printf("Please wait...\n");
                        return SUCCESS;
                case 3: printf("Connection Starting:(Oracle)...\n");
                        printf("Please wait...\n");
                        return SUCCESS;
                case 4: printf("Connection Starting:(DB2)...\n");
                        printf("Please wait...\n");
                        return SUCCESS;
                default:
                        break;
                }
        }
        return FAILURE;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
 楼主| 发表于 2011-9-25 11:32:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-25 11:48:07 | 显示全部楼层
for (;a>=1 || a<=4;)
这里的条件有误吧。输入 a < 1 || a > 4,提示输入错误吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-9-25 12:50:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-9 10:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表