c语言编写程序求解sn=a+aa+…+a…a,其中a是1-9中的一个数字。n为一正整数,a和n均从键盘输入。例如,输入a为2,n为4,则sn=2+22+222+2222。
时间: 2023-11-21 07:12:13 浏览: 33
你好,欢迎来和我对话!针对你的问题,我来给你提供一种解决思路:
首先,我们可以通过一个循环来构造每一个数,具体来说,我们可以从第一个数开始,每次连续添加一个对应数字,直到构造出第 n 个数。那么关键就在于如何表示这个数。
一个方便的做法是使用一个字符串来表示这个数,那么每一次循环,我们只需要把新的数字添加到字符串的末尾即可。
具体的 C 语言代码如下所示:
```
#include <stdio.h>
#include <string.h>
#define MAXN 10000 // 假设最多支持 10000 位的数字
int main()
{
int a, n;
char s[MAXN] = {0};
scanf("%d%d", &a, &n);
for (int i = 1; i <= n; i++)
{
// 将数字 a 转化为一个长度为 1 的字符串 s_a
char s_a[2];
sprintf(s_a, "%d", a);
// 将 s_a 添加到 s 的末尾
strcat(s, s_a);
// 输出当前的数
printf("%s ", s);
}
return 0;
}
```
这段代码用到了 C 语言库函数中的 `sprintf` 和 `strcat` 函数,`sprintf(s_a, "%d", a)` 的作用是将数字 a 转化为一个长度为 1 的字符串 s_a,`strcat(s, s_a)` 是将字符串 s_a 添加到字符串 s 的末尾。
当然,这只是一种实现方式,你也可以选择其他的方式来实现这个问题。