【发布时间】: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 < N; i++) { scanf(" %f", &pay[i]); scanf(" %d", &age[i]); }只有在输入数字时交替输入数字才会起作用(支付年龄支付年龄......) -
您的
main未完全实现,do{ }while();的while缺失。