c语言练习题望解答。

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/365535877646153.jpeg "#left"

望各位告诉解题思路,是不是把每位数提出来相加,用取余

测试图:

img


以下代码思路,供题主参考(划重点,重点是思路,而不是复制粘贴解决问题):

#include<stdio.h>

int main(){
    int n,m,i,sum=0,result=0;
    
    printf("请输入a的值:");
    scanf("%d",&m);
    
    while(m>9||m<1){
        printf("a的值必须在1到9之间!\n\n");
        printf("请输入a的值:");
        scanf("%d",&m);
    }
    
    printf("请输入n的值:");
    scanf("%d",&n);
    
    while(n>9||n<1){
        printf("n的值必须在1到9之间!\n\n");
        printf("请输入n的值:");
        scanf("%d",&n);
    }
    
    for(i=n;i>=1;i--){
        result=result*10+m;
        sum+=result;
    }
    
    printf("aa...aa-aaaaa-aaaa-...-aa-a=%d\n",result*2-sum); //因为都是负数相加,那么最后一个数是减(最大的那个数),故必须加上最后一个数的2倍
    
    return 0;
}

希望对题主有所帮助,可以的话,帮忙点个采纳!

这个感觉可以直接算吧,从a开始,依次乘十加a,把后面要减的全部加起来,最后由n-1个a得到n个a,再相减就行了,完成后也可以试试n上限到100该怎么计算。

代码发一下

我的解题思路就是把a转换成相同的字符,然后以n为数量扩展成字符串,再在for循环字符串每次用memcpy拷贝一个新的短字符串,然后转成整形运算。