• ベストアンサー

HPの例題について

sleep-soulの回答

回答No.1

#include <stdio.h> typedef struct point{ int max; int min; double average; }POINT; POINT seiseki_shutoku(int *ten) { int sum=0; POINT po; po.max=po.min=*ten; while(*ten!=-1){ if(*ten>po.max){//代入処理} else if(*ten<po.min){//代入処理} sum += *ten; //合計を求める *ten++; //次の要素のポインタへ(ten[0]のときten[1]へ) } po.average = sum/10; //合計を10で割る return po; } int main(void) { int ten[11]={78,86,56,77,47,63,94,37,50,74,-1}; POINT po; po=seiseki_shutoku(&ten[0]); //ten[0]のアドレスを渡す printf("最高点=%d\n",po.max); printf("最低点=%d\n",po.min); printf("平均点=%.1lf\n",po.average); return 0; } こんな感じです。

teru3128
質問者

お礼

ありがとうございます。

関連するQ&A

  • scanfの後のfgetsについて

    #include <stdio.h> int main(void) { char name[10]; int no; printf("ナンバーを入力してください: "); scanf("%d",&no); /* 35を入力 */ printf("文字列を入力してください: "); fgets(name,10,stdin); /*入力できない*/ return 0; } この例文だと、fgets関数が改行コードを読み取って、終了してしまい文字列入力が出来ないみたいなんですが、scanfの後にfgetsを使うような(scanfとfgetsの間にscanfの残した?改行コードを取り除く方法)処理はどのような方法があるのでしょうか? 試しにfgets文を2度書いたら思っていた動作をしてくれたのですが、はたしてfgets文を2度書くというような事をしていいものなのでしょうか?見た目もなんだか変な感じですし。。↓ #include <stdio.h> int main(void) { char name[10]; int no; printf("ナンバーを入力してください: "); scanf("%d",&no); /* 35を入力 */ printf("文字列を入力してください: "); fgets(name,10,stdin); fgets(name,10,stdin);  /*入力できる*/ return 0; }

  • キーボードからの入力

    http://www9.plala.or.jp/sgwr-t/c/Q/ens15-41.html 安全性を考えて上のページの問題の入力をscanfではなくfgetsを用いての入力で行いたいのですが、いまいち方法が分かりません。 いろいろ試してみたのですが上手くいかないのでヒントをいただけないでしょうか?よろしくお願いします。 17:59分に投稿したものはURLが間違っていたので無視して下さい。 大変申し訳ありませんでした。

  • 標準入力の際に、、、fgets

    標準入力の際にgetsやscanfは読み込むバイト数を指定できないので危険、 fgetsを使えという話を良く聞きますが、fgetsだと改行まで読み込んで しまいますよね。これで少し困っています。 読み込んだ文字列から'\n'を探して'\0'を代入することはできますが 面倒くさいです。もっと手軽にscanfのように改行を含めずに 標準入力から受け付けるのをfgetsなどではどうやればいいのでしょうか。 よろしくお願いいたします。

  • fgetsを使って入力した文字列を読み込む。

    こんにちは。私は30代の男性です。 上司から、「C言語でコーディングする際にscanfは使わずにfgetsを使うように」との指示があったのですが、scanfしか使ったことがないので、具体的にどうコーディングすればいいのかわかりませんでした(聞いても教えてもくれず…)。どのようにすればfgetsを使って入力した文字列を読み取れるのか、わかる方がいらっしゃれば簡単な例文で教えて頂けるとありがたいのですが。 どうぞ宜しくお願い致します。

  • fgets関数とscanfについて

    fgets関数とscanfの意味が似ていると思うんですが、違いは何ですか? 例えば、fgets( str, 81, stdin ) は変数strに80文字制限で、標準入力から入力するという意味ですよね? scanf("%s",s)は変数sに文字列を入力するという意味ですよね? 意味が似てると思うんですが、実際は何が違うんでしょうか? 回答よろしくお願いします。

  • [c言語] 大きな文字列の入力

    scanfやfgetsで入力を使用としても4000文字程度までしか受け取らないのですが それ以上の長さの文字列を受け取りたい場合はどうすればいいでしょうか? よろしくお願いします

  • c言語のscanfとfgetsについて

    2つの単語A, Bを入力して、AがBに含まれるか否かというプログラムで 以下のようなものを作成しました。 そこで質問なのですがscanf()をfgets()に変えるとうまく動作しません どこが間違ってますか? 変更したいfgets fgets(key, sizeof(key), stdin); fgets(word, sizeof(word), stdin); ------------------------------------------------- int main(void) { char key[101], word[101]; scanf("%s", key); scanf("%*c%s", word); if (strstr(word, key) != NULL) { printf("Find %s In %s\n", key, word); } else { printf("Not Find\n"); } return 0; }

  • goto文が思うようにいかない

    goto文をつくプログラムを組んだのですが、動作が思うようになりません。 《ソースコード》 #include <stdio.h> void main() { int c; char shin2[50]; start: printf("文字を入力してください"); fgets(shin2, sizeof(shin2), stdin); printf("続けるなら0,終わるならそれ以外を入力"); scanf("%d",&c); if(c==0)goto start; } 説明のため省略した部分があるので意味のないソースコードになっています。 最後のscanfで0を入力して、goto文でラベルstartに移ったあとのfgetsが、値を入力する前に次に移ってしまいます。これはなぜでしょうか?回答よろしくお願いします。

  • fgetsとsscanf

    C言語の勉強をしております。 初歩的な質問なのかもしれないですが、 char buf[80]; char data[32]; fgets(buf,sizeof(buf),stdin); sscanf(data, "%s", buf); と、 fgets(data, sizeof(buf), stdin); は何が違うのでしょう? 他の質問内容やネットで探してみたんですが、基本的には組み合わせて使用されているみたいなんですが、必要性がわかりません・・・。 例えば、fgetsで構造体のメンバ(文字配列)へキーボードからデータを入力したい場合は、どちらで行うのが良いのでしょう? また、入力データが未入力かどうか判断させるには、 fgets(buf,sizeof(buf),stdin); if(buffer[0] == '\n'){   /* ループを抜ける */   break; } で良いですよね? ※関連している質問 http://oshiete1.goo.ne.jp/qa4438371.html あと、同じ処理内で、getsやscanfを混同して使用すると、どこかの入力時に改行がバッファに残ってしまい、入力処理が飛ばされてしまいますか? 以上、よろしくお願いいたします。

  • ヒントをください!

    ある課題があるんですが、 「ユーザに好きな整数を10個入力させ、その最小値と最大値を出力するプログラムを書いてください。if文を使ってください。」 このプログラムを作る際のヒントをください。ぜんぜんわからないので。。。 答えは作ってから見たいので。。。 よろしくおねがいします。 10個数字を入力させるプログラムは作りました。 #include <stdio.h> int main(void){ int c,e,r,u,t,v,d,a,p,n; printf("好きな整数を10個入力してください。\n"); printf("整数を入力:"); scanf("%d",&c); printf("整数を入力:"); scanf("%d",&e); printf("整数を入力:"); scanf("%d",&r); printf("整数を入力:"); scanf("%d",&u); printf("整数を入力:"); scanf("%d",&t); printf("整数を入力:"); scanf("%d",&v); printf("整数を入力:"); scanf("%d",&d); printf("整数を入力:"); scanf("%d",&a); printf("整数を入力:"); scanf("%d",&p); printf("整数を入力:"); scanf("%d",&n); return 0; } このようになりました。