C语言循环重复实现求助:周数序列循环输出异常问题
实现日期数字循环输出的解决方案
你的需求是输入一个整数n,按顺序输出1到7循环的数字,总共有n个——比如输入3时输出1 2 3,输入10时输出1 2 3 4 5 6 7 1 2 3。现有代码的问题在于,当循环变量i超过7时,continue语句直接跳过了输出逻辑,导致后续数字无法打印。
问题分析
原代码里的if(i >7) continue;会让i=8、9、10这些值直接跳过printf,所以只输出到7就停止了。要实现1-7的循环重复,需要为每个i计算对应的循环数字,而不是跳过超出7的循环迭代。
解决方案:用取模运算实现循环
利用取模运算符%可以轻松实现循环计数逻辑。对每个循环变量i,对应的日期数字可以通过(i-1) %7 +1计算得到:
i=1时:(1-1)%7 +1 = 0+1=1i=7时:(7-1)%7 +1=6+1=7i=8时:(8-1)%7 +1=0+1=1i=10时:(10-1)%7 +1=2+1=3
修改后的代码如下:
#include <stdio.h> int main() { int n; scanf("%d", &n); for( int i = 1; i <= n; i++) { // 计算当前要输出的循环数字 int num = (i - 1) % 7 + 1; printf("%d ", num); } return 0; }
测试验证
- 输入3时,输出:
1 2 3 - 输入10时,输出:
1 2 3 4 5 6 7 1 2 3
完全符合需求。
内容的提问来源于stack exchange,提问作者Darwin Leonard
相关产品推荐
相关产品推荐

