题目:通过函数求s=a+aa+aaa+…+aaa…a(0<a<10)共n项,最后 一项有n个a。如求s=2+22+222+2222。 在主函数中输入a和n,调用函数获得结果,在主函数中输出结果。如输入2,3结果为246。 #include <stdio.h> #include <stdlib.h> #include <math.h> void PutRes(void); int fun(int,int); int fun(int a,int n) { } int main(void) { int a,n,sum; printf(“Input a,n:”); scanf(“%d,%d”,&a,&n); sum =fun(a,n); printf(“\nResult =%d\n”,sum); PutResO; return 0; } void PutRes(void) { FILE *fpIn,*fpOut; int a,n; fpIn =fopen(“in07.dat”,“r”); if(fpIn == NULL) { printf(“File open error!”); exit(1); } fpOut = fopen(“out.dat”,“w”); if(fpOut ==NULL) { printf(“File open error!”); exit(1); } fscanf(fpIn,“%d,%d”,&a,&n); fprintf(fpOut,“%d”,fun(a,n)); fclose(fpIn); fclose(fpOut); }
时间: 2023-11-28 08:51:05 浏览: 95
计算Sn(求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值)
题目要求我们求s=a+aa+aaa+…+aaa…a(0<a<10)共n项,最后一项有n个a。我们可以通过字符串拼接的方式来求解。
我们首先定义一个变量cur表示当前项的值,初始值为a,然后定义一个变量sum表示累加和,初始值为0。在循环中,每次将cur加到sum中,然后将cur乘以10加上a,表示计算下一项的值,直到循环n次。最后返回sum即可。
代码如下:
```c
#include <stdio.h>
int fun(int a, int n) {
int cur = a, sum = 0;
for (int i = 1; i <= n; i++) {
sum += cur;
cur = cur * 10 + a;
}
return sum;
}
int main() {
int a, n, sum;
printf("Input a,n:");
scanf("%d,%d", &a, &n);
sum = fun(a, n);
printf("\nResult = %d\n", sum);
return 0;
}
```
如果要将结果输出到文件中,我们可以在主函数中调用PutRes函数,将结果写入文件中。PutRes函数中打开输入文件in07.dat,读入a和n,调用fun函数计算结果,然后将结果写入输出文件out.dat中。
代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int fun(int a, int n) {
int cur = a, sum = 0;
for (int i = 1; i <= n; i++) {
sum += cur;
cur = cur * 10 + a;
}
return sum;
}
void PutRes(void) {
FILE *fpIn, *fpOut;
int a, n;
fpIn = fopen("in07.dat", "r");
if (fpIn == NULL) {
printf("File open error!");
exit(1);
}
fpOut = fopen("out.dat", "w");
if (fpOut == NULL) {
printf("File open error!");
exit(1);
}
fscanf(fpIn, "%d,%d", &a, &n);
fprintf(fpOut, "%d", fun(a, n));
fclose(fpIn);
fclose(fpOut);
}
int main() {
int a, n, sum;
printf("Input a,n:");
scanf("%d,%d", &a, &n);
sum = fun(a, n);
printf("\nResult = %d\n", sum);
PutRes();
return 0;
}
```
阅读全文