要素を2乗するプログラム
授業の課題で出題された問題です。
整数配列dataに対し、要素番号iの2乗をdata[i]に格納する手続きsqarrayを作成する問題で、自分は以下のようにプログラムしました。
/*
ex1401.c
*/
#include <stdio.h>
void sqarray(int data[], int size)
{
int i;
for (i=0;i<size;i=i+1) {
printf("%d ",&data[i]);
}
}
void printIntArray(int a[], int size)
{
int i;
for (i=0;i<size;i=i+1) {
printf("%d ",a[i]);
}
printf("\n");
}
int main(void)
{
int data[100], n;
printf("n=? ");
scanf("%d", &n);
sqarray(data, n);
printIntArray(data, n);
return 0;
}
しかし、以下のようなエラーを表示されました。
ex1401.c: In function ‘sqarray’:
ex1401.c:11:10: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]
printf("%d ",&data[i]);
~^ ~~~~~~~~
%ls
上記の指摘では、"%d"が"%ls"のようになるということだと思い、直してみたのですが、またエラーがでました。
自分のプログラムはどのようなところがおかしいのでしょうか。