C语言二维数组的排序问题
答案:4 悬赏:30
解决时间 2021-03-09 02:23
- 提问者网友:傀儡离开
- 2021-03-08 23:32
程序代码如下,输入3个国家的名字,然后按字母的顺序排列并输出,可结果总是不对,总是重复输出同一个国家的名字,请大家帮忙~
include
#include
#define N 3
main()
{
char a[N][20],min[20],temp[20];
int i,j;
printf("Enter 3 names:" );
for(i=0;i scanf("%s",a[i]);
printf("\n");
for(i=0;i strcpy(min,a[i]);
for(j=i+1;j if(strcmp(a[j],min)<0)
strcpy(min,a[j]);
}
if(strcmp(a[i],min)!=0){
strcpy(temp,a[i]);
strcpy(a[i],min);
strcpy(min,temp);
}
}
for(i=0;i printf(" %s",a[i]);
printf("\n");
}
}
最佳答案
- 二级知识专家网友:一场云烟
- 2021-03-09 00:14
第一行差个#
还有
for(i=0;i
strcpy(min,a[i]);
for(j=i+1;j
if(strcmp(a[j],min)<0)
strcpy(min,a[j]);
}
if(strcmp(a[i],min)!=0){
strcpy(temp,a[i]);
strcpy(a[i],min);
strcpy(min,temp);
}
}
这一段当中 两个IF语句应该用嵌套
我用 TC调试用如下
#include
#include
#define N 3
main()
{
char a[N][20],min[20],temp[20];
int i,j;
printf("Enter 3 names:" );
for(i=0;i
scanf("%s",a[i]);
printf("\n");
for(i=0;i
strcpy(min,a[i]);
for(j=i+1;j
if(strcmp(a[j],min)<0)
strcpy(min,a[j]);
else
if(strcmp(a[i],min)!=0)
{strcpy(temp,a[i]);
strcpy(a[i],min);
strcpy(min,temp);
}
}
for(i=0;i
printf(" %s",a[i]);
printf("\n");
}
system ("pause");
return 0;
}
全部回答
- 1楼网友:桑稚给你看
- 2021-03-09 04:13
你把排序的算法好好看看吧,排序的地方思维有点混乱,这是我写的,试下吧
#include
#define N 5
main()
{
char a[10][20];
char *temp;
int i,j,flag=0;
for(i=0;i0)
{
strcpy(temp,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],temp);
flag=1;
}
}
if(flag==0)
break;
}
for(i=0;i
- 2楼网友:一身浪痞味
- 2021-03-09 02:38
include
#include
#define N 3
main()
{
char a[N][20],min[20],temp[20];
int i,j;
printf("Enter 3 names:" );
for(i=0;i
- 3楼网友:情窦初殇
- 2021-03-09 01:46
不是
这么说吧,数组名本身就是指针,指向数组的第一个元素
至于你所说的调用调用二级(二维吧)数组,难道不是如普通变量般直接调用吗?
根据问题补充说,这是不允许的,main()函数的形参是固定的不能传递指针。而一般的自定义函数只能用传递首地址的形式来传递二维数组,例子如下:
定义:int a[x][y];
int func(int *p,int x,int y){
//x,y即为调用x行y列的元素
printf("%d\
",p+x*x+y); //这里是通过计算指针位置实现
return 0;}
调用: func(a,3,3);
这种通过计算地址方法调用相当麻烦。。可以考虑将数组定义在结构中,再将结构进行形参传递,当这样会降低效率...例子如下
#include<stdio.h>
typedef struct{
int a[5][5];}te;
te test;
int func(te a,int x,int y){
printf("%d\
",a.a[x][y]);
return 0;}
int main()
{
test.a[3][3]=5;
func(test,3,3);
getch();
return 0;}
我要举报
大家都在看
推荐资讯