江南信息学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 }

浙公网安备 33010602011771号