C++基础问题 char和string

洪章桔 2016-12-09 03:05:06
#include <iostream>
using namespace std;
struct Person
{
string name;
//char name;
int count;
};
int main()
{
Person candidate[3]={"张三",0,"李四",0,"王五",0};
string vote[10]={"张三","张三","李四","王五","张三","李四","王五","张三","王五","张三"};
//char vote[10]={"张三","张三","李四","王五","张三","李四","王五","张三","王五","张三"};
for(int i=0;i<10;i++)
{for(int j=0;j<3;j++)
if(vote[i]==candidate[j].name)
candidate[j].count++;}
for(int i=0;i<3;i++)
{cout<<candidate[i].name<<":"<<candidate[i].count<<endl;}
system("pause");
return 0;
}
http://img.ask.csdn.net/upload/201611/23/1479912620_603775.png
我想把string换成char,输出结果不变。三种手段,1.第一个string换成char,输出结果不变。2.把第二个string换成char,输出结果不变。3.把两个string都换成char,输出结果还剩不变。怎么实现呢?是不是要用函数来实现呢?求解惑
...全文
281 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongwenjun 2016-12-10
  • 打赏
  • 举报
回复
我去
洪章桔 2016-12-09
  • 打赏
  • 举报
回复
感谢各位的帮助,我会再接再厉!
洪章桔 2016-12-09
  • 打赏
  • 举报
回复
第一个赵老师给了个明确的思路,但是输出不对。 后面的朋友输出都正确,有不少启发,但是主函数变动了。所以最后是无满意结贴。尽管收获不少,但 不是最开始想的,所以咯,,,
hongwenjun 2016-12-09
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>

struct Person {
    char name[32];   //     string name;
    int count;
};

int main()
{
    Person candidate[3] = {"张三", 0, "李四", 0, "王五", 0};

    char* vote[10] = {"张三", "张三", "李四", "王五",
                      "张三", "李四", "王五", "张三",
                      "王五", "张三"
                     };

    for (int i = 0; i != 3; i++) {
        for (int j = 0; j != 10; j++)
            if (strcmp(vote[j], candidate[i].name) == 0)
                candidate[i].count++;
    }

    for (int i = 0; i != 3; i++)
        printf("%s:%d\n", candidate[i].name, candidate[i].count);

    return 0;
}
hongwenjun 2016-12-09
  • 打赏
  • 举报
回复
学了多年 C/C++ 现在 string都忘光了,还是使用 char 简单点
Eleven 2016-12-09
  • 打赏
  • 举报
回复

#include <iostream>
#include <string>

using namespace std;

struct Person
{
	//string name;
	char name[32];
	int count;
};

int main()
{
	Person candidate[3] = { "张三",0,"李四",0,"王五",0 };
	//string vote[10] = { "张三","张三","李四","王五","张三","李四","王五","张三","王五","张三" };
	char *vote[10]={"张三","张三","李四","王五","张三","李四","王五","张三","王五","张三"};
	for (int i = 0; i<10; i++)
	{
		for (int j = 0; j<3; j++)
			if (0 == _stricmp(vote[i], candidate[j].name))
				candidate[j].count++;
	}
	for (int i = 0; i<3; i++)
	{
		cout << candidate[i].name << ":" << candidate[i].count << endl;
	}
	system("pause");
	return 0;
}
paschen 版主 2016-12-09
  • 打赏
  • 举报
回复
这样改:


#include <iostream>
using namespace std;
struct Person
{
	const char* name;
	int count;
};
int main()
{
	Person candidate[3]={"张三",0,"李四",0,"王五",0};
	char vote[][10]={"张三","张三","李四","王五","张三","李四","王五","张三","王五","张三"};
	for(int i=0;i<10;i++)
	{
		for(int j=0;j<3;j++)
			if(strcmp(vote[i],candidate[j].name)==0)
				candidate[j].count++;
	}
	for(int i=0;i<3;i++)
	{
		cout<<candidate[i].name<<":"<<candidate[i].count<<endl;
	}
	system("pause");
	return 0;
}
赵4老师 2016-12-09
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
struct Person
{
string name;
//char name[7];
int count;
};
int main()
{
Person candidate[3]={"张三",0,"李四",0,"王五",0};
string vote[10]={"张三","张三","李四","王五","张三","李四","王五","张三","王五","张三"};
//char vote[10][7]={"张三","张三","李四","王五","张三","李四","王五","张三","王五","张三"};
for(int i=0;i<10;i++)
{for(int j=0;j<3;j++)
if(vote[i]==candidate[j].name)
candidate[j].count++;}
for(int i=0;i<3;i++)
{cout<<candidate[i].name<<":"<<candidate[i].count<<endl;}
system("pause");
return 0;
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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