【C语言基础】这段代码总是不能给我想要的值,求高手看看 直接复制 C上直接运行。

1.输入一组商品的信息(商品号,商品名,商品价格),输出价格最小商品的商品信息(商品号,商品名,商品价格)。请完善程序。#include<stdio.h>structsp... 1.输入一组商品的信息(商品号,商品名,商品价格),输出价格最小商品的商品信息(商品号,商品名,商品价格)。请完善程序。

#include <stdio.h>
struct sp
{int num;
char name;
float price;
};
main()
{struct sp s[10];
int i,j,min;
for (i=0;i<=9;i++)
{
scanf("%d,%f,%c", &s[i].num, &s[i].price, &s[i].name);
}
min=s[0].price;
for (i=1;i<=9;i++)
if (min>s[i].price)
{min=s[i].price;
j=i;
}
printf("num=%d, price=%f, name=%c", s[j].num, s[j].price, s[j].name);
return 0;
}
展开
 我来答
White_MouseYBZ
2013-12-07 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6513万
展开全部

先指出两个问题:

  1. min是整型,min=s[0].price;这样把一个烂前谨浮点数赋给整型有问题;

  2. for (i=1;i<=9;i++)
        if (min>s[i].price)
        {    min=s[i].price;
            j=i;
        }

    这段代码当min>s[i].price不满足时j没有赋值,后面用悔宴j作下标输出肯定要出错。饥基另,为何从i=1开始循环?不知你的目的,就不好改。

濮方雅BX
2013-12-07 · TA获得超过4042个赞
知道大有可为答主
回答量:2482
采纳率:60%
帮助的人:2452万
展开全部
注意变量类型,price是烂渣知float,饥消min是int,要改成float,与price一致
程序整个逻辑上没有错。梁漏
追问
我输入的格式 x,xx,y
x是数字 y是一个字母
输入一段换一行 总共输入了10行
返回的值
num=0.00000
Price=0.00000
name干脆没有 就一个空格

难道是我输入的格式不对?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nametime
2013-12-07
知道答主
回答量:11
采纳率:0%
帮助的人:8.4万
展开全部
能不能把你缺腔耐的测试数据发圆枯上来,应该是这里错了:
"%d,%f,%c"

把逗号去掉伏春
追问

逗号去掉怎么打。。。111a 计算机能忍么

追答
今天开了vc帮你试了下,发现是这个j的问题;
因为你的测试数据的最小价格在第一组数据,因此
if (min>s[i].price)
{min=s[i].price;
j=i;}
这里的j根本就没变,而你在定义j的时候也没有给它初始值,所以最后s[j]不知道表示什么,就出错了。

应该这样改:
j=0;
min=s[0].price;
for (i=1;i<=9;i++)
{...}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式