用指针求输入的3个字符串由小到大排列

sdw409735459 2011-12-10 12:14:08
#include <stdio.h>
#include <string.h>
main()
{
char str1[20],str2[20],str3[20];
char swap();
printf("please input three strings\n");
scanf("%s",str1);
scanf("%s",str2);
scanf("%s",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("after being sorted\n");
printf("%s\n%s\n%s\n",str1,str2,str3);
}
char *p1[20],*p2[20];
char swap(char *p1[20],char *p2[20])
{
char p[20];
strcpy(p,p1[20]);strcpy(p1[20],p2[20]);strcpy(p2[20],p);
return *p1[20],*p2[20];
}
错误显示:
1>c:\users\david\documents\visual studio 2010\projects\1\1.cpp(11): error C2660: “swap”: 函数不接受 2 个参数
怎样修改?
...全文
381 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
氰客 2011-12-11
  • 打赏
  • 举报
回复
话说这个题 用swap(char **a, char **b)类似的直接交换地址不就行了、不过就不能传入数组名了、得malloc()
liustone1263027102 2011-12-11
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>

void swap(char *p1,char *p2);
int main()
{
char str1[20],str2[20],str3[20];

printf("please input three strings\n");

scanf("%s",str1);
scanf("%s",str2);
scanf("%s",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("after being sorted\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);
}

CoolEgos 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 x90386 的回复:]

C/C++ code

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

char swap(char p1[20],char p2[20]);

int main()
{
char str1[20],str2[20],str3[20];

printf("please input three strings\n");

scanf("%s……
[/Quote]有问题啊。。。
#include <stdio.h>
#include <string.h>
void main()
{
char str1[20],str2[20],str3[20];
void swap(char *p1,char *p2);
printf("please input three strings\n");
scanf("%s",str1);
scanf("%s",str2);
scanf("%s",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("after being sorted\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);
}
elegant87 2011-12-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 x90386 的回复:]

对了,还有swap函数没有必要弄什么返回值。
[/Quote]
对头
x90386 2011-12-10
  • 打赏
  • 举报
回复
对了,还有swap函数没有必要弄什么返回值。
x90386 2011-12-10
  • 打赏
  • 举报
回复
漏了一点,
把上面的
char swap(char *p1,char *p2)
{
char p[20];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}
改成
void swap(char *p1,char *p2)
{
char p[20];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}


strcpy
你的问题:
代码风格我就不多说了……
swap(str1,str2)——传进来两个数组名,即两个指针。所以要么在函数定义时写char *p1,char *p2,要么写char p1[20],char p2[20]。
strcpy——这个函数的参数应该传入两个指针。
x90386 2011-12-10
  • 打赏
  • 举报
回复

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

char swap(char p1[20],char p2[20]);

int main()
{
char str1[20],str2[20],str3[20];

printf("please input three strings\n");

scanf("%s",str1);
scanf("%s",str2);
scanf("%s",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("after being sorted\n");
printf("%s\n%s\n%s\n",str1,str2,str3);

return 0;
}

char swap(char *p1,char *p2)
{
char p[20];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}
猪头小哥 2011-12-10
  • 打赏
  • 举报
回复
你那个给函数传的参数的类型不匹配~~~
尘缘udbwcso 2011-12-10
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <string.h>
main()
{
char str1[20],str2[20],str3[20];
void swap(char p1[20],char p2[20]);
printf("please input three strings\n");
scanf("%s", str1);
scanf("%s", str2);
scanf("%s", 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("after being sorted\n");
printf("%s\n%s\n%s\n",str1,str2,str3);
}
void swap(char p1[20],char p2[20])
{
char p[20];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}

3、根据下面的要一步步写出正确的 C++语句. 注意:各个步骤之间是有先后顺序的 (1)定义全局变量a,初值为15,定义局部变量a,初值为8,定义2个整整型变量b,c; 要用cin输入两变量值b,c,并用cout分别输出全局变量a,及局部变量a,b,c;(主要掌握cin、cout的用法,及全局变量输出用法) (2)在上基础上再定义两个整型变量value1,value2,分别赋初值20、30; (3)定义一个指向整型变量的指针pValue,将该指针初始化为指向value1; (4)输出value1及pvalue的地址; (5)输出指针变量pvalue的值; (6)将指针pValue设置为不指向任何地址的空间,并输出其地址 (7)用new的方法申请一个存储整数值为3的空间,并赋给pvalue,输出指针变量pvalue的地址与值。 (8)释放pvalue的地址。 (9)申请三个连续的整数空间,并将申请到空间的首地址赋值给pvalue, 用cout输出所申请到的首地址值与值; (10)分别指向第2、3个元素的地址并输出其地址。 (11)释放所申请到的三个整数空间; 4、用const定义一个常数PI,圆的面积并输出; 5、2个或3个正整数中的最大数,用带有默认参数的函数实现; 6、输入两整数,将它们由大到小的顺序输出,要用变量的引用。 7、对3个变量按由小到大顺序排序,要使用变量的引用。 8、用string方法完成: (1)输入字符串,把其只的字符按逆序输出。如light输出成thgil。 (2)将两字符串连接起来,取代第1个字符串; (3)有5个字符串,要对它们从小大排列。 9、(1)编一程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型、字符串型。要用重载函数实现 (2)对(1)改用函数模板实现,并进行对比分析。
《明解C语言 第3版 入门篇》是日本的C语言经典教材,自出版以来不断重印、修订,被誉为“C语言圣经”。 《明解C语言 第3版 入门篇》图文并茂,示例丰富,第3版从190段代码和164幅图表增加到205段代码和220幅图表,对C语言的基础知识进行了彻底剖析,内容涉及数组、函数、指针、文件操作等。对于C语言语法以及一些难以理解的概念,均以精心绘制的示意图,清晰、通俗地进行讲解。原著在日本广受欢迎,始终位于网上书店C语言著作排行榜首位。 第1章 初识C语言 1 1-1 显示计算结果 2 计算整数的和并显示结果 2 程序和编译 2 注释 3 固定代码 4 printf函数:格式化输出函数 4 语句 5 计算并显示整数的差 5 格式化字符串和转换说明 6 符号的称呼 8 无格式化输出 8 字符串常量 10 转义字符 10 1-2 变量 11 变量和声明 11 赋值 12 初始化 13 声明时初始化 14 初始化和赋值 14 1-3 输入和显示 16 通过键盘进行输入 16 格式化输入函数scanf 16 乘法运算 17 输出函数puts 18 总结 21 第2章 运算和数据类型 23 2-1 运算 24 运算符和操作数 24 乘除运算符和加减运算符 25 除法运算的商和余数 25 使用printf函数打印% 26 获取整数的最后一位数字 26 多个转换说明 27 单目运算符 28 赋值运算符 29 表达式和赋值表达式 30 表达式语句 30 2-2 数据类型 31 平均值 31 数据类型 32 数据类型和对象 33 整型常量和浮点型常量 34 double类型的运算 34 数据类型和运算 35 类型转换 37 转换说明 39 总结 42 第3章 分支结构程序 45 3-1 if语句 46 if语句·其1 46 奇数的判定 47 if语句·其2 48 奇数·偶数的判断 49 非0的判断 49 if语句的结构图 50 相等运算符 52 余数的判断 53 关系运算符 54 嵌套的if语句 55 判断 57 计算较大值 58 计算三个数的最大值 59 条件运算符 60 差值计算 61 复合语句(程序块) 62 逻辑运算符 65 短路值 67 3-2 switch语句 70 switch语句和break语句 70 复杂的switch语句 72 switch语句和if语句 73 选择语句 74 总结 75 第4章 程序的循环控制 77 4-1 do语句 78 do语句 78 复合语句(程序块)中的声明 79 读取一定范围内的值 80 逻辑非运算符·德摩根定律 81 德摩根定律 81 多个整数的和及平均值 82 复合赋值运算符 84 后置递增运算符和后置递减运算符 85 4-2 while语句 87 while语句 87 用递减运算符简化程序代码 88 数据递增 90 限定次数的循环操作 91 字符常量和putchar函数 92 do语句和while语句 93 前置递增运算符和前置递减运算符 93 do语句的显示 95 逆向显示整数值 96 4-3 for语句 99 for语句 99 使用for语句实现固定次数的循环 101 偶数的枚举 103 约数的枚举 104 表达式语句和空语句 104 循环语句 105 4-4 多重循环 107 二重循环 107 用break语句强制结束循环 108 显示图形 109 多重循环 111 4-5 程序的组成元素和格式 114 关键字 114 运算符 114 标识符 114 分隔符 115 常量和字符串常量 115 自由的书写格式 116 连接相邻的字符串常量 117 缩进 117 总结 118 第5章 数组 121 5-1 数组 122 数组 122 数组的声明(使用数组前的准备) 123 访问数组(数组的使用方法) 123 数组的遍历 124 数组初始化 126 数组的复制 127 输入数组元素的值 129 对数组的元素进行倒序排列 129 使用数组进行成绩处理 131 对象式宏 131 数组元素的最大值和最小值 133 赋值表达式的判断 134 数组的元素个数 135 5-2 多维数组 138 多维数组 138 总结 142 第6章 函数 145 6-1 什么是函数 146 main函数和库函数 146 什么是函数 146 函数定义 147 函数调用 148 三个数中的最大值 151 将函数的返回值作为参数传递给函数 152 调用其他函数 154 值传递 155 6-2 函数设计 158 没有返回值的函数 158 通用性 159 不含形参的函数 160 函数返回值的初始化 161 作用域 161 文件作用域 162 声明和定义 163 函数原型声明 163 头文件和文件包含指令 164 函数的通用性 165 数组的传递 166 函数的传递和const类型的修饰符 168 线性查找(顺序查找) 170 哨兵查找法 172 多维数组的传递 175 6-3 作用域和存储期 178 作用域和标识符的可见性 178 存储期 180 总结 185 第7章 基本数据类型 189 7-1 基本数据类型和数 190 算数类型和基本数据类型 190 基数 191 基数转换 192 7-2 整型和字符型 195 整型和字符型 195 头文件 196 字符型 199 位和CHAR_BIT 200 sizeof运算符 200 size_t型和typedef声明 202 整型的灵活运用 202 整型的内部表示 204 无符号整数的内部表示 205 有符号整数的内部表示 207 按位操作的逻辑运算 209 位移运算符 212 整型常量 216 整型常量的数据类型 218 整数的显示 218 数据溢出和异常 220 7-3 浮点型 221 浮点型 221 浮点型常量 223 头文件 224 循环的控制 225 7-4 运算和运算符 228 运算符的优先级和结合性 228 优先级 228 结合性 228 数据类型转换 230 总结 232 第8章 动手编写各种程序吧 235 8-1 函数式宏 236 函数和数据类型 236 函数式宏 237 函数和函数式宏 238 不带参数的函数式宏 239 函数式宏和逗号运算符 240 8-2 排序 243 冒泡排序法 243 8-3 枚举类型 246 枚举类型 246 枚举常量 248 命名空间 250 8-4 递归函数 251 函数和类型 251 阶乘 252 8-5 输入输出和字符 255 getchar函数和EOF 255 从输入复制到输出 256 数字字符计数 256 字符 258 转义字符 261 总结 263 第9章 字符串的基本知识 265 9-1 什么是字符串 266 字符串字面量 266 字符串字面量的长度 266 字符串 268 字符数组的初始化赋值 269 空字符串 270 字符串的读取 270 格式化显示字符串 271 9-2 字符串数组 273 字符串数组 273 读取字符串数组中的字符串 274 9-3 字符串处理 275 字符串长度 275 显示字符串 277 数字字符的出现次数 278 大小写字符转换 279 字符串数组的参数传递 280 总结 283 第10章 指针 285 10-1 指针 286 函数的参数 286 对象和地址 287 取址运算符 288 指针 289 指针运算符 291 10-2 指针和函数 293 作为函数参数的指针 293 计算和与差 294 二值互换 296 将两个值排序 297 scanf函数和指针 298 指针的类型 299 空指针 300 标量型 301 10-3 指针和数组 302 指针和数组 302 指针运算符和下标运算符 304 数组和指针的不同点 306 数组的传递 308 总结 311 第11章 字符串指针 315 11-1 字符串指针 316 用数组实现的字符串和用指针实现的字符串 316 用数组实现的字符串和用指针实现的字符串的不同点 318 字符串数组 320 11-2 通过指针操作字符串 323 判断字符串长度 323 字符串的复制 325 不正确的字符串复制 328 返回指针的函数 329 11-3 字符串处理库函数 330 strlen函数:字符串的长度 330 strcpy函数、strncpy函数:复制字符串 331 strcat函数、strncat函数:连接字符串 332 strcmp函数、strncmp函数:比较字符串的大小关系 332 atoi函数、atol函数、atof函数:转换字符串 333 总结 336 第12章 结构体 339 12-1 结构体 340 数据关联性 340 结构体 342 结构体成员和运算符 344 成员的初始化 345 结构体成员和->运算符 346 结构体和typedef 348 结构体和程序 350 聚合类型 351 返回结构体的函数 351 命名空间 353 结构体数组 353 派生类型 355 12-2 作为成员的结构体 356 表示坐标的结构体 356 具有结构体成员的结构体 357 总结 361 第13章 文件处理 363 13-1 文件与流 364 文件与流 364 标准流 365 FILE型 365 打开文件 365 关闭文件 368 打开与关闭文件示例 369 文件数据汇总 370 写入日期和时间 372 获取上一次运行时的信息 376 显示文件内容 378 文件的复制 380 13-2 文本和二进制 382 在文本文件中保存实数 382 文本文件和二进制文件 383 在二进制文件中保存实数 384 显示文件自身 386 13-3 printf函数与scanf函数 389 printf函数:带格式输出 389 scanf函数:带格式的输入 393 总结 397 附录 C语言简介 399 C语言的历史 400 K&R——C语言的圣经 400 C语言标准规范 400 结语 402 参考文献 405
1.数字排列 2.奖金分配问题 3.已知条件解整数 4.输入日期判断第几天 5.输入整数进行排序 6.用*号显示字母C的图案 7.显示特殊图案 8.打印九九口诀 9.输出国际象棋棋盘 10.打印楼梯并按条件打印笑脸 11.经典兔子问题 12.判断素数 13.水仙花数问题 14.正整数分解质因数 15.学习成绩划分 16.正整数其最大公约数和最小公倍数 17.统计英文字母/空格/数字个数 18.s=a+aa+aaa+aa...a的值 19.解"完数" 20.球体自由落下物理问题 21.猴子吃桃问题 22.乒乓球比赛抽签问题 23.打印菱形图案 24.分数数列和 25.1+2!+3!+...+20!的和 26.利用递归方法5! 27.将输入字符以相反顺序打印 28.岁数问题 29.解正整数位数 30.判断回文数 31.星期几猜测游戏 32.改变文本颜色 33.学习gotoxy()与clrscr()函数 34.练习函数调用 35.设置文本颜色 36.100之内的素数 37.对10个数进行排序 38.3*3矩阵对角线元素之和 39.数字插入数组重新排序 40.将一个数组逆序输出 41.static定义静态变量用法 42.使用auto定义变量用法 43.使用static的另一用法 44.使用external的用法 45.使用register定义变量方法 46.宏#define命令练习(1) 47.宏#define命令练习(2) 48.宏#define命令练习(3) 49.#if #ifdef和#ifndef的综合应用 50.#include 的应用练习 51.学习使用按位与 & 52.学习使用按位或 | 53.学习使用按位异或 ^ 54.取一个整数从右端开始的4~7位。 55.学习使用按位取反~ 56.用circle画圆形 57.学用line画直线 58.用rectangle画方形 59.画图综合例子 60.画图综合例子2 61.打印杨辉三角形 62.学习putpixel画点 63.画椭圆ellipse 64.利用ellipse and rectangle画图 65.画个最优美的图案 66.输入3个数字按大小顺序输出 67.输入数组交换元素重新输出 68.多个整数后移位置问题 69.圆圈报数问题 70.计算一个字符串长度 71.编写输入/输出函数 72.创建链表 73.反向输出链表 74.连接两个链表 75.算一道简单题目 76.调用函数1/2+1/4+...+1/n 77.填空练习(指向指针指针) 78.找到年龄最大的人 79.字符串排序 80.海滩猴子分桃 81.已知公式条件数字 82.八进制转换为十进制 83.0-7所能组成的奇数个数 84.由两个素数之和表示的偶数 85.判断一个素数能被几个9整除 86.两个字符串连接程序 87.结构体变量传递 88.读取数字的整数值并打印出该值个数的* 89.数据加密 90.专升本一题 91.时间函数举例1 92.时间函数举例2 93.时间函数举例3 94.一个猜数游戏 95.家庭财务管理小程序 96.计算字符串中子串出现的次数 97.输入字符并保存到磁盘 98.字符串转换成大写字母并输出保存 99.文件操作应用1 100.文件操作应用2

69,373

社区成员

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

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