- 締切済み
やってみてくださ
任意の数値を2つ入力し、合計を返り値として返す関数int re_sum、 返り値を待たないで合計を求める関数void no_re_sumを作成せよ。 if switch for while do-while 配列 をなるべく使う。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6289)
>#8さん >Daynamic変数とStatic変数の違いを認識させようというもの dynamic変数とは、何のことでしょうか? malloc()などで領域を動的に確保することはもちろんありますが、 それをdynamic変数とは呼ばないのです。 #8さんが理解していらっしゃるdynamic変数とstatic変数の違いとは、何でしょうか?
- Gotthold
- ベストアンサー率47% (396/832)
> void noSum(int *n, int *m) { > sSum = n + m; > } ポインタ同士の加算は出来ません。 > 問題の意図はDaynamic変数とStatic変数の違いを認識させようというもの。 そうなの? ポインタの使い方の練習問題かと思ってた。
- 1108435
- ベストアンサー率43% (94/217)
zwiさんへ、このプログラムでどうやればif文、for文、while文を使えというの絶対に無理。下にも書いておいたけれど、問題の意図はDaynamic変数とStatic変数の違いを認識させようというもの。この出題者のほかの質問を見てみれば一目瞭然だけど、すべての問題にそのif switch for while do-while 配列をなるべく使うと書いてあるでしょ。これ定型文ですよ。
- zwi
- ベストアンサー率56% (730/1282)
1108435さん、その答えは分かり易す過ぎると思う。 >if switch for while do-while 配列 をなるべく使う。 と言っているのでもっと捻らないと・・・。
- 1108435
- ベストアンサー率43% (94/217)
こんな程度にループなんざ使えるか! static int sSum; int re_sum(int *n, int *m); void no_sum(int *n, int *m); void main(void) { int n, m, dSum; scanf("%d%d",&n,&m); dSum = re_sum( &n, &m); no_sum(&n, &m); printf("\n動的計算結果=%d", dSum); printf("\n静的計算結果=%d", sSUM); } int re_sum(int *n, int *m) { int iSum; iSum = n + m; return iSum; } void noSum(int *n, int *m) { sSum = n + m; } メイン関数をループさせると結果がどんどん変わってくるということを教えたかったんじゃないかな。
- zwi
- ベストアンサー率56% (730/1282)
void no_re_sum(int *n) { static int mode= 0; static sum = 0; switch( mode ) { case 0: case 1: sum += *n; break; case 2: *n = sum; break; } mode++; } int main(void) { int n; int sum; printf( "input a?" ); scanf( "%d", &n ); no_re_sum(&n); printf( "input b?" ); scanf( "%d", &n ); no_re_sum(&n); no_re_sum(&sum); printf( "sum=%d\n", sum); return 0; } Wernerさんお疲れ様です。 私も無理やりswitch入れてみました。
- jacta
- ベストアンサー率26% (845/3158)
> 任意の数値 ということは、一般的には複素数ですね。しかも、「任意」とのことですので、表現範囲の制限を設けることができません。 しかし、re_sumの返却値の型はintになっています。 どういうことか補足してください。
- Werner
- ベストアンサー率53% (395/735)
re_sumだけ。結構がんばった(`・ω・´) #include<stdio.h> int re_sum(int a, int b){ int temp[2]; if(a=(temp[0]=a) == a){ switch(a){ case 1: for(temp[1]=b; a; a++){ while((temp[1]-=-*temp) || temp){ do{ return a[temp]; }while(a+b); } } break; } } return 0; } int main(){ printf("%d + %d = %d\n", 123, 456, re_sum(123, 456)); printf("%d + %d = %d\n", 123, 0, re_sum(123, 0)); printf("%d + %d = %d\n", 0, 456, re_sum(0, 456)); printf("%d + %d = %d\n", -100, 345, re_sum(-100, 345)); printf("%d + %d = %d\n", 123, -100, re_sum(123, 100)); return 0; }