#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"六个字符串排序,要求用指针数组表示这六个字符串
我一运行就死掉,不知道哪里有问题
c语言问题,
答案:3 悬赏:20 手机版
解决时间 2021-03-21 01:58
- 提问者网友:刺鸟
- 2021-03-20 18:11
最佳答案
- 五星知识达人网友:山有枢
- 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);
}
}
#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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯