【问题标题】:Print all inputted number by the user in C打印用户在C中输入的所有数字
【发布时间】:2021-06-04 18:42:25
【问题描述】:

我正在尝试使用下面的代码打印用户输入的所有数字,但不是打印所有输入的数字,而是只打印我输入的最后一个数字。

#include<stdio.h>

int display(int n, int a, int b)
{
    printf("\n\nOrdered pairs are: ");
    for(int j=0;j<n;j++)
    {
        printf("(%d,%d) ",a,b);
    }
    return 0;
}
int main()
{
    int num,i,j,x,y;
    printf("Total number of points: ");
    scanf("%d",&num);
    for(i=0;i<num;i++)
    {
        printf("\n\nPoint #%d: \n",i+1);
        printf("x=");
        scanf("%d",&x);
        printf("y=");
        scanf("%d",&y);
        printf("Point #%d: (%d,%d)",i+1,x,y);
    }
    display(i,x,y);
    return 0;
}

【问题讨论】:

  • 你一直在main 的循环中覆盖相同的变量来存储新的坐标,所以没有办法取回旧的坐标。您也许可以将坐标存储在一个数组中,最好是 malloc'd 一个,因为您事先不知道点的总数。
  • 你保存了其余的输入吗? ab 只是 2 个整数。你需要一个数组。

标签: c


【解决方案1】:

您没有存储超过 2 个数字(xy)的内存,这些数字在循环的每次迭代中都会被覆盖。

也许您打算使用数组或动态分配的内存。这个:

int x[100], y[100];

是一种方法,那么您可以在两个数组中的每一个中存储多达 100 个数字。访问时使用数组索引。

【讨论】:

    【解决方案2】:

    实际上,您正在一次又一次地更改存储在 x 和 y 中的值,因此,以前的值被破坏,只存储最后一个值。所以你可以使用数组(更容易使用),甚至可以使用结构(我更喜欢使用数组)。

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2017-05-27
      • 1970-01-01
      • 2018-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多