不知道这个程序是哪里出了问题

Rookie_Allen 2008-08-26 03:31:45
#include<stdio.h>
#include<string.h>
void main()
{
char *str1[20],*str2[20],*str3[20];
char swap();
printf("Input three lines:\n");
gets(str1);
gets(str2);
gets(str3);
if(strcmp(str1,str2)>0)swap(str1,str2);
if(strcmp(str1,str3)>0)swap(str1,str3);
if(strcmp(str2,str3)>0)swap(str2,str3);
printf("Now,the order is:\n");
printf("%s\n%s\n%s\n",str1,str2,str3);
}

char swap(char *p1,char *p2)
{
char *p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
}
...全文
79 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjzwl1018 2008-08-26
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <string.h>

void swap(char *, char *); /*函数声明*/

void main()
{
char str1[20]={0},str2[20]={0},str3[20]={0}; /*字符数组就可以存放字符串了,干嘛还要定义字符指针数组?*/

printf("Input three lines:\n");
gets(str1);
gets(str2);
gets(str3);
if (strcmp(str1,str2)>0)
swap(str1,str2);
if (strcmp(str1,str3)>0)
swap(str1,str3);
if (strcmp(str2,str3)>0)
swap(str2,str3);
printf("Now,the order is:\n");
printf("%s\n%s\n%s\n",str1,str2,str3);
}

char swap(char *p1,char *p2) /*数组首地址自动退化成字符指针*/
{
char p[20]={0};

strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oo 的回复:]
把那些 * 去掉
[/Quote]
正解
taojian_hhu 2008-08-26
  • 打赏
  • 举报
回复
1,函数要先声明再使用。
2,gets参数类型不能为char**
3,swap和标准库函数重名
正确程序
#include <stdio.h>
#include <string.h>
void swap(char *p1,char *p2)
{
char p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
}
void main()
{
char str1[20],str2[20],str3[20];
char swap1();
printf("Input three lines:\n");
gets(str1);
gets(str2);
gets(str3);
if(strcmp(str1,str2)>0)
swap1(str1,str2);
if(strcmp(str1,str3)>0)
swap1(str1,str3);
if(strcmp(str2,str3)>0)
swap1(str2,str3);
printf("Now,the order is:\n");
printf("%s\n%s\n%s\n",str1,str2,str3);
}

lbh2001 2008-08-26
  • 打赏
  • 举报
回复
概念错误

#include <stdio.h>
#include <string.h>
int main(void)
{
char str1[20],str2[20],str3[20];
void swap();
printf("Input three lines:\n");
gets(str1);
gets(str2);
gets(str3);
if(strcmp(str1,str2)>0)swap(str1,str2);
if(strcmp(str1,str3)>0)swap(str1,str3);
if(strcmp(str2,str3)>0)swap(str2,str3);
printf("Now,the order is:\n");
printf("%s\n%s\n%s\n",str1,str2,str3);
return 0;
}

void swap(char *p1,char *p2)
{
char p[20];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}
xunfeng_2008 2008-08-26
  • 打赏
  • 举报
回复
把char *str1[20],*str2[20],*str3[20];
改成char str1[20],str2[20],str3[20];
就OK了

zjw6861982 2008-08-26
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
void main()
{
char str1[20], str2[20], str3[20];
void swap();
printf("Input three lines:\n");
gets(str1);
gets(str2);
gets(str3);
if(strcmp(str1,str2)>0)
swap(str1,str2);
if(strcmp(str1,str3)>0)
swap(str1,str3);
if(strcmp(str2,str3)>0)
swap(str2,str3);
printf("Now,the order is:\n");
printf("%s\n%s\n%s\n",str1,str2,str3);
}

void swap(char *p1,char *p2)
{
char p[20];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}
god_sun 2008-08-26
  • 打赏
  • 举报
回复
太多错误了。
函数没声明,且定义的函数也错,返回值都没有。 定义数组错误。

oo 2008-08-26
  • 打赏
  • 举报
回复
把那些 * 去掉
内容简介: 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 本课程内容定位学习设计原则,学习设计模式的基础。在实际开发过程中,并不是一定要求所有代码都遵循设计原则,我们要考虑人力、时间、成本、质量,不是刻意追求完美,要在适当的场景遵循设计原则,体现的是一种平衡取舍,帮助我们设计更加优雅的代码结构。本章将详细介绍开闭原则(OCP)、依赖倒置原则(DIP)、单一职责原则(SRP)、接口隔离原则(ISP)、迪米特法则(LoD)、里氏替换原则(LSP)、合成复用原则(CARP)的具体内容。 为什么需要学习这门课程? 你在日常的开发中,会不会也遇到过同样的问题。系统问题,不知道问题究竟在什么位置;当遇到产品需求,总是对代码缝缝补补,不能很快的去解决。而且平时工作中,总喜欢把代码堆在一起,问题时,不知道如何下手,工作效率很低,而且自己的能力也得不到提升。而这些都源于一个问题,那就是软件设计没做好。这门课能帮助你很好的认识设计模式,让你的能力得到提升。课程大纲: 为了让大家快速系统了解设计模式知识全貌,我为您总结了思维导图,帮您梳理学习重点,建议收藏!

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧