TianC_Wen 2017-11-20 15:44 采纳率: 50%
浏览 1013
已采纳

C语言初学者,一个小小的编程题目求答疑

如图一所示的C语言编程题图片说明
起初我没有用函数来做,编译运行时,有几组数的结果没有输出(空白)。(貌似是有第4和6组)
当我把计算骰子点数的内容做成函数内容后,就成功了。我想知道我那个没用函数的方法是哪里出了问题。还是有漏掉了什么细节。没用函数和用了函数的代码如下。谢谢解答!

#include<stdio.h>
int main(void)
{
    unsigned int a[200],b[200];
    int sum1=0;
    int sum2=0;
    int n;
    int i=1;
    int j=1;
    int m1,m2;
    int m;
    int num1,num2;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    scanf("%u%u",&a[i],&b[i]);
    for(j=1;j<=n;j++)
    {   sum1=sum2=0;
        while(a[j]!=0){
        num1=a[j]%10;
        a[j]/=10;
        sum1+=num1;}
        while(b[j]!=0){
        num2=b[j]%10;
        b[j]/=10;
        sum2+=num2;}
        m1=sum1%6+1;
        m2=sum2%6+1;
        m=m1+m2;
        if((m==7)||(m==11))
            printf("success!\n");
        else if((m==2)||(m==3)||(m==12))
            printf("fail!\n");
        else
        {
            a[j]++;
            b[j]++;
            while(a[j]!=0)
            {   sum1=sum2=0;
                while(a[j]!=0){
                num1=a[j]%10;
                a[j]/=10;
                sum1+=num1;}
                while(b[j]!=0){
                num2=b[j]%10;
                b[j]/=10;
                sum2+=num2;}
                m1=sum1%6+1;
                m2=sum2%6+1;
                if((m1+m2)==m)
                {
                    printf("success!\n");
                    a[j]=0;
                }
                else if ((m1+m2)==7)
                {
                    printf("fail!\n");
                    a[j]=0;
                }
                else
                {
                    a[j]++;
                    b[j]++;
                }
             }
         }
    }
    return 0;
}

 #include<stdio.h>
int sum(int a,int b);
int main(void)
{
    unsigned int a[200],b[200];
    int n;
    int i=1;
    int j=1;
    int m;
    int S;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    scanf("%u%u",&a[i],&b[i]);
    for(j=1;j<=n;j++)
    {
        m=sum(a[j],b[j]);
        if((m==7)||(m==11))
            printf("success!\n");
        else if((m==2)||(m==3)||(m==12))
            printf("fail!\n");
        else
        {
            a[j]++;
            b[j]++;
            while(a[j]!=0)
            {
                S=sum(a[j],b[j]);
                if (S==m)
                {
                    printf("success!\n");
                    a[j]=0;
                }
                else if (S==7)
                {
                    printf("fail!\n");
                    a[j]=0;
                }
                else
                {
                    a[j]++;
                    b[j]++;
                }
             }
         }
    }
    return 0;
}

int sum(int a,int b)
{   int m1,m2;
    int m;
    int num1,num2;
    int sum1,sum2;
        sum1=sum2=0;
        while(a!=0){
        num1=a%10;
        a/=10;
        sum1+=num1;}
        while(b!=0){
        num2=b%10;
        b/=10;
        sum2+=num2;}
        m1=sum1%6+1;
        m2=sum2%6+1;
        m=m1+m2;
        return m;
}

  • 写回答

2条回答

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 react native ios端amap问题
      • ¥15 fortran95中5个学生分不同学号求数学语文英语计算机四门课程的每名学生的平均分以及名次以及单科成绩的平均分
      • ¥30 excel vba 执行从 1 到 100 的乘法。执行结果保存成二维数组
      • ¥15 数字电子技术基础设计实验
      • ¥15 ue5运行非常卡顿,是电脑配置原因吗
      • ¥50 有没有大佬看一下关于思科的这道题怎么做
      • ¥30 求十字路口交通灯S7-200plc,今天早上八点前。
      • ¥20 如何用智能手表oppowatch3实现个人热点功能
      • ¥15 运营商打开wanpush会有怎么样的危害
      • ¥15 Java编程题,定义一个时钟