配列や関数を使ったポインタの使い方を示すプログラムを書く必要があります。配列要素を使用する前に初期化する方法は?
#include <stdio.h>
#include <conio.h>
#define ROWS 3
#define COLS 4
void print(int rows, int cols, int *matrix);
void main(void)
{
int a[ROWS*COLS],i;
for(i=0;i<ROWS*COLS;i++)
{
a[i]=i+1;
}
print(ROWS,COLS,a);
getch();
}
void print(int rows, int cols, int *matrix)
{
int i,j,*p=matrix;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
printf("%3d",*(p+(i*cols)+j));
}
printf("\n");
}
}
上記のプログラムは、行と列があらかじめ定義されたマトリックスを印刷します。私は行と列がユーザーによって入力されるようにプログラムを変更したいです。
#include <stdio.h>
#include <conio.h>
void print(int rows, int cols, int *matrix);
void main(void)
{
int ROWS,COLS,a[ROWS*COLS],i;
printf("Enter the number of rows: ");
scanf("%d",ROWS);
printf("\nEnter the number of columns: ");
scanf("%d",COLS);
for(i=0;i<ROWS*COLS;i++)
{
a[i]=i+1;
}
print(ROWS,COLS,a);
getch();
}
void print(int rows, int cols, int *matrix)
{
int i,j,*p=matrix;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
printf("%3d",*(p+(i*cols)+j));
}
printf("\n");
}
}
このプログラムは、変数ROWSとCOLSが宣言される前に使用されているというエラーを出しています。この問題を解決する方法。
この宿題はありますか? –
yeaちょっと...ポインタ、配列、関数を使ってプログラムを書く必要がありました...配列宣言に問題がありました。 –