C 语言教程 在线

1720c-exercise-example18

参考方法:

#include <stdio.h>

int main(){
    int sum=0,a,n,temp;
    while(scanf("%d%d",&a,&n)!=EOF){
        temp=a;
        while(n--){
            sum+=temp;
            temp=temp*10+a;
        }
        printf("sum=%d\n",sum);
    }

    return 0;
}

1719c-exercise-example18

参考方法:

#include<stdio.h>
long N_A(int a,int n);
int main(void)
{
    int a,n;
    printf("请输入 a 和 n:\n");
    scanf("%d%d",&a,&n);
    printf("a+aa+...=%ld",N_A(a,n));
    return 0;
}

long N_A(int a,int n)
{
    long sum = 0;
    long temp = a;
    while(n)
    {
        sum += temp;
        temp = temp*10 + a;
        n--;
    }
    return sum;
}

1718c-exercise-example18

参考方法:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//给数组分配动态内存
int *get_number(int all){
    int *temp_number = NULL;
    //分配空间
    temp_number = (int *)malloc((all + 1) * sizeof(int));
    if (temp_number == NULL)
    {
        fprintf(stderr, "temp_number malloc err\n");
        return NULL;
    }
    //初始化
    memset(temp_number, 0, (all + 1) * sizeof(int));
    return temp_number;
}

//释放分配空间
void free_number(int *number){
    if (number == NULL)
    {
        return;
    }
    free(number);
    number = NULL;
    return;
}
int main(void){
    int all = 0, num = 0;
    int count = 0;
    int s = 0;
    int *number = NULL;
    printf("几个数相加?什么数?\n");
    scanf("%d %d", &all, &num);
    number = get_number(all);

    for (count = 0; count < all; count++)
    {
        number[count] += num;
        s += number[count];
        number[count + 1] = number[count] * 10;
    }
    number[all] = '\0';
    
    for (count = 0; count < (all - 1); count++)
    {
        printf("%d + ", number[count]);
    }
    printf("%d = %d\n", number[count], s);
    free_number(number);
    return 0;
}

1717c-exercise-example18

参考代码:

思路:利用了数列的一些找规律的方法

#include<stdio.h>
#include<math.h>
//将计算过程分到了两个函数,其实可以合并,很简单
double f16_step1(int number,int n){
    int i=0;
    double temp1=number/9.0;//计算中间转换分数
    double temp2=(pow(10,n)-1)*temp1;
    printf("%lf\t",temp2);
    return temp2;
}
void f16_step2(int number,int n){
    int i;
    double sum=0;
    for(i=1;i<=n;i++){
        sum+=f16_step1(number,i);    
    }
    printf("sum=%lf\n",sum);
}
//在主函数中调用f16_step2()即可,修改一下输入和输出,让代码更友好

int main() {
    f16_step2(2,5);
}

1716c-exercise-example18

参考方法:

#include<stdio.h>
#include<math.h>

int main()
{
    int i, a, n, sum=0;
    printf("请输入 a 和 n:\n");
    scanf("%d%d", &a, &n);
    for(i=0; i<n; i++)
    {
        sum += a*pow(10, i)*(n-i);
    }
    printf("sum is %d\n", sum);
    return 0;
}