{ int x,i,j,jinjia,shoujia,kucun; printf("请选择排序的方法:\n1:按商品编号排序\n2:按商品价格排序\n请选择:"); scanf("%d",&x); if(x==1)//按商品编号排序(选择排序) { for(j=0;j<N+1;j++) { for(i=j+1;i<=N+1;i++) { if(strcmp(num[j].bianhao,num[i].bianhao)>0) { strcpy(pai.bianhao,num[i].bianhao); strcpy(num[i].bianhao,num[j].bianhao); strcpy(num[j].bianhao,pai.bianhao); strcpy(pai.mingcheng,num[i].mingcheng); strcpy(num[i].mingcheng,num[j].mingcheng); strcpy(num[j].mingcheng,pai.mingcheng); jinjia=num[i].jinjia; num[i].jinjia=num[j].jinjia; num[j].jinjia=jinjia; shoujia=num[i].shoujia; num[i].shoujia=num[j].shoujia; num[j].shoujia=shoujia; kucun=num[i].kucun; num[i].kucun=num[j].kucun; num[j].kucun=kucun; } } } } if(x==2)//按商品售价排序(选择排序法) { for(j=0;j<N+1;j++) { for(i=j+1;i<=N+1;i++) { if(num[j].shoujia>num[i].shoujia) { strcpy(pai.bianhao,num[i].bianhao); strcpy(num[i].bianhao,num[j].bianhao); strcpy(num[j].bianhao,pai.bianhao); strcpy(pai.mingcheng,num[i].mingcheng); strcpy(num[i].mingcheng,num[j].mingcheng); strcpy(num[j].mingcheng,pai.mingcheng); jinjia=num[i].jinjia; num[i].jinjia=num[j].jinjia; num[j].jinjia=jinjia; shoujia=num[i].shoujia; num[i].shoujia=num[j].shoujia; num[j].shoujia=shoujia; kucun=num[i].kucun; num[i].kucun=num[j].kucun; num[j].kucun=kucun; } } } } }无法运行,修改以下
时间: 2024-01-19 08:02:10 浏览: 97
这段代码可能存在以下问题:
1. 缺少头文件,需要添加头文件,如:
```c
#include <stdio.h>
#include <string.h>
```
2. 变量未定义,需要定义变量,如:
```c
#define N 10 // 定义数组大小为10
struct goods // 定义结构体
{
char bianhao[20];
char mingcheng[20];
int jinjia;
int shoujia;
int kucun;
};
struct goods num[N+1],pai; // 定义结构体数组和临时变量
```
3. 输入的变量未初始化,需要初始化变量,如:
```c
int x=0,i=0,j=0,jinjia=0,shoujia=0,kucun=0;
```
4. 数组下标越界,需要修改循环条件,如:
```c
for(j=0;j<N;j++)
{
for(i=j+1;i<N;i++)
{
// ...
}
}
```
5. 输出结果不明确,可以添加输出语句,如:
```c
printf("排序结果为:\n");
for(i=0;i<N;i++)
{
printf("%s %s %d %d %d\n",num[i].bianhao,num[i].mingcheng,num[i].jinjia,num[i].shoujia,num[i].kucun);
}
```
修改后的代码如下:
```c
#include <stdio.h>
#include <string.h>
#define N 10 // 定义数组大小为10
struct goods // 定义结构体
{
char bianhao[20];
char mingcheng[20];
int jinjia;
int shoujia;
int kucun;
};
struct goods num[N+1],pai; // 定义结构体数组和临时变量
int main()
{
int x=0,i=0,j=0,jinjia=0,shoujia=0,kucun=0;
printf("请输入商品信息:\n");
for(i=0;i<N;i++)
{
printf("请输入第%d个商品编号:",i+1);
scanf("%s",num[i].bianhao);
printf("请输入第%d个商品名称:",i+1);
scanf("%s",num[i].mingcheng);
printf("请输入第%d个商品进价:",i+1);
scanf("%d",&num[i].jinjia);
printf("请输入第%d个商品售价:",i+1);
scanf("%d",&num[i].shoujia);
printf("请输入第%d个商品库存:",i+1);
scanf("%d",&num[i].kucun);
}
printf("请选择排序的方法:\n1:按商品编号排序\n2:按商品价格排序\n请选择:");
scanf("%d",&x);
if(x==1)//按商品编号排序(选择排序)
{
for(j=0;j<N;j++)
{
for(i=j+1;i<N;i++)
{
if(strcmp(num[j].bianhao,num[i].bianhao)>0)
{
strcpy(pai.bianhao,num[i].bianhao);
strcpy(num[i].bianhao,num[j].bianhao);
strcpy(num[j].bianhao,pai.bianhao);
strcpy(pai.mingcheng,num[i].mingcheng);
strcpy(num[i].mingcheng,num[j].mingcheng);
strcpy(num[j].mingcheng,pai.mingcheng);
jinjia=num[i].jinjia;
num[i].jinjia=num[j].jinjia;
num[j].jinjia=jinjia;
shoujia=num[i].shoujia;
num[i].shoujia=num[j].shoujia;
num[j].shoujia=shoujia;
kucun=num[i].kucun;
num[i].kucun=num[j].kucun;
num[j].kucun=kucun;
}
}
}
}
if(x==2)//按商品售价排序(选择排序法)
{
for(j=0;j<N;j++)
{
for(i=j+1;i<N;i++)
{
if(num[j].shoujia>num[i].shoujia)
{
strcpy(pai.bianhao,num[i].bianhao);
strcpy(num[i].bianhao,num[j].bianhao);
strcpy(num[j].bianhao,pai.bianhao);
strcpy(pai.mingcheng,num[i].mingcheng);
strcpy(num[i].mingcheng,num[j].mingcheng);
strcpy(num[j].mingcheng,pai.mingcheng);
jinjia=num[i].jinjia;
num[i].jinjia=num[j].jinjia;
num[j].jinjia=jinjia;
shoujia=num[i].shoujia;
num[i].shoujia=num[j].shoujia;
num[j].shoujia=shoujia;
kucun=num[i].kucun;
num[i].kucun=num[j].kucun;
num[j].kucun=kucun;
}
}
}
}
printf("排序结果为:\n");
for(i=0;i<N;i++)
{
printf("%s %s %d %d %d\n",num[i].bianhao,num[i].mingcheng,num[i].jinjia,num[i].shoujia,num[i].kucun);
}
return 0;
}
```
阅读全文