求S(n) = a+aa+aaa+aaaa+...+aa..a之值,其中a是一个数字,n表示a的位数例如:2+22+222+2222+22222(此时n=5),n和a都从键盘输入。(只有主要代码) 第一种我自己第一次做出的 void myway1(){ // 定义变量 int j,n,a; int c,b,S; // 提示用户输入 一个数 n a printf("提示用户输入 n a\n"); scanf("%d",&n); scanf("%d",&a); //给变量赋值 c = a,b = a,S = a; // 用for外层循环控制n个数相加 for (j =1;j<n;j++){ b *= 10; c += b; S += c; } // 输出S(n) printf("%d\n",S);
} 第二种 老师给的答案 void teacherway(){
// 定义变量 int a = 0,n = 0,temp = 1,k = 0,sum = 0; // 提示用户输入 a,n的值 printf("请输入a和n的值:\n"); scanf("%d%d",&a,&n); // for的外层循环实现 for (int i = 0;i < n ;i++){ k = a; temp = 1; // 累加思想 for(int j = 0;j < i; j++){ temp *=10; k += temp*a; } printf("k = %d\n",k); sum += k;
} printf("sum = %d\n",sum);
} 第三种采用递归
int producta(int n,int a){ int k = 0;
if(n == 1){ k = a; }else{ k = producta(n-1,a)*10 + a;
} return k; // 两个参数
} int main(int argc, const char * argv[]) { // 定义变量 int n = 0,a = 0; int k = 0,sum = 0; // 提示用户输入 变量 n 和 a printf("请输入 n 和 a :\n"); scanf("%d,%d",&n,&a); // 调用函数实现运算 for (int i = 1;i <= n;i++){ k = producta(i,a ); printf("k = %d\n",k); sum += k; } // 输出计算的结果 printf("sum = %d\n",sum);
return 0;
}
:victory:
|