2 u012441335 u012441335 于 2013.12.08 12:43 提问

书本题目不会解,程序已经编好了,但是不知道错哪??
c++

题目是:要求使用指针处理下面的问题,输入四个字符串,按由小到大顺序输出。
我写的程序如下:
#include "stdafx.h"
#include
#include
using namespace std;
int main()
{
void swap(char *,char *);
char str1[20],str2[20],str3[20],str4[20];
cout<<"请输入四个字符串:"< cin>>str1[20];
cin>>str2[20];
cin>>str3[20];
cin>>str4[20];
if(strcmp(str1,str2)>0) swap(str1,str2);
if(strcmp(str1,str3)>0) swap(str1,str3);
if(strcmp(str1,str4)>0) swap(str1,str4);
if(strcmp(str2,str3)>0) swap(str2,str3);
if(strcmp(str2,str4)>0) swap(str2,str4);
if(strcmp(str3,str4)>0) swap(str3,str4);
cout<<"从小到大的排序是:"<<endl;
cout<<str1<<" "<<str2<<" "<<str3<<" "<<str4<<endl;
return 0;
}
void swap(char *p1,char *p2,char *p3)
{
char p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p3);strcpy(p3,p);strcpy(p,p2);strcpy(p1,p3);
}
最后程序错误,他显示:
(1)warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
(2)参见“strcpy”的声明
(3)error LNK2019: 无法解析的外部符号 "void __cdecl swap(char *,char *)" (?swap@@YAXPAD0@Z),该符号在函数 _main 中被引用
(4)fatal error LNK1120: 1 个无法解析的外部命令
我不知道最后void swap那里要怎么写,strcpy要怎么用啊???请各位解决!!!!

3个回答

wubuxiansheng
wubuxiansheng   2013.12.08 15:07

以上程序有四个问题
1、第2、3行的#include语句没有指明文件 这样编译肯定通不过
应该这样:
#include
#include
因为main函数中用到了 cin cout和strcmp
2、使用的swap函数但没有在main函数之前声明 所以肯定会报 无法解析的外部符号错误
3、你调用的swap函数和 后面实现的swap函数参数个数不一致 所以就算声明了 也肯定调用不了
4、按照swap函数的意思是交换 但是以上的实现根本无法完成交换功能

这样改应该就可以了

#include <stdio.h>
#include <iostream>

using namespace std;

void swap(char *p1,char *p2/*,char *p3*/);


int main()
{
    void swap(char *,char *);
    char str1[20],str2[20],str3[20],str4[20];
    cout<<"请输入四个字符串:"< cin>>str1[20];
    cin>>str2[20];
    cin>>str3[20];
    cin>>str4[20];
    if(strcmp(str1,str2)>0) swap(str1,str2);
    if(strcmp(str1,str3)>0) swap(str1,str3);
    if(strcmp(str1,str4)>0) swap(str1,str4);
    if(strcmp(str2,str3)>0) swap(str2,str3);
    if(strcmp(str2,str4)>0) swap(str2,str4);
    if(strcmp(str3,str4)>0) swap(str3,str4);
    cout<<"从小到大的排序是:"<<endl;
    cout<<str1<<" "<<str2<<" "<<str3<<" "<<str4<<endl;
    return 0;
}


void swap(char *p1,char *p2/*,char *p3*/)
{
    char p[20];
    //strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p3);strcpy(p3,p);strcpy(p,p2);strcpy(p1,p3);
    strcpy(p,p1);strcpy(p1,p2);strcpy(p2, p);
}
u012441335
u012441335 swap到底该怎么用??
大约 4 年之前 回复
u012441335
u012441335 调试通过了,但是输入数据后一按回车键就显示停止工作了
大约 4 年之前 回复
WLONG724
WLONG724   2013.12.19 23:30

#include
#include
#include
using namespace std;

void swap(char p1,char *p2/,char p3/);

int main()
{
void swap(char *,char *);
char str1[20],str2[20],str3[20],str4[20];
cout<<"请输入四个字符串:"< cin>>str1;
cin>>str2;
cin>>str3;
cin>>str4;
if(strcmp(str1,str2)>0) swap(str1,str2);
if(strcmp(str1,str3)>0) swap(str1,str3);
if(strcmp(str1,str4)>0) swap(str1,str4);
if(strcmp(str2,str3)>0) swap(str2,str3);
if(strcmp(str2,str4)>0) swap(str2,str4);
if(strcmp(str3,str4)>0) swap(str3,str4);
cout<<"从小到大的排序是:"<<endl;
cout<<str1<<" "<<str2<<" "<<str3<<" "<<str4<<endl;
Sleep(INFINITE);
return 0;
}

void swap(char p1,char *p2/,char p3/)
{
char p[20];
//strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p3);strcpy(p3,p);strcpy(p,p2);strcpy(p1,p3);
strcpy(p,p1);strcpy(p1,p2);strcpy(p2, p);
}

代码如上,已调试OK

u010303837
u010303837   2013.12.08 13:57

这不是c++吧你确定吗

u012441335
u012441335 哪里不对吗?
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!