【问题标题】:Inserting 2 different integers to 2 different arrays simultaneously in C在C中同时将2个不同的整数插入2个不同的数组
【发布时间】:2020-12-03 21:11:15
【问题描述】:

我遇到了一个问题,即仅使用一个 for 循环将数字输入到 2 个不同的数组中。

首先,我将array0初始化为int age[N],将array1初始化为float pay[M], 以#define N 10,#define M 10 开头定义它们(我被要求这样做,所以我无法真正以任何其他方式编写它们)。

使用两个“for”循环我成功地插入了值。然后我做了两次主要的尝试来组合它们。

一个与

b=0; 
for(i=0,i<N,i++){
    b++; 
    scanf(" %d",&age[i]);
    scanf(" %f",&pay[b]);
} 

结果是每个数组的 9/10 元素都被很好地列出,除了其中 2 个具有意外值。

第二个是

i=b=0; 
while(i<N && b<M)
{
    i++;
    b++; 
    scanf(" %d",&age[i]);
    scanf(" %f",&pay[b])
}

仅列出了具有错误值的age[0] 元素。

所以我的问题是我真的可以结合下面详述的 for 循环吗?

#include <stdio.h>
#define N 10
#define M 10

int main()
{
    int age[N]; 
    float pay[M];       
    int i,b,; 
    for(b=0;b<M;b++){
        scanf(" %f",&pay[b]);}

    for(i=0;i<N;i++)
    {
        scanf(" %d",&age[i]);
        if(age[i]<18 || age[i]>=67)
        {
            do{     
                printf("Please enter a number equal or greater than 18 and less than 67,as people under 18 are considered minors and from 67 and above eligible for retirement\n");
                scanf(" %d",&age[i] ); }while(age[i]<18 || age[i]>=67);
            
        }
        
    }

我是新手,如有错误请见谅,我也很乐意使用不同的方法研究其他解决方案,以防您无法真正结合这两个 for 循环。

【问题讨论】:

  • 因为N==M 不需要任何b 计数器。 for (i = 0; i &lt; N; i++) { scanf(" %f", &amp;pay[i]); scanf(" %d", &amp;age[i]); } 只有在输入数字时交替输入数字才会起作用(支付年龄支付年龄......)
  • 您的main 未完全实现,do{ }while();while 缺失。

标签: arrays c loops


【解决方案1】:

正如 Johnny Mopp 所说,组合这些循环的唯一合理方法是您是否可以交替使用。我觉得在这里使用两个循环是完全合理的事情,否则。也就是说,如果您绝对必须将两者结合起来,请利用 N == M 的事实来使用一个循环并仍然连续执行这些操作,方法是在读入 age[] 之前等待前 M 次迭代。相当丑陋,但它应该工作。快速伪代码:

for (int i = 0; i < (M + N); ++i) {
    if (i < M) {
       scanf(" %f",&pay[i]);
    }
    else {
       scanf(" %d",&age[i - N]);
       do ...
    }
}

【讨论】:

    【解决方案2】:

    我在我的代码中实现了 Johnny 的 Mopp 建议,它首先按我的意愿工作。所以for (i = 0; i &lt; N; i++) { scanf(" %f", &amp;pay[i]); scanf(" %d", &amp;age[i]); } 似乎是我正在寻找的答案。

    感谢您的时间和帮助,非常感谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-29
      • 2011-07-30
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多