📄 ʵ
字号:
1.输入一个整数,计算并显示该整数各位数字之和。
2.找出同时被2、3、5整除,并余1的最小10个数。
第1题的关键是解决将一个整数分解成各位数字,然后累加起来。在该题中首先要考虑有什么输入?其次是如何处理输入的数据?最后考虑有什么输出?
第一个问题:从题干上就可以看出来,需要输入一个整数,在程序中当然要定义一个变量来存放它,如用变量 n 存放,用scanf函数在运行时从键盘输入;另外要一个变量来存放各位数字的和,如定义为 sum 变量,应赋初值为 0 ;变量的类型可以定义为整型及其扩展的整型类型。
第二个问题:有多种方法来处理。万变不离其宗,主要要用取余和整除的方法。
法一:循环处理
while(n!=0)
{
sum=sum+n%10; /*将n的个位数累加到sum变量中*/
n=n/10; /*去掉n的个位数*/
}
法二:非循环处理(需要多定义5个变量,每个变量存放1位数,int型或 unsigned int型最多5位)
a= n%10; /*取出个位数字存入变量a*/
b= n/10 % 10; /*取出百位数字存入变量b*/
c= n/100 % 10;
d= n/1000 % 10;
e= n/10000 % 10;
sum=a+b+c+d+e;
法二具有局限性,只能处理5位以内的整数,而法一就比较具有通用性。
第三个问题:输出sum变量的值就行了。
所以一个完整的程序如下(仅供参考):
main()
{
int n,sum=0;
printf("Please input n(integer):"); /*提示输入的语句,原样显示*/
scanf("%d",&n); /*完成输入的语句*/
while(n!=0)
{
sum=sum+n%10;
n=n/10;
}
printf("\n The sum is %d \n",sum);
}
第2题要判定一个数如n能够同时被2、3、5整除并余1可以用一个逻辑表达式来表式: n%2==1&&n%3==1&&n%5==1 , 而这个被除数的下限是从1开始,而上限不知道,但确定只要找到10个符合这样的条件的数就够了。所以用条件型循环比较适合。具体参考程序如下:
main()
{
int n=1,count=0; /*count 是计数器,用来计数找到符合条件数的个数*/
while(count<10)
{
if(n%2==1&&n%3==1&&n%5==1)
{
printf("%-8d",n);
count++;
}
n++;
}
printf("\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -