当前位置:   article > 正文

ZISUOJ 第一阶段作业列表(Problem a-z)

ZISUOJ 第一阶段作业列表(Problem a-z)

说明:

        临近期末考,我重新用C语言(有些必要的也用C++作为第二种方法)写了一遍之前第一阶段作业的题目,直接放代码了,有题目思路方面的问题可以私信或私聊我。我就不解释思路了,因为题目数量太多啦。这部分也都是些基础题,不想挂科的友友这些题都必须会写。Problem 0-9和最后几个题马上会更新。

题目列表:

问题 a: 求x的n次方

参考题解

  1. #include <stdio.h>
  2. #include <math.h>
  3. int main(){
  4. //问题 a: 求x的n次方
  5. int x,n;scanf("%d%d",&x,&n);
  6. int ans = pow(x,n);
  7. printf("%d",ans);
  8. return 0;
  9. }

问题 b: A-B问题

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 b: A-B问题
  4. int a,b;
  5. while(~scanf("%d %d",&a,&b)){
  6. if(a==0&&b==0) break;
  7. printf("%d\n",a-b);
  8. }
  9. return 0;
  10. }

问题 c: 去噪平均数

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 c: 去噪平均数
  4. double ans = 0;
  5. int num,cnt = 0;
  6. while(~scanf("%d",&num)){
  7. if(num==-1) break;
  8. if(num<=int(1e4)){
  9. ans+=num;
  10. cnt++;
  11. }
  12. }
  13. if(cnt) printf("%.3lf",ans/cnt);
  14. else printf("no data");
  15. return 0;
  16. }

问题 d: 求Pi的值

参考题解:

  1. #include <stdio.h>
  2. #include <math.h>
  3. int main(){
  4. //问题 d: 求Pi的值
  5. double pi4 = 0;
  6. int n;scanf("%d",&n);
  7. for(int i = 1;i<=n;i++){
  8. pi4+= 1.0*pow(-1,i-1)/(2*i-1);
  9. }
  10. printf("%.10lf",pi4*4);
  11. return 0;
  12. }

问题 e: 计算某公式

参考题解:

  1. #include <stdio.h>
  2. #include <math.h>
  3. int main(){
  4. //问题 e: 计算某公式
  5. int n;scanf("%d",&n);
  6. double ans = 0;
  7. for(int i = 1;i<=n;i++){
  8. ans += 1.0*pow(-1,i-1)/(2*i-1);
  9. }
  10. printf("%.3lf",ans);
  11. return 0;
  12. }

问题 f: C语言程序设计教程(第三版)课后习题6.3

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 f: C语言程序设计教程(第三版)课后习题6.3
  4. int n;scanf("%d",&n);
  5. int ans = 0;
  6. for(int i = 1;i<=n;i++){
  7. int temp = 0;
  8. for(int j = 1;j<=i;j++){
  9. temp = temp*10+2;
  10. }
  11. ans += temp;
  12. }
  13. printf("%d",ans);
  14. return 0;
  15. }

问题 g: 判断直角三角形

参考题解:

  1. #include <stdio.h>
  2. #include <math.h>
  3. int main(){
  4. //问题 g: 判断直角三角形
  5. int a,b,c;
  6. while(~scanf("%d %d %d",&a,&b,&c)){
  7. if(pow(a,2)+pow(b,2)==pow(c,2)||pow(a,2)+pow(c,2)==pow(b,2)||pow(b,2)+pow(c,2)==pow(a,2)) printf("Yes\n");
  8. else printf("No\n");
  9. }
  10. return 0;
  11. }

问题 h: n!求和

参考题解:

  1. #include <stdio.h>
  2. int factorial(int num){
  3. int res = 1;
  4. for(int i = 1;i<=num;i++) res*=i;
  5. return res;
  6. }
  7. int main(){
  8. //问题 h: n!求和
  9. int n;scanf("%d",&n);
  10. int ans = 0;
  11. for(int i = 1;i<=n;i++) ans+=factorial(i);
  12. printf("%d",ans);
  13. return 0;
  14. }

问题 i: 画#字符正方形

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 i: 画#字符正方形
  4. int n;scanf("%d",&n);
  5. for(int i = 1;i<=n;i++){
  6. for(int j = 1;j<=n;j++) printf("#");
  7. printf("\n");
  8. }
  9. return 0;
  10. }

问题 j: 画#字符长方形

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 j: 画#字符长方形
  4. int n,m;scanf("%d %d",&n,&m);
  5. for(int i = 1;i<=n;i++){
  6. for(int j = 1;j<=m;j++) printf("#");
  7. printf("\n");
  8. }
  9. return 0;
  10. }

问题 k: 画字符平行四边形

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 k: 画字符平行四边形
  4. int a,b;char c;scanf("%d %d %c",&a,&b,&c);
  5. for(int i = 1;i<=b;i++){
  6. for(int j = 1;j<=i-1;j++) printf(" ");
  7. for(int j = 1;j<=a;j++) printf("%c",c);
  8. printf("\n");
  9. }
  10. return 0;
  11. }

问题 l: 画字符三角形

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 l: 画字符三角形
  4. char c;scanf("%c",&c);
  5. for(int i = 1;i<=7;i++){
  6. for(int j = 1;j<=7-i;j++) printf(" ");
  7. for(int j = 1;j<=2*i-1;j++) printf("%c",c);
  8. printf("\n");
  9. }
  10. return 0;
  11. }

问题 m: 九九乘法表

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 m: 九九乘法表
  4. for(int i = 1;i<=9;i++){
  5. for(int j = 1;j<=i;j++){
  6. if(j == 1) printf("%2d *%2d = %2d",j,i,j*i);
  7. else printf(" %2d *%2d = %2d",j,i,j*i);
  8. }
  9. printf("\n");
  10. }
  11. return 0;
  12. }

问题 n: 水仙花数

参考题解:

  1. #include <stdio.h>
  2. #include <math.h>
  3. int main(){
  4. //问题 n: 水仙花数
  5. for(int i = 100;i<1000;i++){
  6. if(pow(i/100,3)+pow(i/10%10,3)+pow(i%10,3)==i) printf("%d\n",i);
  7. }
  8. return 0;
  9. }

 问题 o: 水题欢乐多

参考题解:

  1. #include <stdio.h>
  2. #include <string.h>
  3. int shoes[105];
  4. int main(){
  5. //问题 o: 水题欢乐多
  6. int n,a,b;
  7. while(~scanf("%d %d %d",&n,&a,&b)){
  8. memset(shoes,0,sizeof shoes);
  9. for(int i = 1;i<=n;i++) scanf("%d",&shoes[i]);
  10. int maxn = shoes[1];
  11. for(int i = 1;i<=n;i++){
  12. if(a+shoes[i]<=b&&shoes[i]>maxn) maxn = shoes[i];
  13. }
  14. printf("%d\n",maxn);
  15. }
  16. return 0;
  17. }

问题 p: 判决素数个数

参考题解:

  1. #include <stdio.h>
  2. int isPrime(int num){
  3. if(num<=1) return 0;
  4. for(int i = 2;i*i<=num;i++) if(num%i==0) return 0;
  5. return 1;
  6. }
  7. int main(){
  8. //问题 p: 判决素数个数
  9. int x,y;scanf("%d %d",&x,&y);
  10. int cnt = 0;
  11. for(int i = x;i<=y;i++){
  12. if(isPrime(i)) cnt++;
  13. }
  14. printf("%d",cnt);
  15. return 0;
  16. }

问题 q: 圣诞树

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 q: 圣诞树
  4. int h,n;scanf("%d %d",&h,&n);
  5. for(int i = 1;i<=h;i++){
  6. for(int j = 1;j<=n;j++){
  7. if(j!=n){
  8. for(int k = 1;k<=h-i;k++) printf(" ");
  9. for(int k = 1;k<=2*i-1;k++) printf("*");
  10. for(int k = 1;k<=h-i;k++) printf(" ");
  11. }else{
  12. for(int k = 1;k<=h-i;k++) printf(" ");
  13. for(int k = 1;k<=2*i-1;k++) printf("*");
  14. }
  15. }
  16. printf("\n");
  17. }
  18. return 0;
  19. }

问题 r: 屠龙

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 r: 屠龙
  4. int a,b,c;
  5. while(~scanf("%d %d %d",&a,&b,&c)){
  6. if(3*a+2*b+c+a*b*c>25+4*a+2*b-3*c) printf("win\n");
  7. else printf("lose\n");
  8. }
  9. return 0;
  10. }

问题 s: 信号测试

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 s: 信号测试
  4. int num;
  5. while(~scanf("%d",&num)){
  6. if(num<10){
  7. for(int i = 1;i<=num;i++) printf("%d",i);
  8. }else if(num<100){
  9. for(int i = 1;i<=num/10;i++) printf("S");
  10. for(int i = 1;i<=num%10;i++) printf("%d",i);
  11. }else{
  12. for(int i = 1;i<=num/100;i++) printf("B");
  13. for(int i = 1;i<=num/10%10;i++) printf("S");
  14. for(int i = 1;i<=num%10;i++) printf("%d",i);
  15. }
  16. printf("\n");
  17. }
  18. return 0;
  19. }

问题 t: 统计个数

参考题解:

  1. #include <stdio.h>
  2. #include <string.h>
  3. char s[1005];
  4. int a[5];
  5. int main(){
  6. //问题 t: 统计个数
  7. gets(s);
  8. for(int i = 0;i<strlen(s);i++){
  9. if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z') a[1]++;
  10. else if(s[i]>='0'&&s[i]<='9') a[2]++;
  11. else if(s[i]==' ') a[3]++;
  12. else a[4]++;
  13. }
  14. for(int i = 1;i<=4;i++){
  15. if(i==1) printf("%d",a[i]);
  16. else printf(" %d",a[i]);
  17. }
  18. return 0;
  19. }

问题 u: 字符加密

参考题解:

  1. #include <stdio.h>
  2. #include <string.h>
  3. char s[1005];
  4. int main(){
  5. //问题 u: 字符加密
  6. gets(s);
  7. for(int i = 0;i<strlen(s);i++){
  8. if(s[i]>='a'&&s[i]<='z') printf("%c",'a'+(s[i]-'a'+1)%26);
  9. else printf("%c",s[i]);
  10. }
  11. return 0;
  12. }

问题 v: 出租车计费

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 v: 出租车计费
  4. int m;
  5. while(~scanf("%d",&m)){
  6. if(m<=2) printf("7\n");
  7. else if(m<=5) printf("%d\n",7+(m-2)*5);
  8. else if(m<=10) printf("%d\n",7+(5-2)*5+(m-5)*7);
  9. else printf("%d\n",7+(5-2)*5+(10-5)*7+(m-10)*9);
  10. }
  11. return 0;
  12. }

问题 w: 五位以内的对称素数

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 w: 五位以内的对称素数
  4. int n,temp;
  5. while(~scanf("%d",&n)){
  6. int ans = 0;
  7. temp = n;
  8. while(temp!=0){
  9. ans = ans*10+temp%10;
  10. temp/=10;
  11. }
  12. if(ans!=n){
  13. printf("No\n");
  14. continue;
  15. }
  16. if(n<=1){
  17. printf("No\n");
  18. continue;
  19. }
  20. int type = 1;
  21. for(int i = 2;i*i<=n;i++){
  22. if(n%i==0){
  23. printf("No\n");
  24. type = 0;
  25. break;
  26. }
  27. }
  28. if(type) printf("Yes\n");
  29. }
  30. return 0;
  31. }

问题 x: 完数

参考题解1:

  1. #include <stdio.h>
  2. #include <string.h>
  3. int a[1005];
  4. int main(){
  5. //问题 x: 完数
  6. int n;scanf("%d",&n);
  7. for(int i = 2;i<=n;i++){
  8. memset(a,0,sizeof a);
  9. int idx = 1;
  10. a[0] = 1;
  11. for(int j = 2;j<i;j++){
  12. if(i%j==0){
  13. a[idx] = j;
  14. idx++;
  15. }
  16. }
  17. int ans = 0;
  18. for(int j = 0;j<idx;j++) ans+=a[j];
  19. if(ans==i){
  20. printf("%d its factors are ",i);
  21. for(int j = 0;j<idx;j++) printf("%d ",a[j]);
  22. printf("\n");
  23. }
  24. }
  25. return 0;
  26. }

参考题解2:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. vector<int> v;
  4. bool isWenshu(int num){
  5. v.clear();
  6. v.push_back(1);
  7. for(int i = 2;i*i<=num;i++){
  8. if(i*i!=num&&num%i==0) v.push_back(i),v.push_back(num/i);
  9. else if(i*i==num&&num%i==0)v.push_back(i);
  10. }
  11. sort(v.begin(),v.end());
  12. int ans = 0;
  13. for(int i = 0;i<v.size();i++) ans+=v[i];
  14. return ans==num;
  15. }
  16. int main(){
  17. //问题 x: 完数
  18. ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
  19. int n;cin >> n;
  20. for(int i = 2;i<=n;i++){
  21. if(isWenshu(i)){
  22. cout << i << " its factors are ";
  23. for(int j = 0;j<v.size();j++) cout << v[j] << ' ';
  24. cout << '\n';
  25. }
  26. }
  27. return 0;
  28. }

问题 y: 三角数字阵

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 y: 三角数字阵
  4. int n;scanf("%d",&n);
  5. for(int i = 1;i<=n;i++){
  6. for(int j = 1;j<=i;j++) printf("%d ",j);
  7. printf("\n");
  8. }
  9. return 0;
  10. }

问题 z: 背靠背字符三角形

参考题解:

  1. #include <stdio.h>
  2. int main(){
  3. //问题 z: 背靠背字符三角形
  4. char c;int n;scanf("%c %d",&c,&n);
  5. for(int i = 1;i<=n;i++){
  6. for(int j = 1;j<=n-i;j++) printf(" ");
  7. for(int j = 1;j<=i;j++) printf("%c",c);
  8. printf(" ");
  9. for(int j = 1;j<=i;j++) printf("%c",c);
  10. printf("\n");
  11. }
  12. return 0;
  13. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/426277
推荐阅读
相关标签
  

闽ICP备14008679号