C语言编程尝试

1.余弦

#include<stdio.h>
#include<math.h>

main()
{
    double y;       
    int x,m;
    for(y=1;y>=-1;y-=0.1)
    {
        m = acos(y) * 10;
        for(x=1;x<m;x++) 
            printf(" ");
            printf("*");
            for(;x<62-m;x++)
                printf(" ");
                printf("*\n");
    }
}

y遍历次数即为高度,m为对应点横坐标,x为横轴
每行有两个点需要打印,第一个点为acos(y),此处放大十倍方便观察
两个点以pi为对称轴 即(a+b)/2=pi 即b=2pi(6.2)-a
对应的第一个点m第二个点62-m(放大十倍)

1.思考题 正弦

#include<stdio.h>
#include<math.h>

int main()
{
 double y;
 int m,x;
   for(y=1;y>=-1;y-=0.1)
   {
       m = asin (y)*10;
       if(m>0)     
       {
        for (x=1;x<m;x++) 
           printf(" ");
            printf("*");
        for(;x<31-m;x++)
            printf(" ");
             printf("*\n");
       }
       else 
       { 
        m=31-m;
       for(x=1;x<m;x++)
           printf(" ");
            printf("*");
       for(;x<93-m;x++)
           printf(" ");
            printf("*\n");

       }
   }
   return 0;
}

在0到2pi上,相比于余弦函数,正弦函数没有唯一的对称轴,所以应分情况进行考虑
在0到pi区间,两点以pi/2为对称轴,参照余弦修改容易得出
而在pi到2pi上,因m为负值,此代码对m值进行修改,变为31-m即以pi/2进行轴对称,而后以3/2 *pi为对称轴找出第二个点

2.直线和余弦

#include<stdio.h>
#include<math.h>

int main()
{
    double y;
    int x,m,n,yy;
    for(yy=0;yy<=20;yy++)
    {
        y=0.1*yy;
        m=acos(1-y)*10;
        n=45*(y-1)+31;
        for(x=0;x<=62;x++)
            if(x==m&&x==n)
                printf("+");
            else if(x==n)
                printf("+");
            else if(x==m || x==62-m)
                printf("*");
            else
                printf(" ");
                 printf("\n");
        
    }
    return 0;
}

yy遍历次数为高度
x从0到62为横轴范围
需要打印的点为两个余弦点和一个直线点(可能有交点)
余弦对应点为x=m和x=62-m 直线对应点为x=n
在x遍历到62后进行换行

2.思考题 正弦和余弦

#include<stdio.h>
#include<math.h>

int main()

{
    double y;
    int x,m,n;
    for(y=1;y>=-1;y-=0.1)
    {
        m=acos(y)*10;
        n=asin(y)*10;
        for(x=1;x<=62;x++)
            if(x==m||x==62-m||x==n||x==31-n||x==62+n)
                printf("*");
            else 
                printf(" ");
            printf("\n");
    }
    return 0;
}

x=m和62-m对应余弦

此处重点介绍正弦
x=n x=31-n x=62+n
当x在0到pi/2时,x=n 和x=31-n为对应点, 62+n超过范围,未进行打印
相应的,在0到-pi/2上,n不予打印 62+n为以pi/2为轴的对应点 62+n为2*pi+n对应点

3.圆

#include<stdio.h>
#include<math.h>

int main()
{
    double y;
    int x,m;
    for(y=10;y>=-10;y--)
    {
        m=2.5*sqrt(100-y*y);
        for(x=1;x<30-m;x++)
            printf(" ");
             printf("*");
        for(;x<30+m;x++)
            printf(" ");
             printf("*\n");   
    }
    return 0;
}

同样,y为纵轴
m为y确定时对应的横坐标(左半)
文中30-m中 30为选取的圆点横坐标,应大于半径25,改为40 50亦可

3.思考题 圆加y=x^2

#include<stdio.h>
#include<math.h>

int main()
{
    double y;
    int x,z,m;
    for(y=20;y>=-10;y--)
    {
        for(x=-30;x<=30;x+=1)
        {
        m=2.5*sqrt(100-y*y);
        z=2.5*sqrt(y);  

        if(x==m||x==-m||x==z||x==-z)
            printf("*");
        else 
            printf(" ");
        }
        printf("\n");
    }
    return 0;
}
y轴选取了-10到20,到20是为了更多的表现y=x^2

4.最大最小值和均值

#include<stdio.h>

int main()
{
    int integer,i,max,min,sum;
    max=-32768;
    min=32767;
    sum=0;
    for(i=1;i<=10;i++)
    {
        printf("Input number%d=",i);
        scanf("%d",&integer);
        sum+=integer;
        if(integer>max)
            max=integer;
        if(integer<min)
            min=integer;
    }
    printf("Canceled max score: %d\nCanceled min score: %d\n",max,min);
    printf("Average score:%d\n",(sum-max-min)/8);
    return 0;
}

无亮点难点…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值