A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

S(n) = a+aa+aaa+aaaa+...+aa..a之值,其中a是一个数字,n表示a的位数例如:2+22+222+2222+22222(此时n=5)na都从键盘输入。(只有主要代码)
第一种我自己第一次做出的
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:


评分

参与人数 1黑马币 +6 收起 理由
heavenyu + 6 很好,思维很好。

查看全部评分

2 个回复

倒序浏览
楼主的方法不错 学习了
回复 使用道具 举报
递归玩的6,真心懂了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马