第六次作业

一、实验内容   

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

#include<stdio.h>
int main()
{
    int a,b,c,d,e,i;
    for(i=1000;i<10000;i++)
    {
        a=i%10;
        b=i/10%10;
        c=i/100%10;
        d=i/1000;
  if(a==b||a==c||a==d||b==c||b==d||c==d)
  {
   continue;
  }
  else
  {
   e=a*1000+b*100+c*10+d;
   if(i==e*4)
   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);
    while(a>0)
    {
        b=a%10;
        a=a/10;
        sum=sum+b;
    }
    printf("%d  ",sum);
    switch(sum)
    {
        case 12:printf("December\n");break;
        case 11:printf("November\n");break;
        case 10:printf("October\n");break;
        case 9:printf("Septmber\n");break;
        case 8:printf("August\n");break;
        case 7:printf("July\n");break;
        case 6:printf("June\n");break;
        case 5:printf("May\n");break;
        case 4:printf("April\n");break;
        case 3:printf("March\n");break;
        case 2:printf("February\n");break;
        case 1:printf("January\n");break;
        default:printf("***\n");
    }
    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,f;
    printf("请输入一个不大于6的数字\n");
    scanf("%d",&a);
    for(f=0,b=100;b<1000;b++)
    {
        c=b/100;
        d=b/10%10;
        e=b%10;
        if(c>=a&&c<=a+3&&d>=a&&d<=a+3&&e>=a&&e<=a+3&&c!=d&&d!=e&&c!=e)
        {
            printf("%d ",b);
            f=f+1;
            if(f%6==0)
            printf("\n");
        }
    }
    return 0;
}

4. 万年历、看商品猜价格、自动出题器、猜拳游戏。(完成个人选定的题目)

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int year,year2,month,day,sum1=0,sum2=0,sum=0,i,a;
    printf("输入年份-月份\n");
    scanf("%d-%d",&year,&month);
    year2=year;
    for(year=year-1;year>=1900;year--)
    {
        if(year%4==0&&year%100!=0||year%400==0)
        sum1=sum1+366;
        else
        sum1=sum1+365;
    }
    for(i=1;i<month;i++)
    {
        if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
        sum2=sum2+31;
        else if(i==4||i==6||i==9||i==11)
        sum2=sum2+30;
        else
        {
            if(year2%4==0&&year2%100!=0||year2%400==0)
            sum2=sum2+29;
            else
            sum2=sum2+28;
        }
    }
    sum=sum1+sum2;
    system("cls");
    printf("星期一  星期二  星期三  星期四  星期五  星期六  星期日\n");
    a=sum%7;
    for(i=1;i<=a;i++)
    {
        printf("\t");
    }
    if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
    day=31;
    else if(month==4||month==6||month==9||month==11)
    day=30;
    else
    {
        if(year2%4==0&&year2%100!=0||year2%400==0)
        day=29;
        else
        day=28;
    }
    for(i=1;i<=day;i++)
    {
        printf("  %2d    ",i);
        if((a+i)%7==0)
        printf("\n");
    }
return 0;
}

知识点总结:

1.for循环通常用于计数控制:用专门的循环变量来计算循环次数,循环变量的值在每次执行完循环体各语句后递增,达到预定的循环次数时则终止循环,继续执行循环结构后的语句。

2.增量运算符单独使用时,前缀形式和后缀形式的结果是一样的。增量运算符作为表达式的一部分时,前缀形式和后缀形式的执行过程是不一样的。

3.for语句中的表达式可以部分省略或者全部省略,但;不能省略。

实验总结:

1.循环体中应有使循环趋向于结束的语句。

2.无限循环中,通过在循环体中加break语句对循环进行控制。

3.循环的嵌套:1)三种循环可互相嵌套,层数不限。2)外层循环可包含两个以上内循环,但不能相互交叉。3)嵌套循环的执行流程:外层循环执行一次,内层循环要完成所有循环。

4.循环结构常见错误:1)循环语句中循环体复合语句时忘记加括号。2)循环开始前,未将计数器变量和变量和乘积变量初始化。

posted on 2016-11-10 22:04  赵婧文  阅读(309)  评论(3编辑  收藏  举报

导航