Day 7 算法笔记之入门模拟3.2查找元素

目录

1.找x

2.统计同成绩学生人数

3.查找学生信息

4.查找

5.学生查询


1.找x

直接顺序查找,没啥好说的

#include <cstdio>
#include <cstring>
#include <math.h>

int main(){
	
	int n;
	
	while(scanf("%d",&n)!= EOF){
		int martix[201]={0};
		for(int i=0;i<n;i++){
			scanf("%d",&martix[i]);
		}
		
		int x;
		scanf("%d",&x);
		
		int num=0;
		for(int i=0;i<n;i++){
			if(martix[i]==x){
				num+=1;
				printf("%d\n",i);
			}
		}
		
		if(num==0){
			printf("-1\n");
		}
	}
	
	
	return 0;
}

2.统计同成绩学生人数

如果是0就要跳出while循环,所以要多加一个if语句判断

#include <cstdio>
#include <cstring>
#include <math.h>

int main(){
	
	int n;
	
	while(scanf("%d",&n)!=0){
		if(n==0) break;
		int martix[10001]={0};
		for(int i=0;i<n;i++){
			scanf("%d",&martix[i]);
		}
		
		int x;
		scanf("%d",&x);
		
		int num=0;
		for(int i=0;i<n;i++){
			if(martix[i]==x){
				num++;
			}
		}
		
		printf("%d\n",num);
	}
	
	
	return 0;
}

3.查找学生信息

如果要输入001这种,要用字符串数组来输出,要把这个变成数字,用sscanf(A,"%d",a)把A赋值给整数a

#include <cstdio>
#include <cstring>
#include <math.h>

struct student{
	char name[200];
	char sex[100];
	int age=0;
}stu[1010];

int main(){
	
	int n;
	while(scanf("%d",&n)!=EOF){
		int no;
		
		for(int i=0;i<n;i++){
			scanf("%d",&no);
			scanf("%s %s %d",&stu[no].name,&stu[no].sex,&stu[no].age);
		}
		int m;
		scanf("%d",&m);
		
		char ch[1000];
		
		while(m--){
			int choose;
			scanf("%s",&ch);
			sscanf(ch,"%d",&choose);
			if(stu[choose].age!= 0){
				printf("%s %s %s %d\n",ch,stu[choose].name,stu[choose].sex,stu[choose].age);
			}else{
				printf("No Answer!\n");
			}
			
		}
	}

	
	
	
	return 0;
}

4.查找

#include <cstdio>
#include <cstring>
#include <math.h>


int main(){
	
	int n;
	while(scanf("%d",&n)!=EOF){
		int a[1000];
		for(int i=0;i<n;i++){
			scanf("%d",&a[i]);
		}
		
		int m;
		scanf("%d",&m);
		
		int x;
		for(int i=0;i<m;i++){
			scanf("%d",&x);
			
			int j=0;
			
			for(j;j<n;j++){
				if(a[j]==x){
					printf("YES\n");
					break;
				}
			}
			if(j==n){
				printf("NO\n");
			}
		}
	}
	
	
	
	return 0;
}

5.学生查询

这一题我我是真没发现我哪错了,就是不通过。

#include <cstdio>
#include <cstring>
#include <math.h>
struct student{
	char name[200];
	char gender[12];
	int age;
}stu[30];


int main(){
	
	int n;
	scanf("%d",&n);
	
	while(n--){
		
		int num;
		scanf("%d",&num);
		
		int no;
		for(int i=0;i<num;i++){
			scanf("%d",&no);
			scanf("%s %s %d",&stu[no].name,&stu[no].gender,&stu[no].age);
		}
		
		int ch;
		scanf("%d",&ch);
		
		printf("%d %s %s %d",ch,stu[ch].name,stu[ch].gender,stu[ch].age);
		
		
		
	}
	
	
	
	return 0;
}


//#include <cstdio>
//struct student
//{
//	int id;
//	char name[100];
//	char sex[100];
//	int age;
//}stu[30];
//int main()
//{
//	int n,m,temp;
//	scanf("%d",&m);
//	for(int i=0;i<m;i++)
//	{
//		scanf("%d",&n);
//		for(int j=0;j<n;j++)
//			scanf("%d %s %s %d",&stu[j].id,stu[j].name,stu[j].sex,&stu[j].age);
//		scanf("%d",&temp);
//		for(int j=0;j<n;j++)
//		{
//			if(stu[j].id==temp)
//			{
//				printf("%d %s %s %d\n",stu[j].id,stu[j].name,stu[j].sex,stu[j].age);
//				break;
//			}
//		}
//	}
//	return 0;
//}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值