電子書籍の厳選無料作品が豊富!

協力お願いします。
2問あります

1問目です。
西暦年yearを引数として受け取り,
閏年かどうかの判定結果を戻り値として返す関数leap_year()を作成せよ.
ただし,leap_year()は,閏年の場合は1を返し,
そうでない場合は0を戻り値として返すものとする.
提出するプログラムは,関数leap_year()だけでなく,
メイン関数main()も含む下記プログラムを完成させる形で作成する。

#include <stdio.h>

/* ここに関数leap_year()のプロトタイプ宣言を記述する */

int main()
{
int i, year[3];

for (i=0; i<3; i++)
{
printf("西暦年を入力してください");
scanf("%d", &year[i]);
if (leap_year(year[i]) == 1)
{
printf("閏年です.\n");
}
else
{
printf("閏年ではありません.\n");
}
}
}

/* ここに関数leap_year()を定義する */

2問目です。
mのn乗を計算する関数power()を作成せよ.
ただし,関数power()はm,nを引数とし,
戻り値としてmのn乗の値を返すものとする.
m,nは,正整数とする.プログラムには,
関数power()だけでなく,m,nを入力し,
mのn乗を出力するメイン関数main()を含むものとする.
main()は,power()の前に記述すること.
また,power()のプロトタイプ宣言も記述すること。

よろしくお願いします。

A 回答 (3件)

2問目は回答が出ているようなので、1問目の参考例を書いておきます。



#include <time.h>

_Bool leap_year(int year)
{
  struct tm t = { .tm_year = -1900 + year, .tm_mon = -1 + 2, .tm_mday = 29 };
  if (mktime(&t) == (time_t)-1)
    return 0;
  return t.tm_mday == 29;
}
    • good
    • 0

2問目だけね


C言語には累乗のpow関数があるのに、それを使わず自作するという事ですね。
http://oku.edu.mie-u.ac.jp/~okumura/algo/
ここのソース "algo.lzh" の中の "power.c" このファイルがソースです。
    • good
    • 0

閏年の定義(西暦が4で割り切れて100で割り切れない、あるいは400で割り切れる)に


従って…

int leap_year(int y)
{
return ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0));
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!