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

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

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

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<stdio.h>
#include<string.h>

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<Arr[j+1].num)
			{
				char temp[10];
				strcpy(temp,Arr[j].arr);
				int t=Arr[j].num;
				Arr[j].num=Arr[j+1].num;
				Arr[j+1].num=t;
				
				strcpy(Arr[j].arr,Arr[j+1].arr);
				strcpy(Arr[j+1].arr,temp);
			}
		}
	}
//输出
		for(int i=0;i<=3;i++)
		{
			printf("%s %d\n",Arr[i].arr,Arr[i].num);
		}
	
	return 0;
}

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值