天下青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环布局(for循环语句 ...

打印 上一主题 下一主题

主题 691|帖子 691|积分 2073

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
实战训练1—最大差值
题目描述:
输入n个非负整数,找出这个n整数的最大值与最小值,并求最大值和最小值的差值。
输入格式:
共两行,第一举动整数的个数 n(1≤n≤1000)。第二举动n个整数的值(整数值在int范例表现范围之内),整数之间以一个空格分隔。
输出格式:
输出一行,n个整数中的最大值,最小值和差值,并用空格隔开。
输入输出样例:
输入样例1
输出样例1
5
3 7 1 2 9
9 1 8 
输入样例2
输出样例2
8
13 20 4 9 35 8 46 3
46 3 43
题目分析:
根据题意,求n个整数的最大值、最小值以差值,首先定义最大值变量和最小值变量来维护当前已经出现整数中的最大值和最小值,然后需要重复输入n次整数,到目前并且在输入每一个整数之后依次和当前的最大值与最小值比力,假如比最大值大,将最大值修改为当前输入的整数值,假如比最小值小,将最小值修改为当前输入的整数值,在n次输入比力之后,输出最大值、最小值和两者的差值,可以采用循环来实现,循环变量初始值为1,终值为n,循环变量更新为自增运算,循环体内输入整数值,并进行比力,具体程序代码如下:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4.     int n,minv= INT_MAX,maxv=INT_MIN;//定义整数个数变量n,n个整数的最小值minv并初始化为整数的最大值,n个整数的最大值maxv并初始化为整数最小值
  5.     cin>>n;//输入变量n
  6.     for(int i=0;i<n;i++){//重复n次整数,并比较
  7.         int tmp;//定义输入整数变量tmp
  8.         cin>>tmp;//输入整数的值
  9.         if(tmp<minv){ //tmp比最小值小,将tmp设置为minv
  10.             minv = tmp;
  11.         }else if(tmp>maxv){//tmp比最大值大,将tmp设置为maxv
  12.             maxv = tmp;
  13.         }
  14.     }  
  15.     cout<<maxv<<' '<<minv<<' '<<(maxv-minv)<<endl;//输出最大值、最小值和差值
  16.     return 0;
  17. }
复制代码
实战训练2—某国人口
题目描述:
某国家有x亿人口,假如按照每年 0.1% 的速度增长,n年后该国将会有多人?人数保留小数点后四位。
输入格式:
一行,包罗两个整数 x 和 n,分别是人口基数和年数,以单个空格分隔。
输出格式:
输出该国家n年后的人口数量,以亿为单元,保留到小数点后四位。
输入输出样例:
输入样例1
输出样例1
12 10
12.1205
输入样例2
输出样例2
13 5
13.0651
题目分析:
根据题意,首先需要输入当前这个国家的人口数x,以及年数n,两者均为int范例,1年后人数在人口基数上增加了0.1%,所以人数为x*1.001,2年后在此底子上再增加了0.1%,继续乘以1.001,依次下去,可以发现人口数量计算可以采用累乘的思想来解决,具体程序实现使用for循环来解决,循环变量初始值为1,终值为n,更新为自增运算,循环体中进行累乘,同时需要明确数据范例,人口数量起始值为整数,由于增长率为小数,所以在定义人口数时,采用double数据范例,具体程序代码如下:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4.         int x,n;//定义初始人口数变量x和年变量n
  5.         double sum;//定义人口总数变量sum
  6.         cin>>x>>n;//输入x和n
  7.         sum = x;//将sum修改为开始人口数x
  8.         for(int i=1; i<=n; i++) {//使用循环进行累乘
  9.                 sum = sum *1.001;//使用累乘计算人口数
  10.         }
  11.         printf("%0.4lf\n",sum);
  12.         return 0;
  13. }
复制代码
实战训练3—多边形内角和
题目描述:
在欧几里德几何中,n 边形的内角和是(n−2)×180°。已知此中(n−1) 个内角的度数,就能计算出剩下的一个未知内角的度数。请编写一个程序,来解决这个题目。
输入格式:
共两行。此中第 1 行只有一个整数 n,第 2 行有 (n-1)个正整数,这n-1个整数是每个已知内角的度数。相邻两个整数之间用单个空格隔开。数据包管给定多边形合法。
输出格式:
一个正整数为未知内角的度数。
输入输出样例:
输入样例1
输出样例1
3
50 50 
80
输入样例2
输出样例2
4
45 90 90 
135
题目分析:
依据题意,对于n边形的n个内角之和为(n−2)×180°,已知此中的n-1个角的度数,求剩余一个角的度数,可以将n-1个角的度数进行求和,利用累加的思想,然后用总度数减去n-1个度数总和,采用for循环实现,循环变量初始值为1,终值为n-1,循环变量更新为自增运算,循环体内输入角度数并进行累加,具体程序代码如下:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4.     int n,sum=0,subsum=0;//定义n边形变量n、总的内角和sum并将sum初始值设置为0 n-1角的和subsum并初始化为0
  5.     cin>>n;//输入n
  6.     sum = (n-2)*180;//n边形内角总和
  7.     for(int i=1;i<n;i++){//依次输入n-1个角的度数,并进行累加
  8.         int tmp; //定义角度数
  9.         cin>>tmp;//输入角度数
  10.         subsum += tmp;//累加角度数到和变量subsum
  11.     }
  12.     cout<<(sum-subsum)<<endl;//输出角的度数
  13.     return 0;
  14. }
复制代码
除此之外,也可以采用累减的思想,用内角总和依次减去n-1个度数,sum剩余的值就是末了一个角的度数,同理采用循环来实现,循环变量初始值为1,终值为n-1,更新为自增运算,循环体内用内角总和依次减去输入的内角度数,具体程序代码如下:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4.     int n,sum=0;//定义n边形变量n、总的内角和sum并将sum初始值设置为0
  5.     cin>>n;//输入n
  6.     sum = (n-2)*180;//n边形内角总和
  7.     for(int i=1;i<n;i++){//依次输入n-1个角的度数,并进行累减
  8.         int tmp; //定义角度数
  9.         cin>>tmp;//输入角度数
  10.         sum -= tmp;//依次累减每个角度
  11.     }
  12.     cout<<sum<<endl;//输出角的度数
  13.     return 0;
  14. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

星球的眼睛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表