#include<stdio.h>
#include<conio.h>
#include<string.h>
typedef struct
{
char cou[15];
}C;
void main()
{
/*定义结构数组*/
C p[5];
/*定义指针指向结构体变量*/
C* q=p;
int i,j,temp;
printf("input countries:\n");
/*循环输入国家名并存储在结构数组中*/
for(i=0;i<5;i++)
{
scanf("%s",&p[i].cou);
/* strupr(p[i].cou);*/
}
/*冒泡排序将国家名称排序*/
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
{
/*strcmp函数比较相邻两个国家名的Ascii码*/
if(strcmp(p[j].cou,p[j+1].cou)>0)
{
temp=*q[j].cou;
*q[j].cou=*q[j+1].cou;
*q[j+1].cou=temp;
}
}
printf("\n");
/*循环输出*/
for(i=0;i<5;i++)
printf("%s ",p[i].cou);
getch();
}
这个程序不能进行排序,还只是顺序输出,也没有提示错误,编译器Win-Tc。请问我这个哪里写的有问题?
if(strcmp(p[j].cou,p[j+1].cou)>0)
{
temp=*q[j].cou;
*q[j].cou=*q[j+1].cou;
*q[j+1].cou=temp;
}
这个地方有问题,指针间可以进行赋值,那我这样写为什么没有执行?
这里涉及到的交换只能用strcpy()函数么?