第四章 循环结构的程序设计
第一节 for语句
T1059 : 求平均年龄
时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。
【输入】
第一行有一个整数n(1≤n≤100)n(1≤n≤100)n(1≤n≤100),表示学生的人数。其后nnn行每行有111个整数,表示每个学生的年龄,取值为151515到252525。
【输出】
输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。
【输入样例】
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位。
【输入】
输入有两行,第一行包含一个整数nnn(nnn小于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(1≤n≤10000)个整数,求它们的和与均值。
【输入】
输入第一行是一个整数nnn,表示有nnn个整数。
第2−n+12-n+12−n+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<100)n(1≤n<100)n(1≤n<100),表示参加这次考试的人数.第二行是这nnn个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为000到100100100之间的整数。
【输出】
输出一个整数,即最高的成绩。
【输入样例】
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(1≤n≤1000),第二行为序列的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)(1≤n≤17)。现在要统计一下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
【题目描述】
计算非负整数mmm到nnn(包括mmm和nnn)之间的所有奇数的和,其中,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。
【输入】
两个数mmm和nnn,两个数以一个空格分开,其中0≤m≤n≤3000≤m≤n≤3000≤m≤n≤300。
【输出】
输出一行,包含一个整数,表示mmm到nnn(包括mmm和nnn)之间的所有奇数的和。
【输入样例】
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
【题目描述】
将正整数mmm和nnn之间(包括mmm和nnn)能被171717整除的数累加,其中0<m<n<10000<m<n<10000<m<n<1000。
【输入】
一行,包含两个整数mmm和nnn,其间,以一个空格间隔。
【输出】
输出一行,包行一个整数,表示累加的结果。
【输入样例】
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<k<100)k(1<k<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行为NNN和mmm,表示整数序列的长度(N≤100)(N≤100)(N≤100)和指定的数字;第222行为NNN个整数,整数之间以一个空格分开。输出为NNN个数中与mmm相同的数的个数。
【输入】
第111行为NNN和mmm,表示整数序列的长度(N≤100)(N≤100)(N≤100)和指定的数字, 中间用一个空格分开;
第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(−1000000≤a≤1000000,1≤n≤10000),求乘方ana^{n}an,即乘方结果。最终结果的绝对值不超过100000010000001000000。
【输入】
一行,包含两个整数aaa和nnn。−1000000≤a≤1000000,1≤n≤10000-1000000≤a≤1000000,1≤n≤10000−1000000≤a≤1000000,1≤n≤