永发信息网

帮我调试一C++的程序

答案:4  悬赏:20  手机版
解决时间 2021-04-26 13:08
  • 提问者网友:藍了天白赴美
  • 2021-04-26 08:16

输入5个字符串,找出最大的,输出。要用2维指针,数组。

#include<iostream.h>
#include<string.h>
void main()
{
char str[5][81];
char *p[5],**q,**max;
int i;
cout<<"请输入5组字符串:"<<endl;
for(i=0;i<5;i++)
{
p[i]=str[i];
cin>>p[i];
}
**max=*p[0];
for(i=1;i<5;i++)
if(strcmp(**max,*p[i])<0)
*max=p[i];
cout<<*max<<endl;

}

最佳答案
  • 五星知识达人网友:忘川信使
  • 2021-04-26 08:51

1.指针刚定义时,若没有指向指定的位置是不能用的,因为它指向随机的一个地址。要想使用必须指向一个明确的地址。


如上T,*p[5]是一个指针数组,也就是一个包含五个指针的数组,


p[0]指向第一行(也就是p[0]中的数字是第一行的地址),依次类推;


上面定义*p[5]后并没有应用,只有在初始化后(即p[i]=str[i]),才进


行运算,这里p[i]=str[i]就是将指针p[i]指向了二维数组str的行地址。


2。strcmp()中两个参数都是字符串,所以应该是两个字符数组或指针


T中*max和p[i]均是指向一个行的指针。


3。*m=p[i]表示*m和p[i]指向一个地址,因为p[i]前面已经指定了位置,


所以此处就可以这样用了。


max=p是将两个二级指针指向同一地址。

全部回答
  • 1楼网友:上分大魔王
  • 2021-04-26 10:56
p[i]=str[i]; cin>>p[i];这里好像不对,好像应该改成p[i]=&str[i]; cin>>*p[i];
  • 2楼网友:末日狂欢
  • 2021-04-26 10:25

*max=p[i]; cout<<*max<<endl;

少了个*

  • 3楼网友:封刀令
  • 2021-04-26 10:08

楼主的代码有三个错误: 1、**max=*p[0]; //指针未初始化,指向的是未知的地址 2、strcmp(**max,*p[i]) //strcmp函数的参数是char *类型,而**max和*p[i]是char类型 3、*max=p[i]; //错误同1,都是使用未初始化的指针 正确的代码如下,附运行截图: #include <iostream> #include <cstring>

using namespace std;

int main() { char str[5][81], *p[5], **max; int i; cout << "请输入5组字符串:" << endl; for(i = 0; i < 5; ++i) { p[i] = str[i]; cin >> p[i]; } max = p; for(i = 1; i < 5; ++i) if(strcmp(*max, p[i]) < 0) max = p + i; cout << "最大的字符串是:" << *max << endl; return 0; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯