秦九域 发表于 2019-11-12 01:04:47

请问一下这个编程要怎么写,因为我是萌新,求尽量简单一些,复杂害怕看不懂。

求sn=a+aa+aaa+......+aa..a(n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222   此时n=5,n又键盘输入。

jackz007 发表于 2019-11-12 01:40:17

本帖最后由 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 08:56:06

本帖最后由 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>

秦九域 发表于 2019-11-13 00:16:56

谢谢啦,懂啦

秦九域 发表于 2019-11-13 00:17:36

bin554385863 发表于 2019-11-12 08:56
根据观察
a(n) = ((pow(10 , n)-1) / 9) * a。
上班中写个伪代码:


虽说不咋懂,但也谢谢啦

bin554385863 发表于 2019-11-13 00:53:11

秦九域 发表于 2019-11-13 00:17
虽说不咋懂,但也谢谢啦

用数学方程表示就是
f(x) = a * ( 10 ^ x - 1 ) / 9;
a 为基数

秦九域 发表于 2019-11-17 00:40:29

bin554385863 发表于 2019-11-13 00:53
用数学方程表示就是
f(x) = a * ( 10 ^ x - 1 ) / 9;
a 为基数

嗯呢
页: [1]
查看完整版本: 请问一下这个编程要怎么写,因为我是萌新,求尽量简单一些,复杂害怕看不懂。