题目描述: 求S=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5,a=2),a和n由键盘输入。
思路:C语言中一个简单的循环,循环次数、循环后的sum。每循环一次,a扩大10倍再加a。
while 循环结束后,输出sum。
具体代码如下:
#include<stdio.h>
int main()
{
int n,a,s = 0,t;
scanf("%d%d",&a,&n);//输入a和n。a是数字,n是表示这类数循环次数。
t = a;
while(n > 0) //n>0时一直循环
{
s+=t;
a = a*10; //循环一次 a乘10倍。
t = t + a; //t是每次循环时候加上去的数
n--; //循环一次,次数减一
}
printf("%d",s);
return 0;
常见的循环结构有三种:
for循环 while循环 do while循环。
此题中运用了while循环。
执行的顺序也是先执行初始条件语句,进入判断语句,如果为false则不进入循环,否则进入循环顺序执行。直到判断为false为止。
题目中while循环的条件是n>0,每循环一次n自减1,所以能循环n次。
(1)计算作为循环控制条件表达式的值,得到逻辑真或假,假定用M表示。
(2)若M为真,则执行了一遍循环体,否则离开循环,结束整个while语句的执行。
(3)循环体的所有语句执行结束后,自动转向第(1)步执行。