黑马程序员技术交流社区

标题: a+aa+aaa类作业分享 [打印本页]

作者: 李言    时间: 2015-6-20 22:33
标题: a+aa+aaa类作业分享
//
//  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;
}
作者: aSmallStone    时间: 2015-6-21 21:34
这种不好想
作者: chaoyueshan    时间: 2015-6-21 21:55
确实不好想
作者: 小年轻不见了    时间: 2015-6-21 22:02
两层for循环实现
作者: 晗修    时间: 2015-6-21 22:06
似乎不对  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);
作者: aofex    时间: 2015-6-21 22:11
都是高手  
作者: 李言    时间: 2015-6-21 22:17
晗修 发表于 2015-6-21 22:06
似乎不对  num+ = a*cifang   比如  也就是a0000;  然后sum只是求了 aaaaaa...a 这个单项 而不是求和

这题 ...

可以的,num是第n位
sum是和
作者: 晗修    时间: 2015-6-21 22:24
李言 发表于 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
晗修 发表于 2015-6-21 22:24
那你num的位置可能放错了  至少你帖子里的位置是不对的 少一个循环的

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

你可以复制一下代码试一下嘛
作者: 晗修    时间: 2015-6-21 22:58
李言 发表于 2015-6-21 22:34
你可以复制一下代码试一下嘛

恩 ,是我错了
我以为是num = a*ciFang
是+=





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2