• 締切済み

やってみてくださ

任意の数値を2つ入力し、合計を返り値として返す関数int re_sum、 返り値を待たないで合計を求める関数void no_re_sumを作成せよ。 if switch for while do-while 配列 をなるべく使う。

みんなの回答

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.8

>#8さん >Daynamic変数とStatic変数の違いを認識させようというもの dynamic変数とは、何のことでしょうか? malloc()などで領域を動的に確保することはもちろんありますが、 それをdynamic変数とは呼ばないのです。 #8さんが理解していらっしゃるdynamic変数とstatic変数の違いとは、何でしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.7

> void noSum(int *n, int *m) { > sSum = n + m; > } ポインタ同士の加算は出来ません。 > 問題の意図はDaynamic変数とStatic変数の違いを認識させようというもの。 そうなの? ポインタの使い方の練習問題かと思ってた。

全文を見る
すると、全ての回答が全文表示されます。
  • 1108435
  • ベストアンサー率43% (94/217)
回答No.6

zwiさんへ、このプログラムでどうやればif文、for文、while文を使えというの絶対に無理。下にも書いておいたけれど、問題の意図はDaynamic変数とStatic変数の違いを認識させようというもの。この出題者のほかの質問を見てみれば一目瞭然だけど、すべての問題にそのif switch for while do-while 配列をなるべく使うと書いてあるでしょ。これ定型文ですよ。

全文を見る
すると、全ての回答が全文表示されます。
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.5

1108435さん、その答えは分かり易す過ぎると思う。 >if switch for while do-while 配列 をなるべく使う。 と言っているのでもっと捻らないと・・・。

全文を見る
すると、全ての回答が全文表示されます。
  • 1108435
  • ベストアンサー率43% (94/217)
回答No.4

こんな程度にループなんざ使えるか! 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)
回答No.3

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)
回答No.2

> 任意の数値 ということは、一般的には複素数ですね。しかも、「任意」とのことですので、表現範囲の制限を設けることができません。 しかし、re_sumの返却値の型はintになっています。 どういうことか補足してください。

全文を見る
すると、全ての回答が全文表示されます。
  • Werner
  • ベストアンサー率53% (395/735)
回答No.1

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; }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • このプログラムにアドバイスをください

    問題が  ・100個の要素を持った一次元配列をmain()関数内で宣言 ・一次元配列と要素数を引数として持つ関数seisei() ・関数seisei()は乱数を使い渡された配列を0~99の整数で初期化する。 ・一次元配列、要素数そして変数のポインタを引数としてもつ関数goukei() ・関数goukei()は渡された配列に格納された数値の合計を計算し、渡された変数のポインタにその合計値を代入する。 と問題があり、下記のようにプログラムを作ったんですが、どうしてもコンパイルできません。どなたかご指摘よろしくお願いします。 #include <stdio.h> #include <time.h> void seisei(int *,int); void goukei(int *, int, int*); int i, *sum; int main() { int a[100],sum; seisei(a,100); goukei(a,100,&sum); printf("sum:%d\n",&sum); return 0; } void seisei(int *a[i], int n) { srand(time(NULL)); for(i = 0; i <= n; i++){ *a[i] = rand() % 100; } } void goukei(int *a[i],int n,int *sum) { *sum = 0; for(i = 0; i <= n; i++){ *sum += *a[i]; } }

  • do を用いたプログラム

    プログラミング初心者なのですが 2つの整数を入力してその2つの間の数を全て足すプログラムを do を用いて作りたいのですがどうしてもできません。 #include <stdio.h> intmain(void) { int no = 1 int sum = 0; do{ sum = sum + no; no = no + 1; } while (no <= 5); printf("1から5までを足した数は%d\n", sum) return(0); } これで1から5までを足すプログラムにはできるのですがどこを 変えればできるでしょうか?

  • c++

    プログラミング初心者なのですが 2つの整数を入力してその2つの間の数を全て足すプログラムを 作りたいのですがどうしてもできません。 #include <stdio.h> intmain(void) { int no = 1 int sum = 0; do{ sum = sum + no; no = no + 1; } while (no <= 5); printf("1から5までを足した数は%d\n", sum) return(0); } これで1から5までを足すプログラムにはできるのですがどこを 変えればできるでしょうか?

  • に対応する関数ヘッダがありませんと言って動きません

    に対応する関数ヘッダがありませんと言って動きません それと使っているコンパイラは visual C++ express editionです これが問題のプログラムです まだデバッグなどは終わってないのでその関数ヘッダに関することに重点を置いた 回答を期待しております #include <stdio.h> /*数当てゲーム*/ int main(void); { do{ int no,sum; printf("任意の数字を1から31から選んでください"); printf("その数は奇数ですか?-Yes...9/No...0\n"); scanf("%d",&no); sum=0; /*ある法則にしたがっての数当て*/ if(no==9) sum=sum++; printf("その数は2,3,6,7,10,11,14,15,18,19\n22,23,26,27,30,31の中に含まれていますか?\nYes...9/No...0\n"); scanf("%d",&no); if(no==9) sum=sum+2; printf("その数は4,5,6,7,12,13,14,15,20\n21,22,23,28,29,30,31の中に含まれていますか?\nYes...9/No...0\n"); scanf("%d",&no); if(no==9) sum=sum+4; printf("その数は8,9,10,11,12,13,14,15,24\n25,26,27,28,29,30,31の中に含まれていますか?\nYes...9/No...0\n"); scanf("%d,&no"); if(no==9) sum=sum+8; printf("その数は16,17,18,19,20,21,22,23\n24,25,26,27,28,29,30,31の中に含まれていますか?\nYes...9/No...0\n"); scanf("%d,&no"); if(no==9) sum=sum+16; printf("あなたの入力した数字は%dであっていますか?\nYes...9.No...0\n,sum"); scanf("%d,&no"); if(no==9) printf("あなたは正直者です"); else printf("あなたはひねくれ者かうそつきです"); printf("もう一度?Yes...9.No...0"); scanf("%d,&no"); }while(no==9); return(0); } どうぞよろしくお願いします

  • 数値の連続入力終了条件について

    C言語初心者です。よろしくお願いします。 早速質問なのですが、while文を使ったscanf()関数による数値連続入力で、 ◎1---------------------------------------------- #include<stdio.h> int main(void) {      double dt,sum=0.0;      while(scanf("%lf",&dt) !=EOF){   sum=sum+dt; }   printf("合計=%f\n",sum); return 0; } ---------------------------------------------- ◎1のようにすれば、Ctrl+ZでEOFが返されたら終了とわかるのですが、今度は「0」が入力されたら処理を終了するというプログラムで、 ◎2---------------------------------------------- #include<stdio.h> int main(void) {      double dt,sum=0.0;      while(scanf("%lf",&dt) !=0.0){   sum=sum+dt; }   printf("合計=%f\n",sum); return 0; } ---------------------------------------------- ◎2のようにすると「0」が入力されても、終了せず、以下に示す◎3のように、しないと終了出来ません。 ◎3---------------------------------------------- #include<stdio.h> int main(void) {      double dt,sum=0.0;          scanf("%lf",&dt);      while(dt!=0.0){   sum=sum+dt; scanf("%lf",&dt); }   printf("合計=%f\n",sum); return 0; } ---------------------------------------------- ◎2で何故、◎1のように出来ず、◎3のようなscanf()を1回目、2回目と判定を入れなければならないか教えて下さい。

  • while文の作成について

    キーボードに整数を打ち込み、0を打ち込むと終了し、その合計を出すプログラムを以下のように作りました。 #include<stadio.h> int main(void){ int num=0 int sum=0 printf("整数を入力"\n"); do{ scanf("%d",&num); sum +=num; }while(num); printf("合計は%dです。\n",sum); returen 0; } 次に負の値が入力されるまで整数を読み込み続け、その合計をを求めるプログラムを作りたいのですが、whileのところを }while(num>=0); としてみたのですが、うまくいきません。また分かり易くするため、入力した整数の個数も表示できるようにしたいです。どうすればよいでしょうか。詳しい方、教えてください。

  • c言語で平均をだす

    #include<stdio.h> int main(void) { int num; int sum; printf("テストの点数を入力してください。\n"); do{ scanf("%d",&num); sum+=num; }while(num); printf("テストの合計点は%dです\n",sum); return 0; } テストの平均点をだすプログラムを作りたいのですが、合計を出すまではわかったのですが、ここから、平均を出すようにするにはどうすればよいですか。

  • プログラムを上手く動かすには…

    #include<stdio.h> #include<stdlib.h> double sumf(int n,double *ds); int main(){ double a,b; double df=0.7 int n; double *ds; double *z; int size; printf("Input two numbers -> "); scanf("%lf%lf",&a,&b); printf("n"); size = sizeof(*ds)*(1+(int)((b z = ds = (double*)malloc(size); n = 0; while(a<=b){ *z = a; a += df; printf("%.1f",*z++); n++; } printf("n"); printf("n"); printf"sumf = %.1fn",sumf(n,ds)); return 0; } double sumf(int n,double *ds){ double sum = 0; while(n){ sum += *ds; n--; } return sum; } 入力された二つの実数a,b(a<b)をもとに、aからbまで0.7ずつ増加する数値の配列を作り、その配列の合計を求める関数sumfを作りなさい。ただし、配列を作る、配列の合計を求める箇所はポインタを使うこと。 【ヒント】 ・プログラムの構成 mainで配列要素の作成、配列の表示、関数sumf呼出し、sumの表示。 関数sumfで配列の合計を求めreturnで合計値を返す。 ・引数の考慮点 実数の配列だけでなく配列の要素数も引数として渡す必要がある。 宜しくお願いします。 どこが違うのでしょうか?

  • 合計SUM関数のみのこして、他は一括数値変換したい

    よろしくお願いします。 B列に縦に合計SUM関数と、SUM(IF( 関数などいろいろ関数を入れて数字が表示されています。 B列の合計SUM関数は残して、SUM(IF関数・それ以外の関数はをすべて「数値」(関数で現在計算結果として表示されている数値)に変換したいのです。 教えてください。

  • scanfの入力をgets関数で読み捨てることについて

    -------------------------------------- #include<stdio.h> int main(void) { double dt=0.0,sum=0.0; char ss[80]; int ret; ret=scanf("%lf",&dt); puts(""); if(ret!=1){ gets(ss); printf("数値を入力してください\n"); puts(""); } while(dt!=999){ sum=sum+dt; ret=scanf("%lf",&dt); puts(""); if(ret!=1){ gets(ss); printf("数値を入力してください\n"); puts(""); } } printf("合計=%f\n",sum); return 0; } -------------------------------------- 以上のプログラムで、入力した数値の合計を出し「999」が入力されたら終了させ、数値以外が入力されたら、gets関数で読み捨て入力を続けていくということをしたいのですが、例えば、 ◎1----------- 2 3 4 999 合計=9.000000 --------------- ◎1のように数値のみだと正しく表示されます。 次に、 ◎2-------------------- a 整数を入力してください b 整数を入力してください 2 3 999 合計=5.000000 ------------------------ ◎2のように数値以外を先に入力し、その後に数値を入力しても正しく表示されます。 次に、 ◎3------------------- 2 3 a 数値を入力してください b 数値を入力してください 999 合計=11.000000 ----------------------- ◎3のように数値を入力した後に、数値以外を入力したら正しく表示されません。 次に、 ◎4-------------------- 2 a 整数を入力してください b 整数を入力してください 3 999 合計=9.000000 ------------------------ ◎4のように数値をまず入力しその後、数値以外を入力する。その後、数値を入力して終了させても、合計値が正しく表示されません。 まだ、バッファについて完全に理解していないということもあり、何故こうなってしまうのか分かりません。 教えていただけると嬉しいです。