代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define BUFFER 512
void getCount(int *numCount, int *count);
int sumNumbers(int *numSum, int *sumNumOutput);
int main(void) {
printf("Enter a number greater than 0: ");
char string[BUFFER];
int numMain = 0;
int countMain = 0;
int sumNumMain = 0;
fgets(string, BUFFER, stdin); // gets user input and stores it in string
numMain = atoi(string); // converts the string to numerical and sets sum to the value. If there is a letter in the string, it will be zero.
int numCountMain = numMain;
int numSumNum = numMain;
getCount(&numCountMain, &countMain); // gets how many integers there are
sumNumbers(&numSumNum, &sumNumMain);
printf("Count: %d\n", countMain);
// printf("Sum: %d\n", sumNumMain);
return 0;
}
//shows how many integers were entered
void getCount(int *numCount, int *count){
while(*numCount > 0){
*numCount /= 10;
++*count;
}
return;
}
int sumNumbers(int *numSum, int *sumNumOutput){ // make it so that it isolates a number, then adds it to a universal sum variable
int increment = 1;
int count = 0;
while(*numSum > 0){ // gets the count of the number
while(*numSum > 0){
*numSum /= increment;
++count;
printf("numSum: %d\n",*numSum);
increment *= 10;
}
}
}
假设我输入了12345作为数字。它可以精确计算其中的位数,但是当要使用除法将各个位数隔离时,它将跳过第三个数字。对于12345,将为: 12345 1234 12 0
我认为这是增量运行amok的一种情况,但是我找不到针对此的解决方法。我也知道,当我解决此问题时,它不能解决我必须隔离单个数字的问题。那就是增量的来源,我知道我必须使用模数,但是如果有人在我处理完这个之后可以帮我解决这个问题,那也很好。
此外,如果情况不那么明显,我假设存在问题的代码就是底线。
答案 0 :(得分:1)
您要除以1、10、100、1000。因此您得到的是12345、1234、12。
尝试
while (*numSum > 0) {
++count;
printf("numSum: %d\n",*numSum);
*numSum /= 10;
}