用C语言求和三元组
好的,我有一个有很多数字的文件用C语言求和三元组,c,C,好的,我有一个有很多数字的文件 002003005\n 001001\n 我想把所有的数字加三,第一行的和是10,第二行是2。现在我不确定我的控制流有什么问题 #define MAXLINE 1000 int counter = 0; int inputLine[MAXLINE] = {0}; int main(void) { int sum = 0; int i = 0; int ii = 0; char c; while ((c = getchar()) != EOF)
002003005\n
001001\n
我想把所有的数字加三,第一行的和是10,第二行是2。现在我不确定我的控制流有什么问题
#define MAXLINE 1000
int counter = 0;
int inputLine[MAXLINE] = {0};
int main(void)
{
int sum = 0;
int i = 0;
int ii = 0;
char c;
while ((c = getchar()) != EOF)
{
if (c == '\n')
{
for (ii = 0; ii < counter; ii = ii + 3)
{
sum = sum + ((inputLine[ii] - '0') * 100) + ((inputLine[ii+1] - '0') * 10) + ((inputLine[ii+2] - '0') * 1);
}
printf("%d\n", sum);
sum = 0;
counter = 0;
}
inputLine[i] = c;
i++;
counter++;
}
return 0;
}
#定义MAXLINE 1000
int计数器=0;
int inputLine[MAXLINE]={0};
内部主(空)
{
整数和=0;
int i=0;
int ii=0;
字符c;
而((c=getchar())!=EOF)
{
如果(c=='\n')
{
对于(ii=0;ii<计数器;ii=ii+3)
{
总和=总和+((输入线[ii]-“0”)*100+((输入线[ii+1]-“0”)*10+((输入线[ii+2]-“0”)*1);
}
printf(“%d\n”,总和);
总和=0;
计数器=0;
}
输入线[i]=c;
i++;
计数器++;
}
返回0;
}
当您到达行尾时,您没有重置i
插入:
i = 0;
在计数器=0
行之后
您还需要包括此块:
inputLine[i] = c;
i++;
counter++;
在else
中,因为它不应该发生在每行末尾的回车中
一旦你这样做了,你会(希望)注意到
i
和计数器
在每次循环中总是包含相同的值,所以它们都不需要存在。如果你的char
类型默认为unsigned
,那么你的结束条件就不好了
char c;
while ((c = getchar()) != EOF)
您应该将c声明为
int
,因为EOF
不能在0..255的值范围内表示EOF
定义为int
类型的负整数,用于指示文件结束条件。也许计数器
用于计算行数?在这种情况下,OP会将计数器+++
移动到计数器=0
在中的位置,如果在中,则在循环之前和每次迭代之后将i初始化为相同的值听起来是多余的-在循环开始时执行一次。