江南信息学2023第四周练习20230324题解

 比赛链接

1001 C语言实验题――三个整数
记得保留2位小数是%.2f

1 #include<bits/stdc++.h>
2 using namespace std;
3 int main()
4 {
5     int a,b,c;
6     cin>>a>>b>>c;
7     printf("%d %d %.2f",a+b+c,a*b*c,(a+b+c)*1.0/3);
8      return 0;
9 }

 


1002 晶晶赴约会
根据题目意思判断n是否属于1 3 5,是就输出NO 否则YES

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n;
 6     cin>>n;
 7     if(n==1||n==3||n==5)cout<<"NO"; //如果是1、3、5就不行 
 8     else cout<<"YES";
 9      return 0;
10 }

 


1003 求绝对值最大值
设maxx为0记录最大绝对值,设ans为maxx的非绝对值,判断输入的数绝对值是否比当前绝对值maxx要大,大的话就更新,比如-5是最大绝对值的时候maxx = 5,ans = -5,这样循环输入结束后就可以输出ans就是答案了

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main(){ //abs是绝对值的意思 
 4     int n,max_abs = 0,ans; //max_abs是最大绝对值,所以0是最小绝对值 
 5     cin>>n;
 6     for(int i=1;i<=n;i++)
 7     {
 8         int x,x_abs;cin>>x;
 9         if(x<0)x_abs = x*-1;
10         else x_abs = x; //x_abs记录x的绝对值 
11         if(x_abs>max_abs)
12         {
13             max_abs = x_abs; //更新当前最大绝对值
14             ans = x; //ans记录x本身的数值 
15         }
16     }
17     cout<<ans;
18     return 0;
19 }

 


1004 并列排名
输入n个数后排序,设i =1,从i开始往后遍历找到和m相同的数字时结束,输出i就是答案

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n,m;
 6     int a[101];
 7     cin>>n;
 8     for(int i=1;i<=n;i++)cin>>a[i];
 9     sort(a+1,a+1+n); //将数组a从1到n的数从小到大排序
10     cin>>m; //指定的分数
11     for(int i=1;i<=n;i++)
12         if(a[i]==m) //如果排序后的a数组第i个数是指定的分数,那么就输出并结束 
13         {
14             cout<<i;break; 
15         } 
16      return 0;
17 }

 


1005 修改序列元素
对于输入的x和y以及序列假定为a,循环让i从x到y,每一次让a[i]++,最后再次输出序列a即可

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n;
 6     int a[101];
 7     cin>>n;
 8     for(int i=1;i<=n;i++)cin>>a[i];
 9     int x,y;
10     cin>>x>>y;
11     for(int i=x;i<=y;i++) //将从x到y的所有数+1 
12         a[i]++;
13     for(int i=1;i<=n;i++) //输出,最后没有空格
14     {
15         cout<<a[i];
16         if(i!=n)cout<<" ";
17     } 
18      return 0;
19 }

 


1006 设备价格问题
判断n是在2-6年则直接输出120-n*10,如果是在7年之后即n>=7时,那么先让x = 70万,因为2-6年已经亏完50万了,循环n-7次,每次让x = x*0.75就可以让x实现逐年递减,当n-7次循环结束后输出x保留2位小数就是答案

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n;
 6     double sum = 120;
 7     cin>>n;
 8     if(n==1)printf("%.2f",sum);
 9     else if(n>=2 && n<=6)
10     {
11         sum = sum - (n-1)*10; //总共减少了(n-1)*10万元
12         printf("%.2f",sum); 
13     }
14     else //从第7年起 
15     {
16         sum = 70; 
17         n -= 6;
18         while(n--)sum*=0.75;
19         printf("%.2f",sum); 
20     }
21      return 0;
22 }

 


1007 城市人口问题
设year为0,增率1.2% -> 0.012,所以当x小于y时执行while循环,每次循环里执行x = x+x*0.012,year++,最后当循环结束后输出year即可

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int year = 0;
 6     double x,y;
 7     cin>>x>>y;
 8     while(x<y)
 9     {
10         x+= x*0.012; //每年增长x*0.012的人数 
11         year++; //年份++ 
12     }
13     cout<<year; 
14      return 0;
15 }

 

posted @ 2023-03-16 20:35  CRt0729  阅读(49)  评论(0)    收藏  举报