目录
一、作业
题目1:计算对称数
输入一个整型数,判断是否是对称数,如果是,输出yes,否则输出no,不用考虑这个整型数过大,int类型存不下,不用考虑负值;
例如 12321是对称数,输出yes,124421是对称数,输出yes,1231不是对称数,输出no
思路:对输入数a调转顺序存入另一个变量b,判断a=b
int main() {
int a, c, b = 0;
scanf("%d", &a);
c = a;
while (a) {
b = b * 10 + a % 10;
a = a / 10;
}
if (c == b) {
printf("yes\n");
} else {
printf("no\n");
}
}
题2:计算阶乘
利用while或者for循环计算n!的值。
思路:循环中利用自增自减
//计算n的阶乘
int main() {
int n, total;
scanf("%d/n", &n); //输入n
for (n, total = 1; n != 0; n--) { // n自减相乘
total = total * n;
}
printf("%d\n", total);
}
题3:换钱
某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张,且每种票子至少一张。问:有几种换法?
思路:每种面值最少一1张,最多几张?for循环嵌套 if总面值=100,张数n=40,条件满足自增换法数,最终打印结果
思路:利用循环穷举
int main() {
int a, b, c, d, n = 0; //10元,5元,2元,1元张数,n种换法
for (a = 1; a < 7; a++) { //如果7张10元,剩下全换1元也才只有37张,不符要求
for (b = 1; b < 20; b++) {
for (c = 1; c < 40; c++) {
for (d = 1; d <40; d++) {
if (a + b + c + d == 40 && a * 10 + b * 5 + c * 2 + d == 100) {
n++;
}
}
}
}
}
printf("%d\n", n);
}