0927C语言

字符串的比较函数

strcmp()和strncmp()

int strcmp(const char*s1,const char*s2);若str1=str2,则返回0;若str1<str2,则返回负数,若大于,则返回正数

关于结构体

候选人练习

#include <stdio.h>
#include <string.h>

struct Student{
	char name[32];
	int point;
};

int main(){
	
	struct Student xm[3];
	struct Student max;
	int len;
	int i,j;
	int total = 5;
	
	
	//特殊情况,输入没有候选人的情况
	int mark = 0;
	
	char tmpName[32];
	
	
	//首先初始化
	len = sizeof(xm)/sizeof(xm[0]);
	for(i=0;i<len;i++){
		xm[i].point = 0;
		printf("请输入选民的姓名:\n");
		scanf("%s",xm[i].name);
	}
	
	
	//投票环节
	for(i = 0;i<5 ;i++)//这里5是投票的人数
	{
		mark = 0;
		printf("请输入投票目标的姓名:\n");
		memset(tmpName,'\0',sizeof(tmpName));//每次清空一下
		scanf("%s",tmpName);
		for(j=0;j<len;j++)//拿到候选人名字,候选人票数+1
		{
			if((strcmp(tmpName,xm[j].name))==0){
				xm[j].point++;
				mark = 1;
			}
			
		}
		if(mark == 0)
			printf("没有此候选人,此票放弃\n");
	}
	
	
	//唱票环节
	for(i=0;i<len;i++){
		printf("候选人%s的票数是%d\n",xm[i].name,xm[i].point);
		
	}
	
	//得出票数最高的候选人
	max = xm[0];
	for(i=0;i<len;i++){
		if(max.point < xm[i].point){
			max = xm[i];
		}
	}
	printf("最终获得选票数目最高的是:%s\n",max.name);
	
	
	return 0;
}

对比使用结构体指针的方法

#include <stdio.h>
#include <string.h>


struct Student{
	char name[32];
	int point;
};

int main(){
	
	struct Student xm[3];
	struct Student max;
	int len;
	int i,j;
	int total = 5;
	struct Student *ppp	= xm;
	
	//特殊情况,输入没有候选人的情况
	int mark = 0;
	
	char tmpName[32];
	
	
	//首先初始化
	len = sizeof(xm)/sizeof(xm[0]);
	for(i=0;i<len;i++){
		ppp->point = 0;
		printf("请输入选民的姓名:\n");
		scanf("%s",ppp->name);
		ppp++;
	}
	ppp = xm;
	
	//投票环节
	for(i = 0;i<5 ;i++)//这里5是投票的人数
	{
		mark = 0;
		printf("请输入投票目标的姓名:\n");
		memset(tmpName,'\0',sizeof(tmpName));//每次清空一下
		scanf("%s",tmpName);
		//!!!!!!!!!!!!!!!!!!!!!!!!
		//!!!!!!!!!!!!!!!!!!!!!!!!
		ppp = xm;//!!!!!!!!!!!!!!!此处,再下一次输入名字之前,必须要要指针指向数组头
		//!!!!!!!!!!!!!!!!!!!!!!!!
		//!!!!!!!!!!!!!!!!!!!!!!!!
		for(j=0;j<len;j++)//拿到候选人名字,候选人票数+1
		{
			if((strcmp(tmpName,ppp->name))==0){
				ppp->point++;
				mark = 1;
			}
			ppp++;
		}
		if(mark == 0)
			printf("没有此候选人,此票放弃\n");
		
	}
	
	ppp = xm;
	//唱票环节
	for(i=0;i<len;i++){
		printf("候选人%s的票数是%d\n",ppp->name,ppp->point);
		ppp++;
	}
	
	ppp = xm;
	//得出票数最高的候选人
	max = xm[0];
	for(i=0;i<len;i++){
		if(max.point < ppp->point){
			max = xm[i];
			
		}
		ppp++;
	}
	printf("最终获得选票数目最高的是:%s\n",max.name);
	
	
	return 0;
}

通过结构体指针间接访问结构体内存里面的数据时,用" -> "符号

对于变量名访问,用点运算符,

通过地址来访问,是用 ->运算符来我访问

#include <stdio.h>
#include <string.h>

struct Test{
	int data;
	char name[20];
};
int main()
{
	struct Test p1 = {10,"qwe"};
	struct Test *p2 = &p1;
	
	printf("%d\n",p1.data);
	printf("%d\n",p2->data);
	
	return 0;
}
#include <stdio.h>
#include <string.h>

struct Test{
	int data;
	char name[20];
};
int main()
{
	struct Test p1 = {10,"qwe"};
	struct Test *p2 = &p1;
	struct Test arr[3] = {{1,"a"},{2,"b"},{3,"c"}};
	struct Test *p3;
	p3 = &p1;
	
	struct Test *pp = arr;
	
	for(int i = 0;i<3;i++)
	{
		printf("%d,%s\n",pp->data,pp->name);
		pp++;
	}
	
	printf("%d\n",p1.data);
	printf("%d\n",p2->data);
	printf("%d\n",p3->data);

	return 0;
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值