1

输入的第一行包含一个整数。然后每个输入后面跟着一行包含两个整数,每个整数不大于 1 000 000。第一个整数 n 是向量的大小,第二个整数 m 是寄存器信息的行数。以下每一行都包含两个整数 x 和 y 表示这一点。一行中的任何两个整数都由一个空格分隔。这些行不包含其他字符,除了结尾的新行

所以我选择 x 作为向量中的位置。x 存储在num1结构中my_struct,y 存储在num2

typedef struct my_struct{
  int num1;
  int num2;
  bool my_bool;
} my_struct;


int main(){
   int testCase, sizeVector, numLines, num1_in, num2_in, linesScanned = 0;
   scanf("%d\n %d %d", &testCase, &sizeVector, &numLines);

   my_struct my_vector[sizeVector+1];

   my_vector[0].num1 = testCase;
   my_vector[0].num2 = 0;
   my_vector[0].my_bool = false;

   while (linesScanned < numLines) {
      scanf("%d %d\n ", &num1_in, &num2_in);
      my_vector[num1].num1 = num1_in;
      my_vector[num1].num2 = num2_in;
      my_vector[num1].my_bool = false;
      linesScanned++;

   }}

输入示例:

1
3 2
1 2
2 3

我的问题是第一个scanf效果很好,但循环上的 on 不行。它没有按应有的方式保存值

4

3 回答 3

1

更改第二个scanf()

scanf("%d %d\n ", &num1_in, &num2_in);

经过

scanf(" %d %d", &num1_in, &num2_in);

事实上,在您scanf()开始阅读整数之前,您并没有赶上新的一行。在您的输入中输入了新行,但在第一个scanf()或第二个中都没有捕获到scanf()

在第二个字符串格式的开头添加空格scanf()将捕获任何空格(空格、制表符、换行符......)

于 2013-03-12T16:44:36.497 回答
1

更改代码以摆脱函数\n中的scanf。事实上,你也可以摆脱这些空间。当使用%d输入中的所有空格时,将被忽略。

您似乎也没有增加数组索引。

于 2013-03-12T16:45:18.997 回答
1

你的第二个scanf应该是:

scanf(" %d %d", &num1_in, &num2_in);
于 2013-03-12T16:48:40.273 回答