永发信息网

c语言问题,

答案:3  悬赏:20  手机版
解决时间 2021-03-21 01:58
  • 提问者网友:刺鸟
  • 2021-03-20 18:11
#include "stdio.h"
#include "string.h"
void sort(char **arr,int len);
int main ()
{
char *arr[6]={"Beijing","Shanghai","Shenzhen","Nanjing","Dalian","Qingdao"};
sort(arr,6);

}

void sort(char **arr,int len)
{
int i,j,temp;
for(i=0;i<len;i++)
{
for(j=len-1;j>=i;j--)
{
if(strcmp(arr[j],arr[j-1])>0)
{
temp=*arr[j];
*arr[j]=*arr[j+1];
*arr[j+1]=temp;
}
}
}
for(i=0;i<len;i++,*arr++)
{
printf("%s",*arr);
}
}
要求编一自定义函数sort,完成对n个字符串的降序排列,然后再main函数中调用sort对“beijing","shanghai","shenzhen",nanjing",dalian","qingdao"六个字符串排序,要求用指针数组表示这六个字符串

我一运行就死掉,不知道哪里有问题
最佳答案
  • 五星知识达人网友:山有枢
  • 2021-03-20 19:43
#include "stdio.h"
#include "string.h"
void sort(char arr[][20],int len);
int main ()
{
char arr[][20]={"Beijing","Shanghai","Shenzhen","Nanjing","Dalian","Qingdao"};
sort(arr,6);

}

void sort(char arr[][20],int len)
{
int i,j;
char temp[20];
for(i=0;i<len;i++)
{
for(j=len-1;j>=i;j--)
{
if(strcmp(arr[j],arr[j-1])>0)
{
strcpy(temp,arr[j]);
strcpy(arr[j],arr[j-1]);
strcpy(arr[j-1],temp);
}
}
}
for(i=0;i<len;i++,*arr++)
{
printf("%s\n",*arr);
}
}
全部回答
  • 1楼网友:洎扰庸人
  • 2021-03-20 21:02
#include "stdio.h" #include "string.h" void sort(char **arr,int len); int main () { char *arr[6]={"Beijing","Shanghai","Shenzhen","Nanjing","Dalian","Qingdao"}; sort(arr,6); return 0; } void sort(char **arr,int len) { int i,j,*temp; for(i=0;i<len-1;i++) { for(j=i;j<len-i-1;j++) { if(strcmp(arr[j],arr[j+1])>0) {     //printf("--"); temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } for(i=0;i<len;i++) { puts(*(arr+i)); } }
  • 2楼网友:污到你湿
  • 2021-03-20 20:06
结果是24,按照优先级,()的优先级最高,所以先算三个()里的,就++i,++i,++i,三个完了以后i就变成8了,然后p = 8 + 8 +8 =24.

编译器 vs 2008

结果:24

int i=5,p; 012413be mov dword ptr [i],5 //给i 赋值5 p=(++i)+(++i)+(++i); 012413c5 mov eax,dword ptr [i] // 取出i的值放入eax寄存器 eax=5 012413c8 add eax,1 //自增 1 eax=6 012413cb mov dword ptr [i],eax //将eax 放回 i 中 此时 i=6 012413ce mov ecx,dword ptr [i] //继续自增 同上 012413d1 add ecx,1 012413d4 mov dword ptr [i],ecx 012413d7 mov edx,dword ptr [i] 012413da add edx,1 012413dd mov dword ptr [i],edx //完成 3 次自增操作 此时 i = 8 012413e0 mov eax,dword ptr [i] 累加 3次 i 012413e3 add eax,dword ptr [i] 012413e6 add eax,dword ptr [i] //eax = 24 012413e9 mov dword ptr [p],eax //结果放回 p 所以 p = 24

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯