zoukankan      html  css  js  c++  java
  • 实验6

    1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。

    #include <stdio.h>
    int main()
    {
        inta,b,c,d,i,sum=0;
        for(i=1000;i<=9999;i++)
        {
            a=i/1000;
            b=(i%1000)/100;
            c=(i%100)/10;
            d=i%10;
    if(a!=b&&b!=c&&c!=d)
            {
            sum=d*1000+c*100+b*10+a;
            }
            if(i==4*sum)
            {
                printf("%d",i);
            }
        }
        return 0;
    }

    2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。

      样例: 输入123,    输出 6     June

                输入12345,输出 15   ***

    #include <stdio.h>
    int main()
    {
        int a,b,sum=0;
        printf("输入一个多位数
    ");
        scanf("%d",&a);
        if(a<=9)
        {
            printf("数据错误
    ");
        }
        else
        {
            while(a>0)
            {
                b=a;
                sum=sum+b%10;
                a=b/10;
            }
        }
        if(sum<=12)
        {
            switch(sum)
            {
            case 1 : printf("january
    ");break;
            case 2 : printf("februay
    ");break;
            case 3 : printf("march
    ");break;
            case 4 : printf("april
    ");break;
            case 5 : printf("may
    ");break;
            case 6 : printf("june
    ");break;
            case 7 : printf("july
    ");break;
            case 8 : printf("august
    ");break;
            case 9 : printf("september
    ");break;
            case 10 : printf("october
    ");break;
            case 11 : printf("november
    ");break;
            case 12 : printf("december
    ");break;
            }
        }
        else
        {
            printf("***");
        }
        return 0;
    }

    3.给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

       输入格式:输入在一行中给出A。

       输出格式:输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

       输入样例:2

       输出样例:234  235  243  245  253  254

                      324  325  342  345  352  354

                      423  425  432  435  452  453

                      523  524  532  534  542  543

    #include <stdio.h>
    int main()
    {
        int a,b,c,d,e=0,A;
        printf("给定不超过6的正整数A:
    ");
        scanf("%d",&A);
        if(A<=0||A>6)
        {
            printf("数据错误,请重新输入:
    ");
            scanf("%d",&A);
        }
        else
        {
            for(a=A;a<A+4;a++)
            {
                for(b=A;b<A+4;b++)
                {
                    for(c=A;c<A+4;c++)
                    {
                        if(a!=b&&b!=c&&c!=a)
                        {
                            d=a*100+b*10+c*1;
                            printf("%d",d);
                            e++;
                            if(e%6==0)
                            {
                                printf("
    ");
                            }
                            else if(e%6!=0)
                            {
                                printf(" ");
                            }
                        }
                    }
                }
            }
        }
        return 0;
    }

    综合小项目:猜拳小游戏

    #include<stdio.h> 
    #include<stdlib.h>
    #include<time.h>
    int main()
    {
        int a,b,c=0,d=0,e=0,f=1;
        char x;
        srand(time(NULL));
        do
        {
            a=rand()%3+1;
            printf("第%d次对决,请选择:1:石头,2:剪刀,3:布
    ",f);
            scanf("%d",&b);
            if(a<0||a>3)
            {
                printf("数据错误,重新输入
    ");
            }
            else if(a==b)
            {
                c++;
                f++;
                printf("平局
    ");
            }
            else if(a==1&&b==2||a==2&&b==3||a==3&&b==1)
            {
                d++;
                f++;
                printf("你输了
    ");
            }
            else if(a==1&&b==3||a==2&&b==1||a==3&&b==2)
            {
                e++;
                f++;
                printf("你赢了
    ");
            }
            printf("是否继续下一轮?Y(y)orN(n)
    ");
            scanf(" %c",&x);
        }
        while(x=='Y'||x=='y');
        printf("对决次数%d,平局%d次,电脑得分%d,用户得分%d
    ",f-1,c,d,e);
        return 0;
    }

    二:知识点总结

    顺序结构

    1:使用变量要先声明后使用,格式化输入函数scanf,由%和格式字符组成,对变量取地址符

    2:scanf函数中的“格式控制串”,后面应当是变量地址,而不是变量名

    3:赋值运算符不表示相等

    4:在程序语句中使用较为复杂的语句,尽量使用括号来保证准确的计算顺序

    5:实型数据中的  float类型的用%f,double 用%lf

    选择结构

    1:if..else语句,if...else if,在判断时还要注意运算符的优先级,

    2:实现if  else的正确匹配要加大括号,单独出现时叫做空语句,程序执行不产生任何动作  if()后面不加;

    3:switch  case  break语句误丢break,case后面跟的一定是常量,case后面误丢空格

    4:字符型数据要用单引号括起来,字符型数据的输入和输出,putchar()输出函数,getchar()输入函数

    5:随机函数rand(),利用函数time()获得系统时间,用系统时间做随机种子

    循环结构

    1:for语句,while语句,do  while语句

    2:for(赋初值;循环条件;循环变量增值)

    3:求和时sum的初始值为0,求乘时sum的初值为1

    4:无限循环 while(1)

                     {

                          循环体

                     }

    5:break语句结束整个循环过程

    6:continue语句只能用于循环语句

    7:学会使用while((ch=getchar())!=' ')

    三:实验总结

    1:sum的值搞错误,未给sum赋初值

    2:do...while语句的循环条件没有搞清楚,导致运行出错

  • 相关阅读:
    [IndiaHacks 2016
    [Northern Eurasia Finals Online 2020]D. Down We Dig(记忆化搜索,博弈)
    2018 ICPC Asia Nakhon Pathom Regional Contest-F.Lucky Pascal Triangle(杨辉三角,递归,分治,规律)
    The 2020 ICPC Asia Taipei-Hsinchu Site Programming Contest-C题 Pyramid (思维,递推,规律)
    [2020-2021 ACM-ICPC Brazil Subregional Programming Contest] K. Between Us (高斯消元解异或方程组)
    HDU-6252
    [AtCoder Regular Contest 109]-C
    [2016-2017 ACM-ICPC CHINA-Final]Problem C. Mr. Panda and Strips(DP+线段树)
    失败经1
    [2016-2017 ACM-ICPC CHINA-Final]-Problem H. Great Cells(贡献,组合数学)
  • 原文地址:https://www.cnblogs.com/yangchaoge1020/p/6057931.html
Copyright © 2011-2022 走看看