C语言-选择、循环

题目1:在平面直角坐标系中,P1得坐标为(x,y),其中x与y均为整数且均不为0. 以原点为中心,将P1沿着逆时针方向转得到P2、P3、P4三个点,按以下格式输出P2、P3、P4三个点。

格式格式格式!!!

其实是个很简单的题目 就是x和y被输出时如果为正前面加个空格就可以了

考试的时候还考虑到位数......

#include <stdio.h>
int main()
{
int x,y;
scanf("%d %d",&x,&y);

if(x>0&&y>0)
{
printf("( %d, %d)\n",x,y);
printf("(%d, %d)\n",-y,x);
printf("(%d,%d)\n",-x,-y);
printf("( %d,%d)",x,-y);
}

if(x<0&&y>0)
{
printf("(%d, %d)\n",x,y);
printf("(%d,%d)\n",-y,x);
printf("( %d,%d)\n",-x,-y);
printf("(%d,%d)",x,-y);
}

if(x<0&&y<0)
{
printf("(%d,%d)\n",x,y);
printf("( %d,%d)\n",-y,x);
printf("( %d, %d)\n",-x,-y);
printf("(%d, %d)",x,-y);
}

if(x>0&&y<0)
{
printf("( %d,%d)\n",x,y);
printf("( %d, %d)\n",-y,x);
printf("(%d, %d)\n",-x,-y);
printf("( %d, %d)",x,-y);
}
return 0;
}
题目2:任意输入三个正整数,按从大到小的顺序排列,考虑相等的情况
#include <stdio.h>
int main()
{
    int a,b,c,t;
    scanf("%d %d %d",&a,&b,&c);
    //1.先给a b c排列顺序
    //要注意的是 a>b 和b=t的顺序是不能颠倒的 可以用盒子和数的方法理解
    if(a>b){
        t=a,a=b,b=t; //a是a b中的较小者
    }
    if(a>c){
        t=a,a=c,c=t; //a是a c中的较小者 所以a为a b c中的最小者
    }
    if(b>c){
        t=b,b=c,c=t;//b是b c中的较小者 
    }

 //2.这一步在已经知道a<b<c的情况下  接着判断其中两数相等的情况
    if(a==b){
    printf("%d>%d=%d",c,b,a);
    }
    if(c==b){
        printf("%d=%d>%d",c,b,a);
    }
    if(a!=b&&b!=c)
    {
        printf("%d>%d>%d",c,b,a);
    }

    
    
    return 0;
}

嘎嘎简单!!! 但是考试的时候没拿到满分!!

题目3:格里高利公式:s/4=1-1/3+1/5-1/7+.... 要求,输入正整数n,输出计算结果(保留六位小数)和算式。其中算式中的分母,取值为【1,n】之内的所有奇数。

输入样例 :9

输出样例: 3,339683/4=

1-1/3+1/5-1/7+1/9

#include <stdio.h>
int main()
{
    //1.输出左边 
    int n;
    scanf("%d",&n);
    int i=1;
    int a=1,b=1;
    double s=0;
    
    while (i<=n)
    {
        s=s+1.0*a/b;
        a=-a;
        b=b+2;
        i=i+2;//这里一定要注意 如果是 i++ 那么就会多算一次 比如i=2时就会 -1/3 
            
    }
    printf("%.6f/4=",s*4);
    
    //2.输出右边
     
      printf("1");//1是特殊情况 优先考虑
      int t=1,h=3;
      //这里的t为项数
      //有一个要注意的点就是最后一项的分母应该是<=n的最大奇数
      while(h<=n)
      {
          
          if(t%2==0){   //偶数项为正 (-1/3为第一项)
              printf("+1/%d",h);
          }  
        else{
            printf("-1/%d",h);
          }
          
      h=h+2;      
      t=t+1;
      
      }
      return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值