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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李言 中级黑马   /  2015-6-20 22:33  /  1481 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//
//  main.c
//  第十题
//
//  Created by 李言 on 15/6/20.
//  Copyright (c) 2015年 ly. All rights reserved.
//

#include <stdio.h>
/*
求S(n) = a+aa+aaa+aaaa+...+aa..a之值,其中a是一个数字,n表示a的位数例如:2+22+222+2222+22222(此时n=5),n和a都从键盘输入。
*/
int main(){
    int a, n, sum=0, i, j, ciFang = 1;
    printf("请输入a的值和n的值\n");
    scanf("%d%d", &a, &n);
    int num = 0;
    for(i=1; i<=n; i++){
        for(ciFang=1,j=1; j<=i-1; j++){
            ciFang *= 10;
        }
        num += a*ciFang;
        sum += num;
    }
    printf("%d", sum);
    return 0;
}

9 个回复

倒序浏览
这种不好想
回复 使用道具 举报
确实不好想
回复 使用道具 举报
两层for循环实现
回复 使用道具 举报
似乎不对  num+ = a*cifang   比如  也就是a0000;  然后sum只是求了 aaaaaa...a 这个单项 而不是求和

这题可以用迭代或者递归解,  
int sum = 0, an = 0;  //an是指每个单项
for (i = 1; i<=n;i ++){
an = 10*an+a;
sum+=an;
}
printf("%d", sum);
回复 使用道具 举报
都是高手  
回复 使用道具 举报
李言 中级黑马 2015-6-21 22:17:38
7#
晗修 发表于 2015-6-21 22:06
似乎不对  num+ = a*cifang   比如  也就是a0000;  然后sum只是求了 aaaaaa...a 这个单项 而不是求和

这题 ...

可以的,num是第n位
sum是和
回复 使用道具 举报
晗修 中级黑马 2015-6-21 22:24:46
8#
李言 发表于 2015-6-21 22:17
可以的,num是第n位
sum是和

那你num的位置可能放错了  至少你帖子里的位置是不对的 少一个循环的

cifang是求的10^(i-1)没错吧   然后 num和sum都第一个for循环之下 也就是 i的那个循环下面
sum= a*10^0+a*10^1+..+a*10^(n-1)  这不就是an么...你需要在外面再套一个循环
回复 使用道具 举报
李言 中级黑马 2015-6-21 22:34:00
9#
晗修 发表于 2015-6-21 22:24
那你num的位置可能放错了  至少你帖子里的位置是不对的 少一个循环的

cifang是求的10^(i-1)没错吧   然 ...

你可以复制一下代码试一下嘛
回复 使用道具 举报
李言 发表于 2015-6-21 22:34
你可以复制一下代码试一下嘛

恩 ,是我错了
我以为是num = a*ciFang
是+=
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马