题目:
思路:首先,我们得生成1~2019之间的数字,其次再通过各个位数来比较是否等于9,若等于,则记录一次,反之,不记录。
代码演示:
注意:我第一次写的时候写成了while循环的样子,这个就会运行超时。
?
#include <stdio.h>
int main()
{
int count = 0;
for(int i = 1; i<= 2019; i++)
{
while(i)
{
i % 10 = 9;
count++;
i /= 10;
}
}
printf("%d\n",count);
return 0;
}
?
上面这个代码会运行超时,但是有一点我不明白,我在VS2022上运行半天居然没结果,好奇怪?希望大家可以帮我解答一下。
题目:
思路:首先,定义一个变量代表小乐乐班上的总人数,再定义三个变量代表三个科目,再输入三个变量的值,我们可以再输入三个变量的时候就开始计算它们的平均数,再判断是否大于60,最后再输出被叫家长的人数。(如果我们不在输入时,计算它们的平均数,而是在后面去计算的话,就会导致计算的复杂。并且,我们在后面来计算的时候,就要先把前面的数据储存起来,那么就还要定义一个数组来储存这些数据,并且还要用循环来解决,可能也会导致运行不通过,所以我们选择在输入时计算,而且还不需要储存起来。)
?代码演示:
题目:
思路:首先,我们要输入多组数据(m和n两个值),?其次题目要求输出的水仙花数必须大于等于m,并且小于等于n。如果有多个,则要从小到大排序,从前面这句话,我们就可以得出肯定需要一个循环来生成m~n之间的数字,在看看是否为水仙花数,若是则打印,而那个从小到大,我们也已经满足了(使循环产生的数字就是从小到大),最后题目要求如果在m~n之间没有水仙花数,就要打印no,这个其实也是比较好判断的,题目要求是在m~n之间,看看有无水仙花数,那么我们就在这个范围来判断,如果在该范围内什么也没有打印,那么就说明没有水仙花数,这肯定是要在循环外面的。😀其实,我们忽略了水仙花数的的判断(个位的立方加上十位的立方加上百位的立方等于原来的那个数,就是了)
代码演示:
注意一下:count为什么是1呢?因为for循环两边都取了等号,就相当于是总共循环了n-m+1次(这个其实是根据数学里的数列公式来的,项数=末项-首项+1,而平时我们都是写小于n,现在是小于等于n,其实就是n与n-1的差别),所以我们的count最后就变成了n-m+1,而我们最后算的是n-m+1,因此要等于的话要么count-1,要么n-m的值在加1。