在练习pta题目的时候有两个编了两个程序老是错 求指点

zxczxc233 2017-08-14 09:35:56
习题2.3 数列求和-加强版 (20分)
给定某数字AA(1\le A\le 91≤A≤9)以及非负整数NN(0\le N\le 1000000≤N≤100000),求数列之和S = A + AA + AAA + \cdots + AA\cdots AS=A+AA+AAA+⋯+AA⋯A(NN个AA)。例如A=1A=1, N=3N=3时,S = 1 + 11 + 111 = 123S=1+11+111=123。

输入格式:

输入数字AA与非负整数NN。

输出格式:

输出其NN项数列之和SS的值。

输入样例:

1 3
输出样例:

123

---------------------------------------------
#include <stdio.h>
int main ()
{
long int S=0;
int i,A,N,T=0;

scanf("%d %d",&A,&N);
for (i=0;i<N;i++;)
{
A=A*10+A;
S+=A;
}
printf("%ld",S);

return 0;
}



输入1 3的时候不是123而是133 分析不出哪步错了。。。
...全文
344 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jena_wy 2017-08-17
  • 打赏
  • 举报
回复
#include <stdio.h> int main () { long int S=0; int i,A,N,T=0,b; scanf("%d %d",&A,&N); for(i=0;i<N;i++) { if(i==0) b = 1; else b=b*10+A; S+=b; } printf("%ld",S); getchar(); return 0; }
kugeniha 2017-08-15
  • 打赏
  • 举报
回复
#include <stdio.h> int main () { long int S=0; int i,A,N,T=0; scanf("%d%d",&A,&N); for (T=A,i=0;i<N;i++) { S+=T; T=T*10+A; } printf("%ld",S); return 0; }
自信男孩 2017-08-15
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <math.h>

int main ()
{
    long int S=0;
    int i,A,N, tmp = 0;

    scanf("%d%d",&A,&N);
        tmp = A;
        S += tmp;
    if (N >= 2 && N < 10) {
        printf("S = %d + ", tmp);
        for (i = 1; i < N - 1; i++) {
            tmp = A * pow(10, i) + tmp;
            printf("%d + ", tmp);
            S += tmp;
        }
        tmp = A * pow(10, i) + tmp;
        S += tmp;
        printf("%d = %ld\n", tmp, S);
    } else if (N == 1) {
        printf("S = %d = %ld\n", tmp, S);
    }

    return 0;
}
注意分析问题的逻辑,上面的代码作为一个参考吧
TL_away 2017-08-15
  • 打赏
  • 举报
回复
PTA今天好像就关闭了
TL_away 2017-08-15
  • 打赏
  • 举报
回复
第一个题目你写的有问题
zxczxc233 2017-08-14
  • 打赏
  • 举报
回复
还有本题要求实现一个对数组进行循环左移的简单函数:一个数组aa中存有nn(>0>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移mm(\ge 0≥0)个位置,即将aa中的数据由(a_0 a_1 \cdots a_{n-1}a ​0 ​​ a ​1 ​​ ⋯a ​n−1 ​​ )变换为(a_{m} \cdots a_{n-1} a_0 a_1 \cdots a_{m-1}a ​m ​​ ⋯a ​n−1 ​​ a ​0 ​​ a ​1 ​​ ⋯a ​m−1 ​​ )(最前面的mm个数循环移至最后面的mm个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? 输入格式: 输入第1行给出正整数nn(\le 100≤100)和整数mm(\ge 0≥0);第2行给出nn个整数,其间以空格分隔。 输出格式: 在一行中输出循环左移mm位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。 输入样例: 8 3 1 2 3 4 5 6 7 8 输出样例: 4 5 6 7 8 1 2 3 ------------------------------------------------- #include <stdio.h> int swap (int n[],int m,int l); int main() { int n[100]; int l,m,i; scanf("%d %d",&l,&m); for (i=0;i<l;i++) scanf("%d",&n[i]); swap(n,m,l); return 0; } int swap(int n[],int m,int l) { int i,t,j; for (i=0;i<m;i++) for (j=l;j>0;j--) { t=n[l-1]; n[l-1]=n[l-2]; n[0]=t; } for (i=0;i>l;i++) printf("%d",n[i]); return 0; } 不出结果呀怎么

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧