- 1 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 22:34:33 ]
- C言語の入門者向け解説スレです。
・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 19 pc11.2ch.net/test/read.cgi/tech/1190342593/ 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 97代目 pc11.2ch.net/test/read.cgi/tech/1191937213/
- 722 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 20:51:06 ]
- mainもつかわずに?
- 723 名前:プリンがー mailto:aaa [2007/11/02(金) 20:51:09 ]
- >>721
追記 関数でfactorial使ってできるんだろな〜てのは分かるんですが関数の学習 はまだちょこっとしかしてなくて
- 724 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 20:51:53 ]
- ハンドルネーム使ってる時点で…なぁ
- 725 名前:プリンがー mailto:aaa [2007/11/02(金) 20:51:59 ]
- >>722
mainは使ってです。
- 726 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 20:52:24 ]
- プリプロセッサメタプログラミングで求めろってことか
- 727 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 20:53:00 ]
- 作れるよ
- 728 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 20:53:24 ]
- >>723
そんなのしなくても出来る。 まずn!を計算する処理を考える、 それが出来たらnn!を計算する処理を考える それが出来たら1/nn!を計算する処理を考える。
- 729 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 20:55:00 ]
- 関数使って作れるならそれをインライン展開したものを考えてみよう
- 730 名前:プリンがー mailto:aaa [2007/11/02(金) 20:55:14 ]
- >>727
そうですか〜。 for〜if〜使えばいいのかな?
- 731 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 20:55:59 ]
- うん
- 732 名前:プリンがー mailto:aaa [2007/11/02(金) 20:59:16 ]
- >>728
n!が俺には謎めいてきたw
- 733 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 21:04:13 ]
- >>730
二重ループは知ってる?
- 734 名前:プリンがー mailto:aaa [2007/11/02(金) 21:07:24 ]
- >>733
はい。条件分岐はだいたい分かってます。
- 735 名前:デフォルトの名無しさん [2007/11/02(金) 21:07:42 ]
- C言語結構粘るな。そろそろ終わってもいいと思うんだが
- 736 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 21:12:35 ]
- 答えはこのとおりだが、自分で考えたいだろうから読みにくくしている。
考え方だけ参考にして。ちなみに行儀の悪いコーディングの例でもあります #include<stdio.h> int main(void){int i,n=10; double e=1.0,x=1.0;for(i=1; i<=n;i++)e+=(x/=i);printf( "%f\n",e);return 0;}
- 737 名前:プリンがー mailto:aaa [2007/11/02(金) 21:20:58 ]
- >>736
大変ありがとうございます。 ちなみにn=10とx=1.0は必要ないですよね!?
- 738 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 21:27:23 ]
- >>737
何故そう思う?
- 739 名前:プリンがー mailto:aaa [2007/11/02(金) 21:42:12 ]
- >>738
n=10はiの範囲のうち。x=1.0はe+=1.0/iの1.0はiを格上げするため。 double/int→doubleここはなんて説明すればいいのか・・・
- 740 名前:プリンがー mailto:aaa [2007/11/02(金) 21:43:38 ]
- xは1.0のままだからボックスを作る必要がない。
- 741 名前:デフォルトの名無しさん [2007/11/02(金) 21:44:52 ]
- >>738
>>736のコードが難しすぎたようだ。 初心者にe+=(x/=i);をぱっと理解できるとはおもえん。
- 742 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 21:45:00 ]
- 1.0のままではありませんよ
- 743 名前:プリンがー mailto:aaa [2007/11/02(金) 21:57:17 ]
- >>742
なぜ1.0のままじゃないんですか?? めんどくさくなければ教えて下さい。
- 744 名前:デフォルトの名無しさん [2007/11/02(金) 21:58:27 ]
- >>743
x /= i は x = x/i; のこと。 x/iをxに代入する。
- 745 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 21:58:46 ]
- >>739 の解釈だと >>736 は
e=1 + 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + 1/7 + 1/8 + 1/9 + 1/10 ってことになるよ とりあえず x の値を表示させてみては?
- 746 名前:プリンがー mailto:aaa [2007/11/02(金) 22:04:39 ]
- >>744
それは分かってます。 >>745 ちょっと説明間違ったかなー 分子は1.0のままでしょ
- 747 名前:デフォルトの名無しさん [2007/11/02(金) 22:17:12 ]
- >>746
じゃあ1/3!は 0.5/3だって理解は出来る? 同様に 1/4!は 0.166/4
- 748 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 22:21:55 ]
- >>746
前回のループで計算したxが分子だよ
- 749 名前:プリンがー mailto:aaa [2007/11/02(金) 22:22:53 ]
- >>747
1/3!=(1/2)/3 1/4!=(1/6)/4
- 750 名前:デフォルトの名無しさん [2007/11/02(金) 22:26:12 ]
- >>749
そうそう。 あれ、分子が1.0のまんま?はて?
- 751 名前:プリンがー mailto:aaa [2007/11/02(金) 22:27:29 ]
- >>750
頭が痛くなってきた。
- 752 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 22:29:31 ]
- e+=(x/=i);を分解すると、
x = x / i; e = e + x; xのところに直値で1.0を入れることはできない
- 753 名前:デフォルトの名無しさん [2007/11/02(金) 22:29:48 ]
- >>751
つまり分子は1.0のままではない。って事。 1/3!=(1/2!)/3 1/4!=(1/3!)/4 1/5!=(1/4!)/5
- 754 名前:プリンがー mailto:aaa [2007/11/02(金) 22:33:33 ]
- >>753
てか階乗の意味ってもともと 1/3!=(1/2!)/3 1/4!=(1/3!)/4 1/5!=(1/4!)/5 なの? 1/3!=1/1*2*3 1/4!=1/1*2*3*4 1/5!=1/1*2*3*4*5 じゃなくて?
- 755 名前:デフォルトの名無しさん [2007/11/02(金) 22:34:04 ]
- 西暦を入力すると干支が出るようにしたいんですが、何が違うのかわかりません。教えてください
if文が全般的に違うようです。 #include<stdio.h> main() { int year(void); printf("西暦・・・"); scanf("%d", &year); if(year % 12 = 2) {printf("%d 年は戌年",year);} else if(year % 12 = 3) {printf("%d年は亥年\n",year);} else if(year % 12 = 4) {printf("%d年は子年\n",year);} else if(year % 12 = 5) {printf("%d年は丑年\n",year);} else if(year % 12 = 6) {printf("%d年は寅年\n",year);} else if(year % 12 = 7) {printf("%d年は卯年\n",year);} else if(year % 12 = 8) {printf("%d年は辰年\n",year);} else if(year % 12 = 9) {printf("%d年は巳年\n",year);} else if(year % 12 = 10) {printf("%d年は午年\n",year);} else if(year % 12 = 11) {printf("%d年は未年\n",year);} else if(year % 12 = 0) {printf("%d年は申年\n",year);} else {printf("%d年は酉年\n",year);} return 0; }
- 756 名前:デフォルトの名無しさん [2007/11/02(金) 22:35:47 ]
- >>754
意味は同じでしょ? 結果が同じならおk
- 757 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 22:36:03 ]
- >>755
比較は == で
- 758 名前:デフォルトの名無しさん [2007/11/02(金) 22:36:26 ]
- >>755
switchで頼むわ・・・。
- 759 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 22:37:31 ]
- テーブル使おうや・・
- 760 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 22:38:11 ]
- Hi, Let's use array.
- 761 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 22:38:14 ]
- int year(void);
って関数じゃなくて変数の宣言をしたいんじゃないの
- 762 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 22:50:41 ]
- >>757-761
お前らそんな一気に言ったら>>755が可哀想だろw >>755 これを参考に。 #include<stdio.h> const char *eto[] = {"申年","酉年","戌年","亥年","子年","丑年","寅年","卯年","辰年","巳年","午年","未年"} int main(){ int year; printf("西暦・・・"); scanf("%d", &year); printf("%d年は%s",year, eto[year%12]); return 0; }
- 763 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 22:54:15 ]
- >>762
year にゲタをはかせて、テーブル自体は 「子」 から始まって 「亥」 で終わって欲しい
- 764 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 22:57:06 ]
- >>763
ああ、まあ、そっちの方が綺麗か 適当に脳内修正しといて
- 765 名前:プリンがー mailto:aaa [2007/11/02(金) 23:03:11 ]
- >>757
ですね。ちょいとプリントアウトでもして頭整理します。 ありがとです。
- 766 名前:プリンがー mailto:aaa [2007/11/02(金) 23:03:46 ]
- >>756だた。
- 767 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 23:29:09 ]
- >>755
それで警告が出るようにコンパイラオプションを指定しろ。 VC++なら/W4、gccなら-Wallとか。
- 768 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 23:30:17 ]
- ってそもそもエラーになるな、あほだ俺orez
- 769 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 23:30:30 ]
- >>767
警告っていうか、エラーにならないか?
- 770 名前:プリンがー mailto:aaa [2007/11/02(金) 23:43:00 ]
- for(i=0.5;i<=8.2;i++)
このときのi++は0.1刻みに増え(i=i+0.1)ますか? それとも1ずつ増え(i=i+1)ますか?
- 771 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 23:44:47 ]
- >>770
やってみればいいじゃないか?
- 772 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 23:46:46 ]
- インクリメント・デクリメントできるのは整数型だけですよ
- 773 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 23:47:05 ]
- >>770
0.1刻みに増えると思う根拠は何だい?
- 774 名前:プリンがー mailto:aaa [2007/11/02(金) 23:47:06 ]
- >>771
コンパイラ?もってないからできない。
- 775 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 23:47:23 ]
- >>770
基本的にループ変数にfloatやdoubleを使うのはトラブルの元だよ 累積誤差が無視できない
- 776 名前:プリンがー mailto:aaa [2007/11/02(金) 23:48:24 ]
- >>772
なるほど。
- 777 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 23:48:42 ]
- >>774
今すぐインストールしなさい
- 778 名前:デフォルトの名無しさん [2007/11/02(金) 23:50:40 ]
- コンパイラもなくコード書いてどーするwwwwwwwwwwwwwwwww
- 779 名前:プリンがー mailto:aaa [2007/11/02(金) 23:52:08 ]
- >>775
例えばy=x^3-x^2を1.5から8.5まで0.1ずつ変化させたときのyの値を 出力せよ。の場合ループを使わざるを得ないよね!?
- 780 名前:デフォルトの名無しさん [2007/11/02(金) 23:53:06 ]
- >>779
そういう時は i += 0.1であって i++ではない。
- 781 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 23:53:16 ]
- >>779
ループは使うがループ変数は整数型でもできる
- 782 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 23:53:56 ]
- >>779
ループ変数にはintを使ってループの中で10.で割って使う
- 783 名前:プリンがー mailto:aaa [2007/11/02(金) 23:54:38 ]
- >>777
コンパイラ購入しないといけないでしょ? ある程度入門書終わらせたら買うけど
- 784 名前:デフォルトの名無しさん [2007/11/02(金) 23:54:45 ]
- 一定時間ごとに処理を行うようなプログラムは
どのように作ればいいですか?
- 785 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 23:55:36 ]
- >>784
C標準だけではできない 割り込みとかポーリングとかOSやハードウェアをいじくる
- 786 名前:デフォルトの名無しさん [2007/11/02(金) 23:56:04 ]
- >>783
google先生に 無料のコンパイラは無いか聞いてみれ
- 787 名前:プリンがー mailto:aaa [2007/11/02(金) 23:57:39 ]
- >>782
なるほどー!そうなのか
- 788 名前:プリンがー mailto:aaa [2007/11/02(金) 23:59:47 ]
- >>786
いつか聞いてみる! いい道具だしてくれるかな〜ドラえもん
- 789 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 00:00:20 ]
- >>783
本に付属してるものならともかく今時の入門者はコンパイラ単体で買うのは珍しいと思う いろんなコンパイラがネットから無料でダウンロードできるしね
- 790 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 00:00:53 ]
- >>788
今すぐ聞け
- 791 名前:プリンがー mailto:aaa [2007/11/03(土) 00:05:00 ]
- >>789
そうんだ〜!とある人から聞いたら コンパイラは買わないといけないよって聞いた! あぶね〜
- 792 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 00:11:12 ]
- >>791
特殊な環境用のコンパイラは買わないと無いかも知れない (PIC用とか) MS-Windows とか MacOS とか Linux ならフリーのコンパイラがある 勉強ならパソコンでやればいい
- 793 名前:デフォルトの名無しさん [2007/11/03(土) 00:13:41 ]
- ああ
- 794 名前:プリンがー mailto:aaa [2007/11/03(土) 00:20:25 ]
- >>792
なるほど。 参考になった。
- 795 名前:プリンがー mailto:aaa [2007/11/03(土) 00:27:51 ]
- >>782
ループの前に整数を10で割るという変数を定義してて大丈夫でしょ!?
- 796 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 02:28:17 ]
- >>795
喪前みたいにこんなに物覚えが悪い馬鹿が実際にコンパイルしないで効率落としてたら迷惑だ。 とっととコンパイラをインストールしてこい。 コンパイラなしに勉強したいなら、もう少し他人の書き込みを注意深く読めるようになってからにしろ。
- 797 名前:デフォルトの名無しさん [2007/11/03(土) 02:40:36 ]
- 生まれた年を入力することによって今年何歳になるかを表示するようにしようとしたのですが、何が間違っているかわかりません。
#include<stdio.h> int tosi(int a,int b); return a - b; main() { int year; printf("あなたの生まれた年は?\n"); scanf("%d",&year); printf("あなたは今年%d歳\n",tosi(2007,year)); return 0; }
- 798 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 02:43:29 ]
- >>797
構文
- 799 名前:デフォルトの名無しさん [2007/11/03(土) 03:46:22 ]
- 配列の入力の時に,EOFだと-1入力で終了になりますよね?
改行で入力終了にしたいのですが,どうすればいいですか? 1 1 0 0 1 0 1 1 改行 で入力を終了したいです。 教えてください。よろしくお願いします。 //---- 配列入力 num = 0; do { scanf("%d", &arr[num]); } while ( arr[num++] != EOF ); // 改行は入力の終了 num--; // 有効な入力数
- 800 名前:デフォルトの名無しさん [2007/11/03(土) 04:28:06 ]
- 変数やポインタについて質問なんですが、
それらが自分自身のメモリサイズを知っているのは何故なんですか? 例えば、 int a[3]={1,2,3}; printf("%d",*(a+1)); とかって場合、*(a+1)の+1がint分オフセットするって記憶している場所ってどこなんでしょう??
- 801 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 04:30:23 ]
- 気にすんな
- 802 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 04:34:20 ]
- >>800
キニスルナ あえて言うならコンパイラさんの秘密の小部屋の中だ
- 803 名前:デフォルトの名無しさん mailto:age [2007/11/03(土) 04:45:16 ]
- デジタルフィギュア
www.youtube.com/watch?v=9OHe2h3sZL0
- 804 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 04:49:05 ]
- >>800
そういう風に作られているからとしか言いようがない CPUが変わるとコンパイラ変えないとだめでしょ?
- 805 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 04:49:31 ]
- >>801-802
ぅぅ…気になる。。 けど我慢します。 ありがとうございました。 どっかのメモリ上にいるんだろうけど…。 それを参照出来ないのかな…。。 気になる…寝れない。
- 806 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 04:51:21 ]
- >>805
そんなに気になるならアセンブラ勉強しろ 大抵のコンパイラはソース吐かせられるようになっているから それを見れば一目瞭然なんだが
- 807 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 04:53:43 ]
- >>804,806
あ、なるほど。 レジスタにもメモリにもディスクにも記憶されてないんですね!? ただ単にオフセットしたりする順序が(機械語レベルで)書かれているんですかね。 なんとなく想像付きました。
- 808 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 04:57:45 ]
- >>800
intやcharのオフセットサイズが知りたいのならsizeof(int)でおk 但し、これらの結果は環境に依存するから注意が必要だ
- 809 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 05:01:20 ]
- >>807
CPUのアドレッシングモードを活用している場合もある 例えばx86のintならレジスタに+04hずつ足しながらレジスタ+レジスタで アドレスを算出している事が多い RISCの場合は完全にコード内に組み込まれてしまう場合が多いね
- 810 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 05:02:23 ]
- #include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, "ないよう", "たいとる", MB_OK); return 0; } XP2、VC++2005Express、cl.exeなんですが、たったこれだけのソースなのに以下のエラーが出てコンパイルできません。 なんでなんだぜ? test.obj : error LNK2019: 未解決の外部シンボル __imp__MessageBoxA@16 が関数 _WinMain@16 で参照されました。 test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
- 811 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 05:43:32 ]
- c言語で、田 (←は辺の数2x2の例) のような図形の辺上での経路探索プログラムを作っているのですが、
自分で作ったプログラムでは、再帰処理を用いたせいかやたら速度が遅く、 辺の数を増やすと数時間では終わらなくなってしまいます。 なるべく関数を再帰呼び出ししないように無駄な探索は再帰前にチェックさせたのですが、それでも遅いです。 再帰を非再帰にしたいのですが、自分の技量ではまったく記述が浮かびませんでした。 再帰の内容は、開始位置から上下左右の4つの方向にそれぞれ移動させ、さらに再帰でその処理を繰り返しながら 目的位置までの経路を探索する、というものです。 どうすれば、非再帰にできるか助言頂けないでしょうか?
- 812 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 06:08:11 ]
- そうすを出しなさい
- 813 名前:デフォルトの名無しさん [2007/11/03(土) 06:17:14 ]
- >>811
経路データをどう与えるんだ? あと一筆書きするって事?
- 814 名前:デフォルトの名無しさん [2007/11/03(土) 06:26:38 ]
- 1、2、・・・N 点に対して (1,2) (4,8)という風にデータを与えればいいか
ただし(a,b)書いたときa<bとしaとbはつながっているとする 前回にすすんだ経路を記録しておいて、進んだときにその経路を消していけばいいのでは? 戻るときは前回のデータを復元していく たとえば、A=(a1,a2)などとして、ABCDEFGという繋がりが与えられれば、各段階でAからGの経路へ進めるということを繰り返す 初めに(進めるとして)Aへ進めたらBCDEFGが残る 次にAを進めようとするがここは残っていない BCD・・・とチェックしていく
- 815 名前:デフォルトの名無しさん [2007/11/03(土) 06:36:49 ]
- 繋がりの個数 N、 繋がり (a0,b0)・・・(a(N-1), b(N-1))
探索の深さ d 現在の探索位置 k0,・・・k(N-1) 現在位置 x i = 0・・・N-1 xから繋がり(ai,bi)で移動できるか 出来るならkd = i、d++ とし繋がりを消す すべての繋がりがなくなれば成功でリターンする どの繋がりにも行けないならd--。kdのつながりを復元して上へ戻る もしd=0なら失敗でリターンする
- 816 名前:815 [2007/11/03(土) 06:44:37 ]
- 最大1000点の繋がりを処理できるプロクラム作ってやるぜ!
- 817 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 06:57:02 ]
- 最短距離となる経路を知りたいのか?経路の総数を知りたいのか?目的がわからん。
経路の総数なら数式で出したほうがラクだと思うが。
- 818 名前:815 [2007/11/03(土) 07:15:55 ]
- ねむくなりました とちゆうまで貼り付けておきます
#include <iostream> #include <time.h> using namespace std; main(){ unsigned int A[32768]; int n,a,b,c; for(n=0;n<32768;n++)A[n]; for(n=0;n<20000;n++){ a=rand()%1024;b=rand()%1024; if(a!=b){c=a+1024*b; A[c/32] |= 1<<(c%32);}} int v[10000],d=0,x=0; for(n=0;n<10000;n++)v[n]=0; for(n=v[d];n<1024*1024;n++) if( (A[n/32]>>(n%32))&1 ){ a=n>>10; b=n%1024; if(x==a){x=b;v[d]=n+1;d++;A[n/32] &= ~(1<<(n%32));} else if(x==b){x=a;v[d]=n+1;d++;A[n/32] &= ~(1<<(n%32));} } }
- 819 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 08:07:29 ]
- >>810
user32.libをリンクしろ。 user32.libはPlatform SDKもしくはWindows SDKに入っている。 VC++ 2005への設定が容易な分、Windows SDKがおすすめ。
- 820 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 08:35:56 ]
- >>799
scanf()の戻り値を見て、0だったら終わればいい。
- 821 名前:デフォルトの名無しさん [2007/11/03(土) 10:52:55 ]
- >>798
具体的にどこをどう直せばいいですか?
- 822 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 10:58:41 ]
- >>821
#include<stdio.h> int tosi(int a,int b){ return a - b; } main() { int year; printf("あなたの生まれた年は?\n"); scanf("%d",&year); printf("あなたは今年%d歳\n",tosi(2007,year)); return 0; }
|

|