如何扫描输入,每次3个,处理它们,然后继续扫描C中的其余输入 #包括 #定义第3行 #定义COLS 3 无效分配(双A[][COLS],双nrows); 作废打印(双A[][COLS],双nrows); int main(int argc,char*argv[]){ 双A[行][COLS]; 分配(A,行); 打印(A,行); 返回0; } 无效的 分配(双A[][COLS],双nrows){ 双质量、速度、终端、面积; 而(扫描频率(“%lf,%lf,%lf”、&质量、速度、终端和面积)==3){ int i; for(i=0;i

如何扫描输入,每次3个,处理它们,然后继续扫描C中的其余输入 #包括 #定义第3行 #定义COLS 3 无效分配(双A[][COLS],双nrows); 作废打印(双A[][COLS],双nrows); int main(int argc,char*argv[]){ 双A[行][COLS]; 分配(A,行); 打印(A,行); 返回0; } 无效的 分配(双A[][COLS],双nrows){ 双质量、速度、终端、面积; 而(扫描频率(“%lf,%lf,%lf”、&质量、速度、终端和面积)==3){ int i; for(i=0;i,c,arrays,scanf,C,Arrays,Scanf,问题在于您主要在scanf()上循环,但在每次迭代中,for循环都会将las值设置为读取到所有元素 最简单的纠正方法是: #include <stdio.h> #define ROWS 3 #define COLS 3 void assign(double A[][COLS], double nrows); void print(double A[][COLS], double nrows); int main(int argc, char* argv[]){ do

问题在于您主要在scanf()上循环,但在每次迭代中,for循环都会将las值设置为读取到所有元素

最简单的纠正方法是:

#include <stdio.h>

#define ROWS 3
#define COLS 3


void assign(double A[][COLS], double nrows);
void print(double A[][COLS], double nrows);


int main(int argc, char* argv[]){
    double A[ROWS][COLS];
    assign(A, ROWS);
    print(A, ROWS);
    return 0;
}


void
assign(double A[][COLS], double nrows){
    double mass, velocity_terminal, area;
    while(scanf("%lf, %lf, %lf", &mass, &velocity_terminal, &area)==3){
    int i;
    for (i= 0; i<nrows; i++){
                A[i][0]= mass;
                A[i][1]= velocity_terminal;
                A[i][2]= area;
    }
        }
    }

void
print(double A[][COLS], double nrows){
    int i, j;
    for(i=0; i<nrows; i++){
        for(j=0; j<nrows; j++){
            printf("%5lf",A[i][j]);
        }
        printf("\n");
    }

}
int i=0;//在循环外部声明并从第一个元素开始

while(scanf(“%lf,%lf,%lf”,&mass,&velocity\u terminal,&area)==3&&i现在,当您接受该值时,while循环可以正常运行。但实际上您遗漏的是,您在while中编写了for循环,这就是为什么每次它都会覆盖您的数据。意思是,而不是编写代码:

   int i=0;    // declare outside the loop and start with first element
   while(scanf("%lf, %lf, %lf", &mass, &velocity_terminal, &area)==3 && i<nrows){ // make sure that you don't go out of nrow range
          A[i][0]= mass;
          A[i][1]= velocity_terminal;
          A[i][2]= area;
          i++;
    }

首先正确地写下代码,以便我们能够正确地看到它。注意:
%lf,%lf,%lf“
中的空格不影响结果。
%lf”
无论如何都会消耗前导空格。
%lf,%lf,%lf”
将扫描数字和以下
之间的0或更多空格。
void assign(double A[][COLS], double nrows){
double mass, velocity_terminal, area;
while(scanf("%lf, %lf, %lf", &mass, &velocity_terminal, &area)==3){
int i;
for (i= 0; i<nrows; i++){
            A[i][0]= mass;
            A[i][1]= velocity_terminal;
            A[i][2]= area;
}
    }
}
void assign(double A[][COLS], double nrows){
double mass, velocity_terminal, area;
int i=0;
while(scanf("%lf, %lf, %lf", &mass, &velocity_terminal, &area)==3){       
            A[i][0]= mass;
            A[i][1]= velocity_terminal;
            A[i++][2]= area;

    }
}