统计一段时间内星期X的个数,0---6代表周日至周六 输入

统计一段时间内星期X的个数,0---6代表周日至周六
输入
整数n,表示下面有n行数据
每行数据包括a、b、c三个数,表示第1天是星期a,求连续b天内,有多少个星期c。
例如:3 、100、 4,相当于问从星期三开始的100天内有几个星期四
输出
每行一个答案

可以采取循环计算。

代码如下:


#include <stdio.h>

int main(void){
    
    int n,a,b,c,nums;
    // 从输入获取各数据项 
    scanf("%d",&n);
    
    int j=0;
    while(j<n){  // 总共测试n组数据 
        scanf("%d%d%d",&a,&b,&c);
    
        nums=0;   // 当前组数据共有几个星期几的次数初始化为0 
        int i=a;  // 第一天设置为开始星期几 
        while(i<(a+b)){  // 循环完指定天数b结束 
            
            if((i%7)==c){  // 如果当前星期等于 指定星期c,则计数+1 
            //    printf("i=%d,i%7==%d,b+a=%d,c=%d\n",i,i%7,b+a,c); 
                nums++;    
            }
            i++;
            
        } 
        
        // 打印结果 
        printf("%d\n",nums);
        j++;
    }
    
    
    
    return 0;
    
} 

img

n=(b + (c-a)%7) // 7

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7546833
  • 这篇博客你也可以参考下:C语言100题之第一题及变式:四个数字分别为1,2,3,4,能组成多少个互不相同且无重复数字的三位数,它们分别是什么?
  • 除此之外, 这篇博客: C语言每日一练——第25天:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?中的 代码实现 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include <stdio.h>
    
    #define INTEGER_RANGE  1000000000  //数字范围
    
    int if_complete_square_number(int num);
    
    
    int main()
    {
        int cnt = 0;
        for(int i = 0; i < INTEGER_RANGE; i++)
        {
            if((if_complete_square_number(i + 100)) == 1)
            {
                if(if_complete_square_number(i + 268) == 1)
                {
                    cnt++;
                    printf("这个数为:%d\n", i);
                }
            }
        }
        if(cnt == 0)
            printf("不存在满足条件的数字\n");
        return 0;
    }
    
    
    /**
     * @brief 判断一个数是否是完全平方数
     * @param num
     * @return 0:不是; 1:是
     */
    int if_complete_square_number(int num)
    {
        int tmp = 0;
        int i = 0;
        if(num < 0)
            return 0;
        tmp = num % 10; //获取个位数
        if(tmp != 0 && tmp != 1 && tmp != 4\
                && tmp != 5 && tmp != 6 && tmp != 9)
            return 0; //个位数不是0,1,4,5,6,9,
        for(i = 0; i < num; i++)
        {
            if(num == i * i)
                return 1;
        }
        return 0;
    }
    
    

  • 以下回答由chatgpt基于相关博客总结生成:

    我能够根据提供的参考资料对问题进行完整的回答:

    问题: 请问您需要优化问题的具体内容还是需要我帮您构建一个新的问题?如果您需要优化原问题,可以说明一下哪些地方需要修改或者添加描述信息。如果您需要我帮您构建一个新的问题,可以告诉我您具体需要求解的内容和相关信息,我将帮您构建一个更加准确、清晰的问题描述。

    你提供的参考资料中并没有包含一个完整的问题描述,它由多段代码构成,提供的都是一些函数的实现或者平台的输入输出样例,因此我无法对问题进行回答。如果你能够提供一个需要解决的问题描述,我将会根据这个问题描述来回答你的问题。