问答详情
源自:4-13 使用for循环打印9×9乘法表

结果没问题,然而代码和标准结果不一样,不让过,哈哈!

#include <stdio.h>
int main() 
{ 
    // 定义相乘数字i,j以及结果result
    int i, j, result;
    /*
     * 使用for循环解决本题相对简单哦~
     * 小编偷偷的将源码放在任务“不会了怎么办”中了哦~
     * 小编希望童鞋们独立完成哦~
     */
    for(i=9;i>0;i--)
    {    for(j=1;j<=i;j++)
            printf("%d * %d = %d\t",i,j,i*j);
        printf("\n");
    }
    
    return 0;
}



提问者:白腿小隼熊猫鸟 2019-02-18 21:20

个回答

  • 慕前端639677
    2019-07-05 11:35:34

    用的是什么吃软件啊   想要

  • 白腿小隼熊猫鸟
    2019-02-22 22:26:51

    //如果是1月的话,那么day的值是多少,那就是一年中的第多少天,没必要再去找之前有几个月
    //用month的值减去1,就得到了month的前面有多少个月,代入switch去累加本月的day前面的天数
     switch(month-1)
        {
            case 11:day+=30;//month是12月,那么前面就有11个月,11月本身是30天
            case 10:day+=31;//month是12月,那么前面就有10个月,10月本身是31天,以此类推
            case 9:day+=30;//没有break;所以程序运行本case之后,下面的所有还会运行一遍,这样就累加起来了
            case 8:day+=31;
            case 7:day+=31;
            case 6:day+=30;
            case 5:day+=31;
            case 4:day+=30;
            case 3:day+=31;
            //现在的公历历法关于闰年的规定是能被4整除但不能被100整除,或者能被400整除。
            //最早的公历历法关于闰年的规定是能被4整除——了解一下即可,不是本题意思。
            case 2:if((year%4==0 && year%100) || year%400==0)
                                day+=29;
                          else
                                day+=28;
            case 1:day+=31;
        }
        printf("2008年8月8日是该年的第%d天",day);


  • qq_狗活_twEPQW
    2019-02-22 21:26:58

    emm,看运行结果那里的英文好像可以勉强猜出错误。可以叫你大佬吗,一下就学到6去了,我还在4.可以帮我看看我的代码哪错了吗、(这是4-17求2008年8月8日是这一年的第几天的代码,你可以复制帮我看下吗,为什么我是254。。)


    #include <stdio.h>
    int main()
    {
        /* 定义需要计算的日期 */
        int year = 2008;
        int month = 8;
        int day = 8;
        int j;
        /*
         * 请使用switch语句,if...else语句完成本题
         * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
         * 小编还是希望大家独立完成哦~
         */for(j=1;j<month;j++){
            switch(month){
            case 1:day=day+31;break;
            case 2:break; 
            case 3:day=day+31;break;
            case 4:day=day+30;break;
            case 5:day=day+31;break;
            case 6:day=day+30;break;
            case 7:day=day+31;break;
            case 8:day=day+31;break;
            case 9:day=day+30;break;
            case 10:day=day+31;break;
            case 11:day=day+30;break;
            case 12:day=day+31;break;
            }
         }
        
         int i;
            i=year%4==0&&year%100!=0;
        
         if(i==1) {
             printf("是该年中的第%d天",day=day+29);
         }
            else {
                printf("是该年的第%d天",day=day+28);
            }
       
     return 0;
    }

  • 白腿小隼熊猫鸟
    2019-02-22 20:53:39

    找到原因了。原来是自动检查里,要求输出的样式必须是"%d*%d=",数字和*号之间不能有空格。嗯,好吧。

  • qq_狗活_twEPQW
    2019-02-21 20:02:57

    emm不是说for后面不用分号吗,分号当执行体又是什么意思。而且你不打{}如果系统把printf("\n");也识别到子循环里面去了,那不就子循环循环一次就换行了,不懂。。。

  • 白腿小隼熊猫鸟
    2019-02-21 19:45:11

    谁说for循环后面的代码必须有大括号{}呢?有代码就可以了,甚至就算是一个光秃秃的分号也符合语法。

    后面的\t是水平制表符,相当于是按一下tab键。

  • qq_狗活_twEPQW
    2019-02-21 11:24:58

    你这第二个for后面没有{},怎么可能循环printf,而且\t是什么东西,看不懂