请问一下这个编程要怎么写,因为我是萌新,求尽量简单一些,复杂害怕看不懂。
求sn=a+aa+aaa+......+aa..a(n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222 此时n=5,n又键盘输入。本帖最后由 jackz007 于 2019-11-12 01:56 编辑
#include<stdio.h>
int main(void)
{
int a , b , k , n , sn ;
printf("请输入 a 和 n : ") ;
scanf("%d%d" , & a , & n) ;
if(a > 0 && a < 10 && n > 0 && n < 10) {
for(sn = 0 , b = 0 , k = 0 ; k < n ; k ++){
b = b * 10 + a ;
sn += b ;
}
printf("sn = %d\n" , sn) ;
}
return 0 ;
}
编译、运行实况:
C:\Bin>g++ -o x x.c
C:\Bin>x
请输入 a 和 n : 1 8
sn = 12345678
C:\Bin>x
请输入 a 和 n : 2 6
sn = 246912
C:\Bin>x
请输入 a 和 n : 5 5
sn = 61725
C:\Bin> 本帖最后由 bin554385863 于 2019-11-12 12:03 编辑
根据观察
a(n) = ((pow(10 , n)-1) / 9) * a。
上班中写个伪代码:
int sum = tmp = a =n = 0;
for (i = 0; i <= n; i++)
{
tmp=((pow(10 , i)-1) / 9);
sum += tmp;
}
printf("%d", a * sum);
完整代码
#include <stdio.h>
#include <math.h>
/*求sn=a+aa+aaa+......+aa..a(n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222 此时n=5,n又键盘输入。
a(n) = ((pow(10, n) - 1)/9)*a, sum += a(n).
*/
typedef size_t sz;
int main(int argc, char *argv[])
{
int a = 0, n = 0, sum = 0, tmp = 0;
while (1)
{
sum = 0;
printf("请输入基数和最大位数以空格隔开\n");
scanf("%d%d", &a, &n);
if (a <= 0 || n <= 0) //如果a或n有一个是小于等于0则结束循环
{
printf("程序结束\n");
break;
}
for (sz i = 0; i <= n; i++)
{
tmp = (pow(10, i) - 1) * a / 9;
sum += tmp;
}
printf("%d\n\n", sum);
}
return 0;
}
-------------------------------------------------------------------------------------------------
Microsoft Windows [版本 10.0.18363.418]
(c) 2019 Microsoft Corporation。保留所有权利。
E:\Users\admin\Documents\VScode>c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-ucfax24e.z3j --stdout=Microsoft-MIEngine-Out-1m0jhfgs.gh0 --stderr=Microsoft-MIEngine-Error-dd3ihwpz.blm --pid=Microsoft-MIEngine-Pid-by1kxg0o.ltk --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi
请输入基数和最大位数以空格隔开
1 9
123456789
请输入基数和最大位数以空格隔开
1 4
1234
请输入基数和最大位数以空格隔开
1 2
12
请输入基数和最大位数以空格隔开
0 0
程序结束
E:\Users\admin\Documents\VScode> 谢谢啦,懂啦
bin554385863 发表于 2019-11-12 08:56
根据观察
a(n) = ((pow(10 , n)-1) / 9) * a。
上班中写个伪代码:
虽说不咋懂,但也谢谢啦
秦九域 发表于 2019-11-13 00:17
虽说不咋懂,但也谢谢啦
用数学方程表示就是
f(x) = a * ( 10 ^ x - 1 ) / 9;
a 为基数 bin554385863 发表于 2019-11-13 00:53
用数学方程表示就是
f(x) = a * ( 10 ^ x - 1 ) / 9;
a 为基数
嗯呢
页:
[1]