算法笔记刷题1

1.比较3个数的大小

题目描述

有3个整数a, b, c,由键盘输入,输出其中最大的数。

输入

以空格分割的三个整数。

输出

三个数中的最大值,末尾换行。

样例输入

1 3 2

样例输出

3

程序如下:

#include<cstdio>
int main(){
	int a,b,c,t;
	scanf("%d %d %d",&a,&b,&c);
	if(a>b){
		t=a;
		a=b;
		b=t;
	}
	if(a>c){
		t=a;
		a=c;
		c=t;
	}
	if(b>c){
		t=b;
		b=c;
		c=t;
	}
	printf("%d\n",c);
	return 0; 
}

使用变量t,来对a,b,c进行替换,每次都将第一个值换位最小值,即a始终未最小值,b为第二,c为最大值,则可同时输出最大值 最小值

 

2.奖金计算

某企业发放的奖金根据利润提成。利润I低于或等于100000时,奖金可提10%;利润高于100000元,低于200000元(100000<I<=200000)时,低于100000元的部分仍按10%提成,高于100000元的部分提成比例为7.5%;200000<I<=400000时,低于200000元的部分仍按上述方法提成(下同),高于200000元的部分按5%提成;400000<I<=600000元时,高于400000元的部分按3%提成;600000<I<=1000000时,高于600000元的部分按1.5%提成;I>1000000元时,超过1000000元的部分按1%提成。

从键盘输出当月利润I,求应发奖金数,奖金精确到分。

要求用if语句实现。

#include<cstdio>
int main(){
	double a;
	scanf("%lf",&a);
	if(a<=100000){
		printf("%.2lf",0.1*a);
	}
	if(100000<a&&a<=200000){
		printf("%.2lf",10000+(a-100000)*0.075);
	}
	if(200000<a&&a<=400000){
		printf("%.2lf",17500+(a-200000)*0.05);
	}
	if(400000<a&&a<=600000){
		printf("%.2lf",18500+(a-400000)*0.03);
	}
	if(600000<a&&a<=1000000){
		printf("%.2lf",19100+(a-600000)*0.015);
	}
	if(a>1000000){
		printf("%.2lf",19700+(a-1000000)*0.01);
	}
	return 0;
} 

要用这种形式,600000<a&&a<=1000000,而不能直接套用600000<a<=1000000,程序出错,无法完成if语句的判断

3.斐波拉契数列

#include<cstdio>
int main(){
	int n;
	int a=1;
	int b=1;
	int c;
	scanf("%d",&n);
	if(n>2){
		for(int i=2;i<n;i++){
			c=a+b;
			a=b;
			b=c;	
		}
		printf("%d",c);
	} 
	if(n<=2)
	printf("%d",a);
	return 0;
}

还是不断的更新变量,  就是不断的将a换做b,b换做c 使得程序向前进行

4. 字符串求最大值

题目描述

从键盘上输入3个字符串,求出其中最大者。

输入

输入3行,每行均为一个字符串。

输出

一行,输入三个字符串中最大者。

样例输入

England
China
America

样例输出

England

代码

#include<cstdio>
#include<cstring>
int main(){
	char a[20];
	char b[20];
	char c[20];
	char d[20];
	gets(a);
	gets(b);
	gets(c);
	if(strcmp(a,b)>0){
	    strcpy(d,a);
	}
	else{
	    strcpy(d,b);
	}
	if(strcmp(c,d)>0){
		strcpy(d,c);
	}
	puts(d);
	return 0;
}

与比较数的大小,输出最大值 最小值的原理相同

5.

题目描述

输入3个字符串,按从小到大的顺序输出。要求使用指针的方法进行处理。

输入

3行,每行一个用字符串。保证每个字符串的长度不超过20。

输出

按从小到大的顺序输出这3个字符串,每个字符串一行。
请注意行尾输出换行。

样例输入

China
CLOCK
deal

样例输出

CLOCK
China
deal

代码

#include<cstdio>
#include<cstring>
using namespace std;
int main(){
	char a[20],b[20],c[20];
	gets(a);
	gets(b);
	gets(c);
	char *p=a;
	char *q=b;
	char *n=c;
	char m[20];
	char *temp =m;
	if(strcmp(p,q)>0){
		temp=p;
		p=q;
		q=temp;	
	}
	if(strcmp(p,n)>0){
		temp=p;
		p=n;
		n=temp;
	}
	if(strcmp(q,n)>0){
		temp=q;
		q=n;
		n=temp;
	}
	puts(p);
	puts(q);
	puts(n);
	return 0;
}

代码中,使用gets输入字符串,puts输出字符串,strcmp对比的是两个字符串的大小,

int strcmp(const char *str1, const char *str2),输入的是地址信息,在每个if语句下,交换数组a,b时,temp指针最好也需要指向一个char数组,同时不能直接a=b,这样是错误的,如果不想通过指针的方式,也可以这样定义函数:

void swap(char *p1, char *p2) {
	char p[100];
	strcpy(p, p1);
	strcpy(p1, p2);
	strcpy(p2, p);//把数组的地址传入函数,在函数中对这个地址指向的元素进行改变,原先数据就会改变
}

通过strcpy函数,将a的数据传给p,以此来实现数组的交换。

 

6.

题目描述

输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求用3个函数实现,分别为输入10个数、进行处理、输出10个数。要求使用指针的方法进行处理。

输入

用空格隔开的10个整数。

输出

输出进行题目描述操作之后的10个整数,每个整数之后输出一个空格。
请注意行尾输出换行。

样例输入

1 5 2 4 9 0 3 8 7 6

样例输出

0 5 2 4 6 1 3 8 7 9

代码如下:

#include<cstdio>
void shuru(int *p){
	for(int i=0;i<10;i++){
		 scanf("%d",p++);  #此处一定要有p++,否则每次只是更新p中的第一个值,做不到输入10个数
	}
	
}
void daxiao(int *p){
	int i;
	int *q=p;
	int *max=p,*min=p;
	for(;q<p+10;q++){
		if(*q>*max)
		max=q;
		if(*q<*min)
		min=q;
	}
	int temp =*p;
	*p=*min;
	*min=temp;
	
	int m=*(p+9);   #注意是(p+9),取值运算符大于+的优先级,会出错
	*(p+9)=*max;
	*max=m;
}
int main(){
	int a[10];
	shuru(a);
	daxiao(a);
	for(int i=0;i<10;i++)
	printf("%d ",a[i]);
	return 0;
	
}

对于得出数字中的最大和最小值,可以通过以下的代码实现:

#include<cstdio>
int main(){
	int a[8]={2,3,5,7,9,1,4,6};
	int max=a[0];
	int min=a[0];
	for(int i=0;i<8;i++){
		if(a[i]>max) max=a[i];
		if(a[i]<min) min=a[i];
	}
	printf("%d %d",max,min);
	return 0;
}

思想是,将最大值和最小值均赋值为第一个值,然后依次与这个最大值、最小值比较,每次都更新这个最大值与最小值,即可得到整个数组的最大最小值。

7.

题目描述

编写两个函数input和print,分别用来输入5个学生的数据记录和打印这5个学生的记录。对于每一个学生,其记录包含了学号、名字、3门课程的成绩共5项。用主函数分别调用input和print函数进行输入和输出。
要求使用结构体数组实现,结构体中包括了每个学生的5项记录。

输入

共有5行,每行包含了一个学生的学号(整数)、名字(长度不超过19的无空格字符串)和3门课程的成绩(0至100之间的整数),用空格隔开。

输出

与输入格式相同,每行输出一个学生的所有记录。
请注意行尾输出换行。

样例输入

101 AAA 80 81 82
102 BBB 83 84 85
103 CCC 86 87 88
104 DDD 89 90 91
105 EEE 92 93 94

样例输出

101 AAA 80 81 82
102 BBB 83 84 85
103 CCC 86 87 88
104 DDD 89 90 91
105 EEE 92 93 94

代码如下:

#include<cstdio>
struct student{
	int number;
	char name[19];
	int score1;
	int score2;
	int score3; 
};
void input(student *a){
	scanf("%d %s %d %d %d",&a->number,&a->name,&a->score1,&a->score2,&a->score3);
}
void print(student *a){
	printf("%d %s %d %d %d\n",a->number,a->name,a->score1,a->score2,a->score3);
}
int main(){
	student a[5];
	student *p =a;
	student *q =a;
	student *m =a;
	for(;p<q+5;p++){
		input(p);
	}
	for(;q<m+5;q++){
		print(q);
	}
	return 0;
	
}

我的想法是定义一个函数。然后执行5次,所以采用结构体指针,来实现5次循环,如果将5次循环都放在函数中,则可以这样写:

void input (student a[5]){
    for(int i=0;i<5;i++){
        scanf("%d %s %d %d %d",&a[i].number ,&a[i].name ,&a[i].score1 ,&a[i].score2 ,&a[i].score3 );
    } 
} 

8.

题目描述

有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩。读入这10个学生的数据,要求输出3门课程的总平均成绩,以及个人平均分最高的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。

输入

共有10行,每行包含了一个学生的学号(整数)、名字(长度不超过19的无空格字符串)和3门课程的成绩(0至100之间的整数),用空格隔开。

输出

第一行包含了3个实数,分别表示3门课程的总平均成绩,保留2位小数,每个数之后输出一个空格。
第二行输出个人平均分最高的学生的数据,与输入数据格式相同。如果有多位个人平均分最高的学生,输出按照输入顺序第一个最高分的学生数据。
请注意行尾输出换行。

样例输入

101 AAA 80 81 82
102 BBB 83 84 85
103 CCC 86 87 88
104 DDD 89 90 91
105 EEE 92 93 94
106 FFF 80 90 100
107 GGG 85 90 95
108 HHH 80 85 90
109 III 90 91 92
110 JJJ 91 88 87

样例输出

85.60 87.90 90.40 
105 EEE 92 93 94

代码如下:

#include<cstdio>
struct student{
	int number;
	char name[20];
	int a,b,c;
}info[10];
void input(student info[10]){
	for(int i=0;i<10;i++)
    scanf("%d %s %d %d %d",&info[i].number,info[i].name,&info[i].a,&info[i].b,&info[i].c);
}
void mean(){
	double sum1=0;
	double sum2=0;
	double sum3=0;
	for(int i=0;i<10;i++){
		sum1 +=info[i].a;
		sum2 +=info[i].b;
		sum3 +=info[i].c;
	}
	printf("%.2lf %.2lf %.2lf\n",sum1/10.0,sum2/10.0,sum3/10.0);
}
void mean1(){
	double a[10];
	for(int i=0;i<10;i++){
		a[i]=(info[i].a+info[i].b+info[i].c)/3.0;
	}
	double max=a[0];
	int index =0;
	for(int i=0;i<10;i++){
		if(a[i]>max){
			max=a[i];
			index =i;
		}
	}
	printf("%d %s %d %d %d",info[index].number,info[index].name,info[index].a,info[index].b,info[index].c);
}
int main(){
	input(info);
	mean();
	mean1();
	return 0;
	
}

这道题中包含求数组中的最大值,及其下标,用一下代码实现:

for(int i=0;i<10;i++){
		if(a[i]>max){
			max=a[i];
			index =i;
		}

令max为数组的第一个值,往后依次进行比较,若大于max,就将max更新为当前值,并记录下此时的下标,待循环结束,即为数组的最大值及其下标。

9.问题 A: 剩下的树

题目描述

有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,...,L共L+1个位置上有L+1棵树。
    现在要移走一些树,移走的树的区间用一对数字表示,如 100 200表示移走从100到200之间(包括端点)所有的树。
    可能有M(1<=M<=100)个区间,区间之间可能有重叠。现在要求移走所有区间的树之后剩下的树的个数。

输入

两个整数L(1<=L<=10000)和M(1<=M<=100)。
    接下来有M组整数,每组有一对数字。

输出

 可能有多组输入数据,对于每组输入数据,输出一个数,表示移走所有区间的树之后剩下的树的个数。

样例输入

4 2
1 2
0 2
11 2
1 5
4 7
0 0

样例输出

2
5

分析:

在移走树的时候,区间可能会有交叉,所以不能单纯的通过计算最大值,最小值,求出移走树的区间,相减得到剩余的树,这样是不对的。

因此正确的做法是,通过数组的形式,首先将数组全部置为0,然后将输入区间的数组元素置为1,最后统计数组中0的个数,即可得到剩余数的数量。

代码如下:

#include<cstdio>
int main(){
	int n,m;
	int count[10000];
	int number[10000];
	int o=0;
	while(scanf("%d%d",&n,&m) !=EOF){
		if((n ==0)&&(m ==0)) break;
		for(int i=0;i<n+1;i++) count[i]=0;
		int start,end;
		int num =0;
		for(int i=0;i<m;i++){
			scanf("%d%d",&start,&end);
			for(int j=start;j<end+1;j++){
				count[j]=1;
			}
		}
		for(int k=0;k<n+1;k++){
			if(count[k]==0) {
				num++;
			}
		}
		
		number[o]=num;
		o++;
		
		
	}
	for(int j=0;j<o;j++){
		printf("%d\n",number[j]);
	}
	return 0;
}

心得,熟练的使用数组。

 

10 问题 B: A+B

题目描述

给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
现在请计算A+B的结果,并以正常形式输出。

输入

输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。

输出

请计算A+B的结果,并以正常形式输出,每组数据占一行。

样例输入

-234,567,890 123,456,789
1,234 2,345,678

样例输出

-111111101
2346912

分析 :

此题中,输入既有数字,也有逗号,负号 符号,所以在输入的时候,通过字符数组存储数据,在将字符串数据转换为int数据时,通过将数据与‘0’,‘9’进行比较,去掉其中的逗号,符号。注意,在将一系列的数字转换为数时,c=c*10+a[i]-'0',每次都需要减去‘0’,才能从char数组中,得到现在的数字,即可以这样的方式把字符型的0转化为整型的0。同理,可以把1到9的字符转换成整型的1到9。

代码如下:

#include<cstdio>
#include<cstring>
const int max =20;
char a[max];
char b[max];
int main(){
	int long1,long2;
	while(scanf("%s %s",&a,&b) !=EOF){
		long1=strlen(a);
		long2=strlen(b);
		int c=0;
		int d=0;
		for(int i=0;i<long1;i++){
			if((a[i]>='0') &&(a[i]<='9')){
				c=c*10+a[i]-'0';
			}
		}
		if(a[0] == '-'){
			c=-c;
		}
		for(int i=0;i<long2;i++){
			if((b[i]>='0') &&(b[i]<='9')){
				d=d*10+b[i]-'0';
			}
		}
		if(b[0] == '-'){
			d=-d;
		}
		printf("%d\n",c+d);
	}
	return 0;
}

 

11 问题 C: 特殊乘法

题目描述

写个算法,对2个小于1000000000的输入,求结果。特殊乘法举例:123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5

输入

 两个小于1000000000的数

输出

 输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。

样例输入

24 65
42 66666
3 67

样例输出

66
180
39

分析:

因为是要实现数字的相乘求和,所以最好使用数组存储数据,并且要使用char数组存储数据,将数字通过字符串的形式传入到数组中,若使用int数组,则无法得到数字的个位十位。在相乘时,同样需要(a[i]-'0')*(b[j]-'0'),将字符型的数据转换为int型。

代码:

#include<cstdio>
#include<cstring>
int main(){
	char a[10],b[10];
	while(scanf("%s %s",&a,&b) !=EOF){
		int len1=strlen(a);
		int len2=strlen(b);
		int sum=0;
		for(int i=0;i<len1;i++){
			for(int j=0;j<len2;j++){
				sum =sum+(a[i]-'0')*(b[j]-'0');
			}
		}
		printf("%d\n",sum);
	
	}
	

}

 

12.问题 F: A+B和C (15)

题目描述

给定区间[-231, 231]内的3个整数A、B和C,请判断A+B是否大于C。

输入

输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。

输出

对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。

样例输入

4
1 2 3
2 3 4
2147483647 0 2147483646
0 -2147483648 -2147483647

样例输出

Case #1: false
Case #2: true
Case #3: true
Case #4: false

代码:

#include<cstdio>

int main(){
	int n;
	scanf("%d",&n);
	long long d[n];
	for(int i=0;i<n;i++){
		int a,b,c;
		scanf("%d%d%d",&a,&b,&c);
		if(a+b>c) d[i] =1;
		else d[i] =0;
		
	}
	for(int i=0;i<n;i++){
		if(d[i]) printf("Case #%d: true\n",i+1);  //不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!
		else printf("Case #%d: false\n",i+1);
	}
	return 0;
}

分析:数组不能先定义再赋值,例如

char a[10];
a[10]="hello"
a="hello"

都是不行的,也很容易理解,a[10]只是数组其中的一个值。

 

13. 问题 G: 数字分类 (20)

题目描述

给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:

  • A1 = 能被5整除的数字中所有偶数的和;
  • A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
  • A3 = 被5除后余2的数字的个数;
  • A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
  • A5 = 被5除后余4的数字中最大数字。

输入

每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。

输出

对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。

若其中某一类数字不存在,则在相应位置输出“N”。

样例输入

13 1 2 3 4 5 6 7 8 9 10 20 16 18
8 1 2 4 5 6 7 9 16

样例输出

30 11 2 9.7 9
N 11 2 N 9

分析:

题目中存在着的最大的障碍是,对于计算n1-n2+n3-n4的处理,代码如下:

#include<cstdio>
int main(){
	int n;
	while(scanf("%d",&n) !=EOF){
		int a[1000];
		for(int i=0;i<n;i++){
			scanf("%d",&a[i]);
		}
		int sum=0;
		int sum2=0;
		double sum3=0.;
		int count=0;
		int count1=0;
		int count2=0;
		int max=0;
		for(int i=0;i<n;i++){
			int temp=a[i]%5;
			switch(temp){
				case 0 :
					if(a[i]%2 ==0){
						sum +=a[i];
					}
					break;
				case 1:
					count++;
					if(count %2 ==1) sum2 +=a[i];
					else sum2 +=(-a[i]);
					break;
				case 2:
					count1++;
					break;
				case 3:
					count2++;
					sum3+=a[i];
					break;
				case 4:
					if(a[i]>max){
						max=a[i];
					}
					break;
			}
		}
		if(sum !=0) printf("%d ",sum);
		else printf("N ");
		if(sum2 !=0) printf("%d ",sum2);
		else printf("N ");
		if(count1 !=0) printf("%d ",count1);
		else printf("N ");
		if(count2 !=0) printf("%.1f ",sum3/count2);
		else printf("N ");
		if(max !=0) printf("%d\n",max);
		else printf("N\n");
	}
}

因为存在5种情况,最好的解决方式是使用switch的方法,同时-+的判断通过count %2 ==1 判定,所以要灵活使用数组。

 

14 问题 I: 锤子剪刀布 (20)

题目描述

大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:

现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。

 

输入

输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。

输出

输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。

样例输入

10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J

样例输出

5 3 2
2 3 5
B B

代码如下:

#include <iostream>
using namespace std;
 
int max(int a,int b,int c)//构造函数 默认abc输入顺序按字母序从小到大输入
{
    if (a>b)
    {
        if (a>=c) return 1;
        if (a<c) return 3;
    }
    if (a<b)
    {
        if (b>=c) return 2;
        if (b<c) return 3;
    }
    if (a==b)
    {
        if (a>=c) return 1;
        if (a<c) return 3;
    }
}
 
int main() {
	int n;
	cin>>n;
	int awin=0,ping=0,alose=0;
	int aJ=0,aC=0,aB=0;
	int bJ=0,bC=0,bB=0;
	char a,b;
	for(int i=0;i<n;i++)
	{
	    cin>>a>>b;
	    if (a=='J')
	    {
	        if (b=='J') ping++;
	        if (b=='C') {alose++;bC++;}
	        if (b=='B') {awin++;aJ++;}
	    }
	    if (a=='C')
	    {
	        if (b=='J') {awin++;aC++;}
	        if (b=='C') ping++;
	        if (b=='B') {alose++;bB++;}
	    }
	    if (a=='B')
	    {
	        if (b=='J') {alose++;bJ++;}
	        if (b=='C') {awin++;aB++;}
	        if (b=='B') ping++;
	    }
	}
	cout<<awin<<" "<<ping<<" "<<alose<<endl;
	cout<<alose<<" "<<ping<<" "<<awin<<endl;
	if (max(aB,aC,aJ)==1) cout<<"B"<<" ";
	if (max(aB,aC,aJ)==2) cout<<"C"<<" ";
	if (max(aB,aC,aJ)==3) cout<<"J"<<" ";
	if (max(bB,bC,bJ)==1) cout<<"B";
	if (max(bB,bC,bJ)==2) cout<<"C";
	if (max(bB,bC,bJ)==3) cout<<"J";
	
	return 0;
}

 

15.问题 C: 查找学生信息

题目描述

输入N个学生的信息,然后进行查询。

输入

输入的第一行为N,即学生的个数(N<=1000)

接下来的N行包括N个学生的信息,信息格式如下:

01 李江 男 21

02 刘唐 男 23

03 张军 男 19

04 王娜 女 19

然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:

02

03

01

04

输出

输出M行,每行包括一个对应于查询的学生的信息。

如果没有对应的学生信息,则输出“No Answer!”

样例输入

5
001 张三 男 19
002 李四 男 20
003 王五 男 18
004 赵六 女 17
005 刘七 女 21
7
003
002
005
004
003
001
006

样例输出

003 王五 男 18
002 李四 男 20
005 刘七 女 21
004 赵六 女 17
003 王五 男 18
001 张三 男 19
No Answer!

分析:

每行数据均由2种不同类型的信息组成,其中 输入的id信息要以001 002的形式输出,可采取的是通过char数组,或者输出的时候使用%03d的格式输出。

代码:

#include<cstdio>
#include<cstring>         //此处题目未表示要反复读取N,但只有反复读取,才能让通过,感觉题目写的不清楚 
struct studInfo{
    char id[10];
    char name[100];          //name数组要大些,不然不通过 
    char male[20];           //注意存储汉字 
    int age;
}stu[1005];
int main(){
    int N,i,M;
    char inStr[10];
    while(scanf("%d",&N)!=EOF){
        for(i=0;i<N;i++)
            scanf("%s %s %s %d",stu[i].id,stu[i].name,stu[i].male,&stu[i].age);
        scanf("%d",&M);
        while(M--){
            scanf("%s",inStr);
            for(i=0;i<N;i++){
                if(strcmp(inStr,stu[i].id)==0){
                    printf("%s %s %s %d\n",stu[i].id,stu[i].name,stu[i].male,stu[i].age);
                    break;
                }
                else if(strcmp(inStr,stu[i].id)!=0&&i==N-1)printf("No Answer!\n");
            }
        }
    }
    return 0;
}


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值