永发信息网

c语言问题,

答案:3  悬赏:20  手机版
解决时间 2021-03-21 01:58
#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"六个字符串排序,要求用指针数组表示这六个字符串

我一运行就死掉,不知道哪里有问题
最佳答案
#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);
}
}
全部回答
#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)); } }
结果是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

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
打美国纽约号码前加什么
东升园大酒店怎么去啊,有知道地址的么
从乌鲁木齐到南昌火车怎么才方便啊?
我校田径运动会上,a、b两同学在操场上沿同一
做钡餐提示胃壁增厚有什么意义
请问,算是给新浪网站的一个简易吧,希望新浪这
我YY号被冻结了,绑定的手机还丢了。申诉不成
不是半音阶口琴能吹b7音吗
日本男性在家庭中的地位真的很惨吗
怎样做电子表格视频
知乎黑大怎么样才能转专业
单选题找出划线部分读音不同的选项A.sugarB.f
瑞昌市豆豆百货店这个地址在什么地方,我要处
开封市的大型花草市场在哪里 比较齐全的?
他山之石,可以攻玉出自哪里呢
推荐资讯
转院证明日期开晚了8天医保能报销吗?
江夏区民政局去名城8090座公交怎么走?
欧美歌曲中谁有个男人大叫的歌曲
春节去平遥玩帮助推荐特色酒店,钱不是问题
深夜排档在什么地方啊,我要过去处理事情
水管阀门宁开就漏水,关上不漏怎么办
荣成2o16年拆迁村有哪些
We expressed the hope whichMr and Mrs Smit
若二次函数y=(x-m)2-1,当x≤3时,y随x的增
2015年全年有多少天?怎么作
三明市区一机场坐几路大巴?早班车几点
一块地有3分之2公顷,用5台117
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?