51zuoye

4月29日作业
1.使用for循环打印99乘法表
作业代码如下:

#include <stdio.h>
int main(int argc, char *argv[])
{
    int i,j;
    for (i=0; i<=8; i++) //控制行
    {
        for (j=0; j<=8; j++) //控制列
        {
            if(j>=i)//如果列大于行
            printf("%d*%d=%d\t",i+1,j+1,(j+1)*(i+1));
        }
        printf("\n");
    }
    return 0;

2、将data第[4]位清0,保持其他位不变
将data第[7]位置1,保持其他位不变
将data第[31:28]位清0,保持其他位不变
将data第[7:4]位置1,保持其他位不变
将data第[15:11]位修改位10101,保持其他位不变
作业代码如下;

#include <stdio.h>
#define  set0(data,i)   ((data|(1<<i))^(1<<i))//通过或运算之后异或来实现指定位数置 0
#define  set1(data,i)    (data|(1<<i))      //通过或运算来实现指定位数置1
int main(int argc, char *argv[])
{
    int data,temp1,temp2,temp3,temp4,temp5;
    char k = !1;
    data = 0xffffffff;
    temp1 = set0(data,4);
    temp2 = set1(data,7);
    temp3=temp4=temp5=data;
    for(int i=1;i<=31;i++)
    {
        if(i>=28&&i<=31)
        {
            temp3 = set0(temp3,i);
        }
        if (i<=7&&i>=4)
        {
            temp4 = set1(temp4,i);
        }
        if(i>=11&&i<=15)
        {
            switch (k=!k)//每进一次进行取反
            {
                case 0 : temp5 = set0(temp5,i);break;
                case 1 : temp5 = set1(temp5,i);break;
            }
        }
    }
    printf("%#x,%#x,%#x,%#x,%#x",temp1,temp2,temp3,temp4,temp5);
    return 0;
}

3、终端输入行数,打印金字塔
作业代码如下:

#include <stdio.h>
int main(int argc, char *argv[])
{
    int a,i,k,j;
    scanf("%d",&a);
    for(i=1;i<=a;i++)
    {
        for(j=1;j<=((2*a)+1)/2-i;j++)//打印空格
        {
            printf(" ");
        }

          for(k=1;k<=(2*i)-1;k++)//打印*号
          printf("*");//注意这里for作用范围
        printf("\n");
    }
    return 0;
}

4月30号作业
1、打印字母图形
在这里插入图片描述

#include <stdio.h>

int main(int argc, char *argv[])
{
    int i,j,k;
    char temp = 'F';
    for (i=0;i<6;i++) 
    {
      temp = 'F';
        for(int c = 0;c<i;c++)//打印_
            printf("_");
       for(int c = 0;c<i+1;c++)
            printf("%c",temp--);//打印字母
        printf("\n");
    }
    return 0;
}


2、输出1000-10000中的四叶玫瑰数(四叶玫瑰数,各位数字的四次方和等于其本身

#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
    int a,b,c,d;

    for (int i=1000; i<=9999; i++)
    {
        a = i/1000;
        b = i/100%10;
        c = i/10%10;
        d = i%10;
        if(pow(a,4)+pow(b,4)+pow(c,4)+pow(d,4)==i)
        {
            printf("%d,",i);
        }
    }

    return 0;
}

3、题目:有 1、2、3、4个数字,能组成多少互不相同且无重复的三位? 都是多少?
第一种

#include <stdio.h>
#include <math.h>
int num=0;
int main(int argc, char *argv[])
{
    for (int i=1;i<=4;i++)
    {
        for(int j=1;j<=4;j++)
        {
            if(j!=i)
            for(int k=1;k<=4;k++)
            {
                if(k!=j&&k!=i)
                {
                printf("%d%d%d ",i,j,k);
                num++;
                }
            }
        }
    }
    printf("zongshu:%d",num);
    return 0;
}
第二种
```c
#include <stdio.h>
#include <math.h>
int num=0;
int main(int argc, char *argv[])
{
    for (int i=1;i<=4;i++)
    {
        for(int j=1;j<=4;j++)
        {
            if(j==i)
            continue;
            for(int k=1;k<=4;k++)
            {
                if(k==j||k==i)
                {
                    continue;
                }
                   printf("%d%d%d ",i,j,k);
                num++;
            }
        }
    }
    printf("zongshu:%d",num);
    return 0;
}

4、输入三个整数x、y和z,请把这三个数由小到大输出

```c
#include <stdio.h>
int main(int argc, char *argv[])
{
    int a,b,c;
    int num[3],temp;
    for(int i=0;i<3;i++)
    {
    scanf("%d",&num[i]);
    }
    for (int i=0;i<2;i++)
    {
        for(int j=0;j<2;j++)
        {
            if(num[i]>num[i+1])
            {
                temp=num[i];
                num[i]=num[i+1];
                num[i+1]=temp;
            }
        }
    }
    for(int i=0;i<3;i++)
        printf("%d ",num[i]);
    return 0;
}

5、思考交换两个数的方法

#include <stdio.h>
int main(int argc, char *argv[])
{
    int temp,a,b;
    scanf("%d%d",&a,&b);
    temp = a;
    a=b;
    b=temp;
    printf("%d %d",a,b);//第一种

    a=a+b;
    b=a-b;
    a=a-b;
    printf("%d %d",a,b);//第二种


    a=a^b;
    b=a^b;
    a=a^b;

    printf("%d %d",a,b);//第三种
    return 0;
}

5月1号作业
1、输出3-100内的质数(质数的因子只有1和它本身)

#include <stdio.h>
int main(int argc, char *argv[])
{
    int ff;
    for(int i=3;i<=100;i+=2)
    {
        for(int j=2;j<i;j++)
        {
            if(i%j==0)
            {
                ff=0;//标志位
                break;
            }
            ff=1;
        }
        if(ff==1)//使用标志位
        {
            printf("%d ",i);
            ff=0;//使用完毕清除标志位
        }
    }
    return 0;
}

2、输入两个正整数m和n,求其最大公约数和最小公倍数

#include <stdio.h>
int main(int argc, char *argv[])
{
    int m,n,max,gongyue;
    scanf("%d%d",&m,&n);
    max = m>n?m:n;
    for(int i=1;i<max;i++)
    {
        if(m%i==0&&(n%i)==0)
        {
            gongyue=i;
        }
    }
    printf("gongyue=%d;gongbei=%d\n",gongyue,m*n/gongyue);
    return 0;
}

3、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数
(提示:使用while循环,条件为输入的字符不是’\n’)

#include <stdio.h>
int main(int argc, char *argv[])
{
    char e;
    int a=0,b=0,c=0,d=0;
    while((e=getchar())!='\n')
    {
        if(e>='A'&&(e<='Z')||(e>='a')&&(e<='z'))
        a++;
        else if(e==' ')
        b++;
        else if(e>='0'&&e<='9')
        c++;
        else
        d++;
    }
    printf("letter:%d,number:%d,space:%d,other:%d\n",a,b,c,d);
    return 0;
}

5月2号作业
1、一个数如果恰好等于它的因子和,这个数就叫“完美数”,求100内的所有完美数

#include <stdio.h>
int main(int argc, char *argv[])
{
    int sum=0;
    for (int i=1;i<=100; i++)
    {
        sum=0;
        for(int j=1;j<i;j++)
        {
            if(i%j==0)
            {
                sum+=j;
            }
        }
        if(sum==i)
        {
            printf("%d ",i);
        }
    }
    return 0;
}

2、我国古代数学家张丘建在《算经》一书中曾提出过著名的 “百钱买百鸡” 问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?

#include <stdio.h>
int main(int argc, char *argv[])
{
    int x,y,z;
    for(int i=0;i<=20;i++)
        for(int j=0;j<=34;j++)
            for(int k=0;k<100;k+=3)
            {
                if((5*i+3*j+k/3)==100&&(i+j+k==100))
                {
                    printf("gongji:%d,muji;%d,kunkun:%d\n",i,j,k);
                }
            }
    return 0;
}

3、实现前10位斐波那契数列

#include <stdio.h>
int main(int argc, const char *argv[])
{
    int i=0,j=1;
    printf("1 ");
    for(int c=1;c<10;c++)
    {
        printf("%d ",j=i+j);
        i=j-i;
    }
    return 0;
}

4、买一件上衣59元,买一件裤子70元,如果成套买的话,一套120.假设我买了m个上衣和n个裤子,问:需要花多少钱?

#include <stdio.h>
int main(int argc, char *argv[])
{
    int m,n;
    scanf("%d%d",&m,&n);
    printf("It costs %d yuan\n",m>n?(n*120)+(m-n)*59:(m*120)+(n-m)*70);
    return 0;
}

5月3号作业
1、终端输入行数,打印倒金字塔

#include <stdio.h>
int main(int argc, char *argv[])
{
    int hang;
    scanf("%d",&hang);
    for(int i=0; i<hang;i++)
    {
        for(int j=0;j<i;j++)//打印空格
        {
            printf(" ");
        }
        for(int j=0;j<((hang-i-1)*2+1);j++)//打印*号 当前行打印数为(总行数减当前行)*2+1
        {
        printf("*");
        }
        printf("\n");//换行符 
    }
    return 0;
}

2、使用break关键字,完成求[3-100]中的质数

#include <stdio.h>
int main(int argc, char *argv[])
{
    int sign=1;
    for(int i=3;i<=100;i++)
    {
        sign=1;//标志位置位
        for(int j=2;j<i;j++)
        {
            if(i%j==0)
            {
                sign=0;//表示不是质数
                break;
            }
        }
        if(sign==1)
        {
            sign=0;//使用过后要复位(清除标志)
            printf("%d ",i);
        }
    }
    return 0;
}

3、已知一维数组int arr[5];终端输入数组中元素,并求出最大值

#include <stdio.h>
int main(int argc, char *argv[])
{
    int arr[5],max;
    for(int i=0;i<5;i++)
    {
        scanf("%d",&arr[i]);
        switch (i)
        {
            case 0  : max=arr[0];break;//处理第一个元素
            default : max = arr[i]>max?arr[i]:max;//比较元素大小 留下大的给max变量
        }
    }
    printf("%d\n",max);
    return 0;
}

4、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

#include <stdio.h>
int main(int argc, char *argv[])
{
    float sum=0,fin=0,dangqian=100;//浮点数以防除不尽
    for(int i=0;i<10;i++)
    {
        sum+=dangqian+fin;//这一次加上下一次弹起的距离,第一次执行表示下来的100米
        fin=dangqian/2;//反跳的距离
        dangqian/=2;//下一次的当前值
    }
    printf("zonggong:%fm zuihou:%fm",sum,fin);
    return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值