変数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"); }
0 件のコメント:
コメントを投稿