変数aの内容と変数bの内容を入れかえるプログラムを、ポインタを用いて作成してください。
問題2.
1から100までの和を求めるプログラムを、ポインタを用いて作成してください。
問題3.
キーボードから10個の整数を配列に入れ、その中の最大値を求めるプログラムを
ポインタを用いて作成してください。
問題4.
下記のソーティングプログラムを、ポインタを用いたものに書き換えてください。
[プログラム説明]
適当な整数を10個キーボードから入力し、そのソート前とソート後の結果を表示するプログラム。
[プログラム]
int main() {
int a[10], i, j, w;
printf("整数を10個入力しなさい\n");
for(i=0; i<=9; i++)
scanf("%d", &a[i]);
printf("ソート前… ");
for(i=0; i<=9; i++)
printf("%d ", a[i]);
for(i=0; i<=9; i++)
for(j=0; j<=9-1; j++)
if(a[j] > a[j+1]){
w = a[j];
a[j] = a[j+1];
a[j+1] = w;
}
printf("\nソート後… \n");
for(i=0; i<=9; i++)
printf("%d ", a[i]);
}
問題5.下記のプログラムにおいて、データにない頭文字が入力されてきたとき
"該当するデータはありません"
と出力されるように、修正を加えてください。
[プログラム説明]
適当に5人の名前を選び、それらの名前をローマ字でポインタ型の配列に初期設定する。
キーボードから英大文字1字を入力し、その英字を名前の先頭にもつ人だけを出力するプログラム。
[プログラム]
int main() {
char head, *name[5]={"Shibasaki", "Usami", "Muto", "Miyaichi", "Kushibiki"};
int i;
printf("英大文字を1字入力しなさい\n");
scanf("%c", &head);
printf("%cを先頭に持つ名前は…", head);
for(i=0; i<=4; i++)
if(*name[i] == head)
printf("%s ", name[i]);
printf("\n");
}
問題1のプログラム
int main(void){
int *pa,*pb,*x;
int a = 1,b = 2;
printf("変数:a=%d b=%d\n", a,b);
pa = &a;
pb = &b;
printf("入れ替え前:ポインタpa=%d ポインタpb=%d\n", *pa,*pb);
x = pa;
pa = pb;
pb = x;
printf("入れ替え後:ポインタpa=%d ポインタpb=%d\n", *pa,*pb);
return 0;
}
問題2のプログラム
int main(void){
int a = 1,x = a;
int *pa;
for (a=2;a<=100;a++){
x = x + a;
pa = &x;
}
printf("1から100までの和は%d\n",*pa);
}
問題3のプログラム
int main(void){
int a[10],i,max;
int *p,*s;
for(i=0;i<10 i="" p=""> printf("整数を10個入力してください:");
scanf("%d",&a[i]);
}
p = a;
for(i=1,max=*p;i<10 i="" p=""> if(max<*(p+i)){
max = *(p+i);}
}
printf("最大値は%d",max);
}
問題4のプログラム
int main() {
int a[10], i, j, w;
int *p;
printf("整数を10個入力しなさい\n");
for(i=0; i<=9; i++)
scanf("%d", &a[i]);
//ポインタに配列を代入
p = a;
printf("ソート前… ");
for(i=0; i<=9; i++)
printf("%d ", *(p+i));
for(i=0; i<=9; i++)
for(j=0; j<=9-1; j++)
if(*(p+j) > *(p+j+1)){
w = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = w;
}
printf("\nソート後… ");
for(i=0; i<=9; i++)
printf("%d ", *(p+i));
}
問題5のプログラム(これはもっと良い方法があると思うな...)
int main() {
char head, *name[5]={"Shibasaki", "Usami", "Muto", "Miyaichi", "Kushibiki"};
int i,j=0;
printf("英大文字を1字入力しなさい\n");
scanf("%c", &head);
printf("%cを先頭に持つ名前・・・", head);
for(i=0; i<=4; i++){
if(*name[i] == head){
printf(" %s", name[i]);
j++;
}
}
if(j==0)printf("該当するデータはありません");
printf("\n");
}