主函数用指针存储十个名字的数组,并一个子函数对其进行排序,为什么执行不了??

#include<stdio.h>#include<string.h>voidsort(char*name,intn){inti;char*temp=NULL;for(i... #include <stdio.h>
#include <string.h>
void sort(char* name , int n){
int i;
char* temp=NULL;
for(i=0;i<n-1;i++){
if(strcmp(&name[i],&name[i+1])>0){
strcpy(temp,&name[i]);
strcpy(&name[i],&name[i+1]);
strcpy(&name[i+1],temp);
}
}
}
int main(void){
int i;
char* name[10];
for(i=0;i<10;i++){
printf("请输入第%d个学生的姓名:",i+1);
scanf("%s",&name[i]);
}
sort(* name,10);
for(i=0;i<10;i++)
printf("第%d个学生的姓名是%s",i+1,name[i]);
return 0;
}
展开
 我来答
风若远去何人留
推荐于2017-10-26 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20403 获赞数:450143
专业C/C++软件开发

向TA提问 私信TA
展开全部
#include <stdio.h>
#include <string.h>
void sort(char name[10][100] , int n){
int i;
char temp[100];
for(i=0;i<n-1;i++){
if(strcmp(name[i],name[i+1])>0){
strcpy(temp,name[i]);
strcpy(name[i],name[i+1]);
strcpy(name[i+1],temp);
}
}
}
int main(void){
int i;
char name[10][100];
for(i=0;i<10;i++){
printf("请输入第%d个学生的姓名:",i+1);
scanf("%s",name[i]);
}
sort(name,10);
for(i=0;i<10;i++)
printf("第%d个学生的姓名是%s",i+1,name[i]);
return 0;
}
ebaoqigai
2012-05-03
知道答主
回答量:8
采纳率:0%
帮助的人:6.3万
展开全部
void sort(char* name , int n);
这个函数不是对字符串排序,形参只有一个字符串而已。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
niluanxy
2012-05-03 · 超过26用户采纳过TA的回答
知道答主
回答量:114
采纳率:0%
帮助的人:75.1万
展开全部
代码如下,DEV C++ 4.9.9.2 编译通过:
==========================================================================
#include <stdio.h>
#include <string.h>
void sort(char* name[], int n)
{
int i,j;
char *str;
for(i=1; i<n; i++) /* 采用插入排序法排序 */
{
str=name[i];
for(j=i-1; j>=0 && (strcmp(str,name[j])<0); j--)
name[j+1]=name[j];
name[j+1]=str;
}
}
int main(void)
{
int i;
char* name[10];
for(i=0;i<10;i++)
{
printf("请输入第%2d个学生姓名 :",i+1);
name[i]=(char*)malloc(30); /* 分配内存 */
scanf("%s",name[i]);
}
sort(name,10);
printf("\n");
for(i=0;i<10;i++)
printf("第%2d个学生的姓名是 : %s\n",i+1,name[i]);

for(i=0;i<10;i++)
free(name[i]);
getch(); /* VC编译的话去掉此句 */
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
adoqq_bd
2012-05-03 · TA获得超过7051个赞
知道大有可为答主
回答量:1818
采纳率:63%
帮助的人:1688万
展开全部
//问题不少,给你改了下

#include <stdio.h>
#include <string.h>
#include <malloc.h> //malloc头文件
void sort(char** name , int n) //chat** name
{
int i,j;
char temp[30]; //要有空间
for(i=0;i<n;i++) //排序
{
for(j=i+1;j<n;j++)
{
if(strcmp(name[i],name[j])>0)
{
strcpy(temp,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],temp);
}
}
}
}
int main(void)
{
int i;
char* name[10];
for(i=0;i<10;i++)
{
printf("请输入第%d个学生的姓名:",i+1);
name[i]=(char*)malloc(30); //分配内存
scanf("%s",name[i]); //name[i]
}
sort(name,10); //name
for(i=0;i<10;i++)
printf("第%d个学生的姓名是%s\n",i+1,name[i]);
for(i=0;i<10;i++)
free(name[i]); //释放内存
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卫傲柏a
2012-05-03
知道答主
回答量:71
采纳率:0%
帮助的人:27.1万
展开全部
一楼正解,楼主基础不过关 ,继续努力。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式