信息学奥赛一本通(C++版)第一部分 C++语言 第四章 循环结构的程序设计

第四章 循环结构的程序设计

第一节 for语句

T1059 : 求平均年龄

时间限制: 1000 ms 内存限制: 65536 KB

【题目描述】

  班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。

【输入】

  第一行有一个整数n(1≤n≤100)n(1≤n≤100)n(1n100),表示学生的人数。其后nnn行每行有111个整数,表示每个学生的年龄,取值为151515252525

【输出】

  输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。

【输入样例】
2
18
17
【输出样例】
17.5
【答案&代码】
#include<cstdio>
//以上为头文件

int n,temp;
//以上为全局变量

int main(void){
   
   
	register int i,sum=0;
	//以上为寄存器变量
	scanf("%d",&n);
	for(i=1;i<=n;++i)
		scanf("%d",&temp),
		sum+=temp;
	printf("%.2f\n",(double)sum/n);
	return 0;
}

T1060 : 均值

时间限制: 1000 ms 内存限制: 65536 KB

【题目描述】

  给出一组样本数据,包含nnn个浮点数,计算其均值,精确到小数点后444位。

【输入】

  输入有两行,第一行包含一个整数nnnnnn小于100100100),代表样本容量;第二行包含nnn个绝对值不超过100010001000的浮点数,代表各个样本数据。

【输出】

  输出一行,包含一个浮点数,表示均值,精确到小数点后444位。

【输入样例】
2
1.0 3.0
【输出样例】
2.0000
【答案&代码】
#include<cstdio>
//以上为头文件

int n;
double temp;
//以上为全局变量

int main(void){
   
   
	register int i;
	register double sum=0;
	//以上为寄存器变量
	scanf("%d",&n);
	for(i=1;i<=n;++i)
		scanf("%lf",&temp),
		sum+=temp;
	printf("%.4f\n",sum/n);
	return 0;
}

T1061 : 求整数的和与均值

时间限制: 1000 ms 内存限制: 65536 KB

【题目描述】

  读入n(1≤n≤10000)n(1≤n≤10000)n(1n10000)个整数,求它们的和与均值。

【输入】

  输入第一行是一个整数nnn,表示有nnn个整数。

  第2−n+12-n+12n+1行每行包含111个整数。每个整数的绝对值均不超过100001000010000

【输出】

  输出一行,先输出和,再输出平均值(保留到小数点后555位),两个数间用单个空格分隔。

【输入样例】
4
344
222
343
222
【输出样例】
1131 282.75000
【答案&代码】
#include<cstdio>
//以上为头文件

int n,temp;
//以上为全局变量

int main(void){
   
   
	register int i,sum=0;
	//以上为寄存器变量
	scanf("%d",&n);
	for(i=1;i<=n;++i)
		scanf("%d",&temp),
		sum+=temp;
	printf("%d %.5f\n",sum,(double)sum/n);
	return 0;
}

T1062 : 最高的分数

时间限制: 1000 ms 内存限制: 65536 KB

【题目描述】

  孙老师讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决这个问题吗?

【输入】

  输入两行,第一行为整数n(1≤n&lt;100)n(1≤n&lt;100)n(1n<100),表示参加这次考试的人数.第二行是这nnn个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为000100100100之间的整数。

【输出】

  输出一个整数,即最高的成绩。

【输入样例】
5
85 78 90 99 60
【输出样例】
99
【答案&代码】
#include<cstdio>
//以上为头文件

int n,temp;
//以上为全局变量

int main(void){
   
   
	register int i,MAX=-1;
	//以上为寄存器变量
	scanf("%d",&n);
	for(i=1;i<=n;++i){
   
   
		scanf("%d",&temp);
		if(temp>MAX)
			MAX=temp;
	}
	printf("%d\n",MAX);
	return 0;
}

T1063 : 最大跨度值

时间限制: 1000 ms 内存限制: 65536 KB

【题目描述】

  给定一个长度为nnn的非负整数序列,请计算序列的最大跨度值(最大跨度值===最大值减去最小值)。

【输入】

  一共222行,第一行为序列的个数n(1≤n≤1000)n(1≤n≤1000)n(1n1000),第二行为序列的nnn个不超过100010001000的非负整数,整数之间以一个空格分隔。

【输出】

  输出一行,表示序列的最大跨度值。

【输入样例】
6
3 0 8 7 5 9
【输出样例】
9
【答案&代码】
#include<cstdio>
//以上为头文件

int n,temp;
//以上为全局变量

int main(void){
   
   
	register int i,MAX=-1,MIN=1001;
	//以上为寄存器变量
	scanf("%d",&n);
	for(i=1;i<=n;++i){
   
   
		scanf("%d",&temp);
		if(temp>MAX)
			MAX=temp;
		if(temp<MIN)
			MIN=temp;
	}
	printf("%d\n",MAX-MIN);
	return 0;
}

T1064 : 奥运奖牌计数

时间限制: 1000 ms 内存限制: 65536 KB

【题目描述】

  200820082008年北京奥运会,AAA国的运动员参与了nnn天的决赛项目(1≤n≤17)(1≤n≤17)(1n17)。现在要统计一下AAA国所获得的金、银、铜牌数目及总奖牌数。输入第111行是AAA国参与决赛项目的天数nnn,其后nnn行,每一行是该国某一天获得的金、银、铜牌数目。输出444个整数,为AAA国所获得的金、银、铜牌总数及总奖牌数。

【输入】

  输入n+1n+1n+1行,第111行是AAA国参与决赛项目的天数nnn,其后nnn行,每一行是该国某一天获得的金、银、铜牌数目,以一个空格分开。

【输出】

  输出111行,包括444个整数,为AAA国所获得的金、银、铜牌总数及总奖牌数,以一个空格分开。

【输入样例】
3
1 0 3
3 1 0
0 3 0
【输出样例】
4 4 3 11
【答案&代码】
#include<cstdio>
//以上为头文件

int n,sum[4],temp[4];
//以上为全局变量

int main(void){
   
   
	register int i,j;
	//以上为寄存器变量
	scanf("%d",&n);
	for(i=1;i<=n;++i)
		for(j=1;j<=3;++j)
			scanf("%d",&temp[j]),
			sum[j]+=temp[j];
	for(i=1;i<=3;++i)
		printf("%d ",sum[i]);
	printf("%d\n",sum[1]+sum[2]+sum[3]);
	return 0;
}

T1065 : 奇数求和

时间限制: 1000 ms 内存限制: 65536 KB

【题目描述】

  计算非负整数mmmnnn(包括mmmnnn)之间的所有奇数的和,其中,mmm不大于nnn,且nnn不大于300300300。例如m=3,n=12m=3,n=12m=3,n=12,其和则为:3+5+7+9+11=353+5+7+9+11=353+5+7+9+11=35

【输入】

  两个数mmmnnn,两个数以一个空格分开,其中0≤m≤n≤3000≤m≤n≤3000mn300

【输出】

  输出一行,包含一个整数,表示mmmnnn(包括mmmnnn)之间的所有奇数的和。

【输入样例】
7 15
【输出样例】
55
【答案&代码】
#include<cstdio>
//以上为头文件

int m,n;
//以上为全局变量

int main(void){
   
   
	register int sum=0;
	//以上为寄存器变量
	scanf("%d%d",&m,&n);
	for(;m<=n;++m)
		if(m&1)
			sum+=m;
	printf("%d\n",sum);
	return 0;
}

T1066 : 满足条件的数累加

时间限制: 1000 ms 内存限制: 65536 KB

【题目描述】

  将正整数mmmnnn之间(包括mmmnnn)能被171717整除的数累加,其中0&lt;m&lt;n&lt;10000&lt;m&lt;n&lt;10000<m<n<1000

【输入】

  一行,包含两个整数mmmnnn,其间,以一个空格间隔。

【输出】

  输出一行,包行一个整数,表示累加的结果。

【输入样例】
50 85
【输出样例】
204
【答案&代码】
#include<cstdio>
//以上为头文件

int m,n;
//以上为全局变量

int main(void){
   
   
	register int sum=0;
	//以上为寄存器变量
	scanf("%d%d",&m,&n);
	for(;m<=n;++m)
		if(m%17==0)
			sum+=m;
	printf("%d\n",sum);
	return 0;
}

T1067 : 整数的个数

时间限制: 1000 ms 内存限制: 65536 KB

【题目描述】

  给定k(1&lt;k&lt;100)k(1&lt;k&lt;100)k(1<k<100)个正整数,其中每个数都是大于等于111,小于等于101010的数。写程序计算给定的kkk个正整数中,1,5,101,5,101,5,10出现的次数。

【输入】

  输入有两行:第一行包含一个正整数kkk,第二行包含kkk个正整数,每两个正整数用一个空格分开。

【输出】

  输出有三行,第一行为111出现的次数,,第二行为555出现的次数,第三行为101010出现的次数。

【输入样例】
5
1 5 8 10 5
【输出样例】
1
2
1
【答案&代码】
#include<stdio.h>
int main(void){
   
   
	int k;
	scanf("%d",&k);
	int sum[3]={
   
   0};
	for(int i=0;i<k;i++){
   
   
		int temp;
		scanf("%d",&temp);
		if(temp==1)
			sum[0]+=1;
		else if(temp==5)
			sum[1]+=1;
		else if(temp==10)
			sum[2]+=1;
	}
	printf("%d\n%d\n%d\n",sum[0],sum[1],sum[2]);
	return 0;
}

T1068 : 与指定数字相同的数的个数

时间限制: 1000 ms 内存限制: 65536 KB

【题目描述】

  输出一个整数序列中与指定数字相同的数的个数。输入包含222行:第111行为NNNmmm,表示整数序列的长度(N≤100)(N≤100)(N100)和指定的数字;第222行为NNN个整数,整数之间以一个空格分开。输出为NNN个数中与mmm相同的数的个数。

【输入】

  第111行为NNNmmm,表示整数序列的长度(N≤100)(N≤100)(N100)和指定的数字, 中间用一个空格分开;

  第222行为NNN个整数,整数之间以一个空格分开。

【输出】

  输出为NNN个数中与mmm相同的数的个数。

【输入样例】
3 2
2 3 2
【输出样例】
2
【答案&代码】
#include<cstdio>
int main(void){
   
   
	int n,m;
	scanf("%d%d",&n,&m);
	int sum=0;
	for(int i=0;i<n;i++){
   
   
		int temp;
		scanf("%d",&temp);
		if(temp==m)
			sum+=1;
	}
	printf("%d\n",sum);
	return 0;
}

T1069 : 乘方计算

时间限制: 1000 ms 内存限制: 65536 KB

【题目描述】

  给出一个整数aaa和一个正整数n(−1000000≤a≤1000000,1≤n≤10000)n(-1000000≤a≤1000000,1≤n≤10000)n(1000000a1000000,1n10000),求乘方ana^{n}an,即乘方结果。最终结果的绝对值不超过100000010000001000000

【输入】

  一行,包含两个整数aaannn−1000000≤a≤1000000,1≤n≤10000-1000000≤a≤1000000,1≤n≤100001000000a1000000,1n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值