C 为什么我的;至于;循环只运行两次?

C 为什么我的;至于;循环只运行两次?,c,for-loop,while-loop,breakpoints,C,For Loop,While Loop,Breakpoints,我的任务是输入5个5位数的随机数,压缩它们并得到它们的和。那么我们如何压缩它们呢?我们去掉了第二个和第四个数字。例如12345到10305 这是我的密码 int main() { int n=5,i,j,number5,num1,num3,numb5,sum; for(i=0;i<n;i++) // 5 times we read next for loop right ? for(j=0;j<i;j++){ // this loop read 5 t

我的任务是输入5个5位数的随机数,压缩它们并得到它们的和。那么我们如何压缩它们呢?我们去掉了第二个和第四个数字。例如12345到10305

这是我的密码

int main()
{
    int n=5,i,j,number5,num1,num3,numb5,sum;
    for(i=0;i<n;i++) // 5 times we read next for loop right ?
        for(j=0;j<i;j++){ // this loop read 5 times 5 digits number 
            scanf("%d",&number5); // scanf 1 number
            while(number5){ // while number isn't 0 ( false )
                num1=number5/10000;
                num1*=10000;
                num3=(number5%10000)%1000/100;
                num3*=100;
                numb5=(number5%10000)%1000%100%10; 
                numb5*=1;// mathematic operations to get to 1st third and 5th number
                number5=0; // set the number5 to 0 so we can go out of while right ?
            }
            sum=num1+num3+numb5; // we get the sum of the first 5 digits and we get it on the second when j++ right ?

        }
         printf("%d",sum);// on the end of all five number with 5 digits we get the sum right ?
}
intmain()
{
int n=5,i,j,数字5,num1,num3,num5,和;

因为(i=0;i你真的想得太多了

int n;

for(int i=0; i < 5; ++i)
{
    // read first number eg 12345
    scanf("%d",&n);
    int d1 = n % 10;    // ones place = 5
    n /= 100;           // n becomes 123
    int d100 = n % 10;  // hundreds place = 3
    n /= 100;           // n becomes 1
    int d10000 = n % 10;    // ten thousands place = 1

    int smallSum = 100*d10000 + 10*d100 + d1;
    // prints 135 
    printf("sum version 1 = %d\n", smallSum); 

    int bigSum = 10000*d10000 + 100*d100 + d1;
    // prints 10305
    printf("sum version 2 = %d\n",bigSum);     
}
intn;
对于(int i=0;i<5;++i)
{
//读第一个数字如12345
scanf(“%d”和“&n”);
int d1=n%10;//一个位置=5
n/=100;//n变为123
int d100=n%10;//百位=3
n/=100;//n变为1
int d10000=n%10;//万位=1
int smallSum=100*d10000+10*d100+d1;
//印刷品135
printf(“总和版本1=%d\n”,smallSum);
int bigSum=10000*d10000+100*d100+d1;
//印刷品10305
printf(“总和版本2=%d\n”,bigSum);
}

.

只需制作
j我在片段中提到的错误是唯一的问题,其余一切都很好。
请参阅附件中的代码片段

// only two loops are required    
for(int i=0;i<5;i++){
    scanf("%d",&number5);
    sum=0;
    while(number5){ 
            num1=number5/10000;
            num1*=100;//it should be 100 isntead of 10000
            num3=(number5%10000)%1000/100;
            num3*=10;// it should be 10 istead of 100
            numb5=(number5%10000)%1000%100%10; 
            numb5*=1;
            number5=0; 
        }
    sum=num1+num3+numb5; 
    printf("%d\n",sum);
}
//只需要两个循环
对于(int i=0;i
#包括
#包括
int main()
{
int n=5,i,j,数字5,num1,num3,num5;
整数和=0;

for(i=0;iCompress?它是什么意思?@EugeneSh.OP表示删除数字。“Compress”在这里不是正确的词。为什么
j语句
numb5=(number5%10000)%1000%100%10;
在数学上与
numb5=number5%10;
相同。如果你想输入5个数字,那么你所需要的就是一个运行5次迭代的循环。不需要3个嵌套循环。不是真的,伙计,我需要插入5个5位数的不同数字的5倍,我所说的“压缩”就是为了得到第一个第三个a第五个数字是他们自己的位置,比如十万分之一,然后计算总数。@Starterpack这就是它的作用。看,不是1+3+5的总和,而是1000+300+5的总和。你现在明白了吗?@Starterpack我误解了。上面更正了。@Starterpack你的帖子说
12345
应该产生
135
,而不是你的评论所暗示的那样。这是哪一个?这是工作,但为什么我不?当我想用int进行缩放时,我知道我的错误是0,所以我们进去,0是好的,我已经修复了它,但对于帮助我很感激。
#include <stdio.h>
    #include <stdlib.h>

    int main()
{
    int n=5,i,j,number5,num1,num3,numb5;
    int sum=0;


    for(i=0;i<n;i++) {
       scanf("%d",&number5);//runs 5 times to get 5 inputs

       sum+=(number5/10000)*10000; // take the value of first position
       sum+=((number5/100)%10)*100; // take the value of third position
       sum+=(number5%10);// take the value of fifth position

        }
         printf("%d",sum);
}