如何扫描输入,每次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
问题在于您主要在scanf()上循环,但在每次迭代中,for循环都会将las值设置为读取到所有元素 最简单的纠正方法是:如何扫描输入,每次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
#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;
}
}