我用vc++6.0编写C语言 、 运行程序后出现XX.exe已停止工作 、

这是程序:
#include "conio.h"

struct xinxi
{
int a;
char b;
int c;
int d;
int e;
}z[15];

main()
{
int i;
int y=0;
int k;
int x;
int f=0;
struct xinxi z1;
printf("qing xun xu shu ru shang pin bian hao ,shang pin ming cheng ,shang pin dan jia ,shang pin shu liang\n");
for(i=0;i<15;i++)
{
scanf("%d%s%d%d",&z[i].a,&z[i].b,&z[i].c,&z[i].d);
z[i].e=z[i].c*z[i].d;
}

for(i=0;i<15;i++)
{
for(k=0;k<15-i;k++)
{
if(z[k].e>z[k+1].e)
{
z1=z[k];
z[k]=z[k+1];
z[k+1]=z1;
}

}
}
for(i=14;i>=0;i--)
{
printf("a=%d ,b=%s ,c=%d ,d=%d ,e=%d \n",z[i].a,z[i].b,z[i].c,z[i].d,z[i].e);
}
for(i=0;i<15;i++)
{
y=z[i].c+y;
}
x=y/15;
for(i=0;i<15;i++)
{
if(z[i].c>>x)
{
f++;
}
}
printf("shang pin dan jia bi shang pin dan jia ping jun zhi da de ge shu shi %d\n",f);
getch();
}
如果100分满的话我做这个能打多少分啊?

#include <conio.h>
#include<stdio.h>
#include<string.h>
struct xinxi
{
int a;
char b[10];
int c;
int d;
int e;
}z[2];
main()
{
int i;
int y=0;
int k;
int x;
int f=0;
struct xinxi z1;
printf("qing xun xu shu ru shang pin bian hao ,shang pin ming cheng ,shang pin dan jia ,shang pin shu liang\n");
for(i=0;i<2;i++)
{
scanf("%d%s%d%d",&z[i].a,&z[i].b,&z[i].c,&z[i].d);
z[i].e=z[i].c*z[i].d;
}
for(i=0;i<2;i++)
{
for(k=0;k<2-i;k++)
{
if(z[k].e>z[k+1].e)
{
z1=z[k];
z[k]=z[k+1];
z[k+1]=z1;
}
}
}
for(i=1;i>=0;i--)
{
printf("a=%d ,b=%s ,c=%d ,d=%d ,e=%d \n",z[i].a,z[i].b,z[i].c,z[i].d,z[i].e);
}
for(i=0;i<2;i++)
{ y=z[i].c+y; }
x=y/2;
for(i=0;i<2;i++)
{
if(z[i].c>>x)
{f++; }
}
printf("shang pin dan jia bi shang pin dan jia ping jun zhi da de ge shu shi %d\n",f);
getch();
}
1.你缺了include<stdio.h>
#include<string.h>
2.你的结构体数组定义的是15个就必须输入15组数据
3.你的商品编码是%s,所以前面要定义为b数组比如[10]来存放字符串
我把数字改小了。我运行过了没问题追问

谢了啊 、 可是为什么最后一组数据全是0啊?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-17
scanf("%d%s%d%d",&z[i].a,&z[i].b,&z[i].c,&z[i].d); 不是%s而是%c,%s是字符串字,%c是字符,而楼主的struct xinxi定义里面的b是char类型的,所以应该是%c,下面的输出同样的道理追问

不行啊

追答

for(k=0;kz[k+1].e) //当i=0,k=14时,那么z[k+1]就越界了,错误应该就是这里了,楼主显示的错误应该就是数组越界,自己看看其他地方还有没有这样的错误

第2个回答  2012-12-17
修改如下:
#include "conio.h"
#include"stdio.h"//缺少头文件
struct xinxi
{
int a;
char b;
int c;
int d;
int e;
}z[15];
void main()//加void
{
int i;
int y=0;
int k;
int x;
int f=0;
struct xinxi z1;
printf("qing xun xu shu ru shang pin bian hao ,shang pin ming cheng ,shang pin dan jia ,shang pin shu liang\n");
for(i=0;i<15;i++)
{
scanf("%d%s%d%d",&z[i].a,&z[i].b,&z[i].c,&z[i].d);
z[i].e=z[i].c*z[i].d;
} for(i=0;i<15;i++)
{
for(k=0;k<15-i;k++)
{
if(z[k].e>z[k+1].e)
{
z1=z[k];
z[k]=z[k+1];
z[k+1]=z1;
}
}
}
for(i=14;i>=0;i--)
{
printf("a=%d ,b=%s ,c=%d ,d=%d ,e=%d \n",z[i].a,z[i].b,z[i].c,z[i].d,z[i].e);
}
for(i=0;i<15;i++)
{
y=z[i].c+y;
}
x=y/15;
for(i=0;i<15;i++)
{
if(z[i].c>>x)
{
f++;
}
}
printf("shang pin dan jia bi shang pin dan jia ping jun zhi da de ge shu shi %d\n",f);
getch();
}追问

还是不对啊

本回答被网友采纳
第3个回答  2012-12-18
40分
相似回答