含有字符串数组的结构体的赋值、输入、字符串比较

1.之所以用到结构体,是因为一个物体有多个属性,此时使用结构体简单些

2.对字符串进行整体操作时,需要添加头文件#include

1).字符串赋值需要使用strcpy( char * dst, const char * src )函数,即把后者的值赋予前者

2).字符串比较需要使用int strcmp(char *str1,char * str2)函数,相等返回0,前者大返回1,后者大返回-1

下面是笔者认为比较经典的题(根据结构体中一个数的大小来给结构体排序)

有四个候选人zhao,qian,sun,wang参加评选,编写计票程序,统计每个人的得票数量,按得票从多到少的顺序显示每个人的名字和得票数。
输入:若干行、若干列的合理人名,人名间用空格隔开,最后是000表示结束。
输出:四行,每行是一个人的名字和得票数,中间用一个空格隔开。
【输入输出样例】
输入:
zhao qian sun wang wang wang wang
sun sun qian 000
输出:
wang 4
sun 3
qian 2
zhao 1

#include
#include

typedef struct person
{
	char arr[6];
	int num;
}Person;

int main()
{
	//结构体中含有字符串和整数的结构体的赋值
	Person Arr[4];
	strcpy(Arr[0].arr,"wang");
	strcpy(Arr[1].arr,"sun");
	strcpy(Arr[2].arr,"qian");
	strcpy(Arr[3].arr,"zhao");
	for(int i=0;i<=3;i++)
	{
		Arr[i].num=0;
	}
//	输入多个以空格为分界的字符串(用scanf),并进行字符串的比较
	char input[10];
	scanf("%s",input);
	while (strcmp(input, "000") != 0) {
		if (strcmp(input, "wang") == 0)
		{
			Arr[0].num++;
		}
		if (strcmp(input, "sun") == 0)
		{
			Arr[1].num++;
		}
		if (strcmp(input, "qian") == 0)
		{
			Arr[2].num++;
		}
		if (strcmp(input, "zhao") == 0)
		{
		    Arr[3].num++;
		}
	    scanf("%s",input);
	}
//	结构体按照num进行排序
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<4-i-1;j++)
		{
			if(Arr[j].num

你可能感兴趣的:(C,c语言,算法,蓝桥杯)