課題 1
以下のコードをもとにして、変数の値を入れ替える関数 swap を作成し、それを用いて2つの変数 a と b の値を入れ替えるプログラムを作成せよ。
#include<stdio.h>
/*
[--- ここに関数 swap のプロトタイプ宣言 ---]
*/
int main(void){
int a, b;
printf("Input a:");
scanf("%d", &a);
printf("Input b:");
scanf("%d", &b);
swap(&a, &b); /* <- ここで swap を使っている */
printf("a = %d, b = %d\n", a, b);
return(0);
}
/*
[--- ここに関数 swap の定義 ---]
*/
課題 2
(教科書 p. 269) 演習 10-1
「ポインタ n 受け取り、n の指す値が 0 より小さければ 0 に更新し、100より大きければ100に更新する(値が0~100であれば更新しない)関数 adjust_point を作成せよ。
#include<stdio.h>
void adjust_point(int *n){
/* ここにコードを書く */
}
int main(void){
int a;
scanf("%d", &a);
adjust_point(&a);
printf("a = %d", a);
return(0);
}
課題3
(教科書 p. 269) 演習 10-2 を簡単にしたもの
西暦 *y年を次の年に更新する関数 void increment_year(int *y) を作成せよ。
#include<stdio.h>
void increment_year(int *y){
/* ここにコードを書く */
}
int main(void){
int yy;
printf("Input year: ");
scanf("%d",&yy);
increment_year(&yy);
printf("Year became %d.", yy);
return(0);
}
課題 4
(教科書 p. 269) 演習 10-2
西暦 *y年 *m月 *d日の日付を、"前の日" の日付に更新する関数 decrement_date(int *y, int *m, int *d){ ... } と "次の日" の日付に更新する関数 increment_date(int *y, int *m, int *d){ ... } を作成せよ。また、main では、ユーザーから年月日をうけとり(入力してもらい)、それを上記の関数で前の日に更新して表示せよ。その後、次の日に更新して表示せよ。
ただし、月始まり、月終わりや、うるう年を考慮して計算を行うこと。