C语言入门实战(10):取模问题

这是《C语言入门实战》系列的第10篇。
上一篇:C语言入门实战(9):完数判断


题目

爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。请问该阶梯至少有多少阶?请编程解决该问题。

要求

本程序无需输入,结果只输出一个整数即可。

参考代码

#include <stdio.h>
#include <stdlib.h>

/**
 * 根据题意,即是求最小的正整数n,满足 
 * n%2 = 1
 * n%3 = 2
 * n%5 = 4 
 * n%6 = 5
 * n%7 = 0
 */
int main(int argc, char *argv[]) {
	int i,j;
    //定义一个整型数组
	int a[4] = {2,3,5,6};
	for(i=1;;i++) {
        //从7的倍数开始找
		int n = i*7;
		int find = 1;
		for(j=0;j<4;j++) {
			if(n%a[j] != a[j]-1) {
				find = 0;
				break;
			}
		}
		if(find == 1) {
			printf("%d", n);//119
			break;
		}
	} 
	return 0;	
}

代码复盘

%是取模运算符,a%b即是求a/b的余数。
从7的倍数开始找(1倍,2倍,…),找到符合条件的第一个数打印答案,break跳出。
头文件stdio.h中声明的scanf()printf()是标准库中用于处理标准输入和输出的库函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值