11月3号晚上测试题解

发布时间 2023-11-01 13:10:47作者: 小卷同学

3954 Problem A 变量交换输出

#include <stdio.h>

int main()
{
    int a,b,c,x;
    scanf("%d%d%d",&a,&b,&c);
    //假设a,b,c分别为1,2,3;选择一个中间值进行数值替换
    x=a; //把a赋值给x,此时x就等于a的值为1
    a=c; //把c赋值给a,此时a就等于c的值为3
    c=b; //把b赋值给c,此时c就等于b的值为2
    b=x; //把x赋值给b,此时b就等于x的值为1
    printf("%d\n%d\n%d",a,b,c);
	
    return 0;
}

3955 Problem B 数字换位

#include <stdio.h>

int main()
{
    int x,a,b=0;
    scanf("%d",&x); //假设输入的数是963
    while(x>0) //当x小于等于0时结束循环
    {
      a=x%10;//取最后一个数963%10=3;此时a的值为3;
      b=b*10+a; //b每次都乘10加a;具体就是0+3,然后就是30+6,最后是360+9
      x/=10; //x去掉最后一个数3,具体就是变成96,然后是9,最后变成0,跳出循环
    }
    printf("%d",b);
    return 0;
} 

4323 Problem C 买西瓜


#include <stdio.h>

int main()
{
    int n;
    scanf("%d", &n);
    if(n==2) printf("NO"); //特殊情况,2一分为二为1,都是奇数。
    else
    {
      if (n%2!=0) printf("NO"); //奇数不可能分为两个偶数。
      else printf("YES"); //只有偶数才可以分为两个偶数
    }
    return 0;
}

4636 Problem  D 简简单单的签到题

#include <stdio.h>

int main()
{
    double d,h;
    scanf("%lf %lf",&d,&h); //  输入不一定是整数,可能是浮点数。
    double area=d*h/2;
    printf("%.1lf",area); //输出保留小数点后一位
    return 0;
}

3987 Problem  E 计算器
//这题可以用swich-case。也可以用if-else语句来写,判断条件就是字符+-*/

#include <stdio.h>

int main()
{
    float a,b;char n;
    scanf("%f %f\n",&a,&b);
    scanf("%c",&n);
    switch(n)
    {
      case '+':printf("%.2lf",a+b);break;
      case '-':printf("%.2lf",a-b);break;
      case '*':printf("%.2lf",a*b);break;
      case '/':printf("%.2lf",a/b);break;
      default:printf("输入有误"); 
    }
    return 0;
}

4634 Problem  F 小卷同学的讨厌数

#include <stdio.h>

int main()
{
    int t;scanf("%d",&t); //输入n组数据
    while(t--)
    {
      int n,sum=0;
      scanf("%d",&n);
      for(int i=0;i<n;++i)
      {
    	int x;scanf("%d",&x);
        if(x==1) continue;
        bool ok=true;
        for(int i=2;i<=x/i;++i) //一个大于等于2的数,要么是素数要么是合数,根据合数的性质只需要遍历到x/i向上取整即可。
        {
          if(x%i==0) // 判断是不是素数,不是bool就变false。
          {
            ok=false;
            break;
          }
        }
        if(ok) 
        {
          sum+=x; //对素数进行累加。
          printf("%d ",x);
        }
      }
     printf("\n%d\n",sum);
    }
    return 0;
}

4164 Problem  G 奇数位偶数位和与差

#include <stdio.h>

int main()
{
  int t;scanf("%d",&t);
  int sum1=0,sum2=0;
  for (int i = 1; i <= t; ++i)
  {
    int x;scanf("%d",&x);
    if (i%2!=0) sum1 += x; //奇数累加
    else sum2 += x; //偶数累加
  }
  printf("%d\n%d\n", sum1, sum2);
  //用大的数减小的数
  if (sum1 >= sum2) printf("%d", sum1 - sum2); 
  else printf("%d", sum2 - sum1);

  return 0;
}

1026 Problem  H 完数

#include <stdio.h>

int main()
{
    int i,j,n;
    scanf("%d",&n);
    for(i=2;i<=n;i++)
    {
      int cnt=0;
      for(j=1;j<i;j++) if(i%j==0) cnt+=j; //求出所有因子之和
      if(cnt==i) //如果相等就是完数
      {
    	printf("%d its factors are ",i); 
        for(j=1;j<i;j++) if(i%j==0) printf("%d ",j); //升序打印因子
        printf("\n"); //打印完空格
      }
    }
    return 0;
}

4635 Problem  I 小卷同学的小算盘

#include <stdio.h>

int main()
{
    double x;
    scanf("%lf",&x);
    double max=0;
    for(int i=0;i<12;++i)
    {
      double re;scanf("%lf",&re);
      if(max<re) max=re; //找出最大值 
    }
    printf("%.2lf",max*x); //美元对人民币汇率最高的时候所换的钱越多。
    return 0;
}

这只是一次测试,永不会挡住你前进的步伐,坚持不懈去追求,相信有一天你也可以成为被人仰慕的大佬,有缘再见