我一直试图在结构的帮助下解决问题。这是我到目前为止所拥有的:
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <time.h>
using namespace std;
struct{
char name[20];
char continent[20];
float length;
}
river[15] = {{ "Missisipi", "North America", 5969}, {"Yukon", "North America", 3180}, {"Mackenzie", "North America", 4240},
{"Amazon", "South America", 6992}, {"Parana", "South America", 4700}, {"Orinoco", "South America", 2600},
{"Danube", "Europe", 2850}, {"Dnieper", "Europe", 2201}, {"Volga", "Europe", 3530}, {"Yenisey", "Asia", 4102},
{"Indus", "Asia", 3180}, {"Amur", "Asia", 4440}, {"Nile", "Afrika", 6670},
{"Niger", "Afrika", 4160}, {"Congo", "Afrika", 4320}};
int main()
{
char u[20];
int i;
cout << "World's longest rivers: \n";
for (i=0; i<15; i++)
{
cout << setw(20) << river[i].name << setw(20) << river[i].continent << setw(20) << river[i].length << endl;
}
cout << "\nEnter name of the continent: ";
cin >> u;
cout << "\nChosen continent is:\n";
for (int i=0; i<15; i++)
if (river[i].continent == u)
cout << setw(20) << river[i].name << setw(20) << river[i].continent << setw(20) << river[i].length << endl;
getch();
}
好吧,有几个问题困扰我:
代码编译,但当dos窗口显示时,信息
字符串Chosen continent is:
下面是空白的;
我想知道如何解决所选河流的平均长度 大陆。
我在这一行找到的主要问题是:
if (river[i].continent == u)
比较永远不会产生true
。
答案 0 :(得分:1)
在这一行
if (river[i].continent == u)
你正在比较两个char*
指针(肯定不会有相同的值)
你可能想做
if (strncmp(river[i].continent,u,sizeof(u)) == 0)
检查指向的字符数组是否具有相同的内容。