ここから本文です

C言語プログラム作成について

kad********さん

2011/11/812:53:51

C言語プログラム作成について

プログラムを作ってるのですが、提示された問題が解けません。
例解をお願いいたします。

1.1年は365.2422日。これを何日何時間何分何秒に当るかを計算し、次の書式で出力しなさい。
出力データ:xxx NICHI XX JIKAN xx FUN xx.x BYO

2.底辺a 高さbを入力し、三角形の面積を求めよ。入力データと出力データの書式は次の通りとする。
入力データ:20.0 5.4
出力データ:a = xxx.x
b = xxx.x
menseki = xxxx.x

3.半径rを入力。円周(2πr)、円の面積(πr2)「注 r2乗」、球の体積(4πr3/3)、球の表面積(4πr2)を求め、次の書式で出力せよ。
円周率は3.14159とする。
入力データ:5.0
出力データ:HANKEI = xxx.x
ENSYU = xxxx.x
MENSEKI = xxxxx.x
TAISEKI = xxxxxx.x
HYO-MENSEKI = xxxxx.x

4.代金dを入力し、税3%と5%の場合の支払い金額を求め、次の書式で出力せよ。1円未満は切り捨てる。
入力データ:1980
出力データ:DAIKIN(TAX3%) = xxxxYEN
出力データ:DAIKIN(TAX5%) = xxxxYEN

5.身長(cm)と体重(Kg)を入力し、理想体重((身長 - 100)*0.9)との差を求めよ。入力データと出力データを次の書式で出力せよ。
入力データ:H160W50
出力データ:HEIGHT = xxx.xx(cm)
WEIGHT = xx.xx(Kg)
RISO = xx.xx(Kg)
WEIGHT -RISO = xx.xx(Kg)

6.身長と体重のデータを読み込み、定義から判定するプログラムを作成せよ。
定義:身長h(cm)、体重w(Kg)とすると
w < (h-95)*0.82 やせすぎ
w > (h-95)*1.10 ふとりすぎ
中間 正常

7.入力された数値を100で割った場合に割り切れるかどうかを判定するプログラムを作成せよ。

8.(+,-,*,/)の入力により、2つの数値30と7の加算、減算、乗算、除算を実行するプログラムを作成せよ。
除算の結果は少数値とせず、余りを使って表示せよ。

9.(6)で作成したプログラムを無限に入力を受け付け、適当な数字が入力されたら終了するように変更せよ。

10.5つの実数値の入力を受け付け、その平均値を求めるプログラムを作成せよ。

11.(10)で作成したプログラムを無限に数値を読み込めるようにし、適当な数値が入力されたら繰り返しを終了し、平均値を計算して出力せよ。

12.1から50までの整数から素数を表示するプログラムを作成せよ。


以上となります、よろしくお願いします。

補足5.は4.の例解を参考にしました。
#include<stdio.h>
int main(void)
{
double a,b,c;
printf("身長を入力");
scanf("%lf",&a);
printf("体重を入力");
scanf("%lf",&b);
printf("入力データ:H%4.0fW%3.0f\n",a,b);
printf("出力データ:HEIGHT=%6.2f(cm)\n",a );
printf("出力データ:WEIGHT=%5.2f(Kg)\n",b );
printf("出力データ:RISO=%5.2f (Kg)\n",c=(a-100)*0.9);
printf("出力データ:WEIGHT-RISO=%5.2f(Kg)\n",b-c);
return 0;
}

閲覧数:
421
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

qwe********さん

編集あり2011/11/906:45:00

1
#include<stdio.h>
#include <math.h>
#define YEAR 365.2422

int main(void)
{
double s,m;

s=fmod((YEAR-365)*60*60*24,60);
m=(YEAR-s)/60;
printf("%.0lf NICHI %.0lfJIKAN %.2lfBYO\n",YEAR,m,s);

return 0;
}

2
#include<stdio.h>

int main(void)
{
double a,b;

printf("入力データ:");
scanf("%lf %lf",&a,&b);
printf("出力データ:a=%.1lf\n",a);
printf("b=%.1lf\n",b);
printf("menseki=%.1lf\n",a*b/2);

return 0;
}
3
#include<stdio.h>
#define PI 3.14159

int main(void)
{
double r;

printf("入力データ:");
scanf("%lf",&r);
printf("出力データ:HANKEI=%.1lf\n",r);
printf("MENSEKI=%.1lf\n",PI*r*r);
printf("TAISEKI=%.1lf\n",4*PI*r*r*r/3);
printf("HYO-MENSEKI=%.1lf\n",4*PI*r*r);

return 0;
}
4
#include<stdio.h>

int main(void)
{
double d;

printf("入力データ:");
scanf("%lf",&d);
printf("出力データ:DAIKIN(TAX3%%)=%.0lfYEN\n",d*1.03);
printf("出力データ:DAIKIN(TAX5%%)=%.0lfYEN\n",d*1.05);

return 0;
}
5については入力データがH160W50のような感じですと数値を取り出す処理が必要になるが、それを考えるのが面倒です。

7
#include<stdio.h>

int main(void)
{
int d;

printf("入力データ:");
scanf("%d",&d);
if(d%100==0)printf("割り切れます\n");
else printf("割り切れません\n");

return 0;
}
8
#include<stdio.h>

int main(void)
{
char s;

printf("==>");
scanf("%c",&s);
if(s=='+')printf("%d",30+7);
if(s=='-')printf("%d",30-7);
if(s=='*')printf("%d",30*7);
if(s=='/')printf("%d余り%d",30/7,30%7);

return 0;
}
12
#include<stdio.h>

int sosu(int n)
{
int i;

for(i=2;i<n;i++)if(n%i==0)return 0;

return n;
}

int main(void)
{
int n;

for(n=2;n<=50;n++)if(sosu(n)!=0)printf("%d\n",n);

return 0;
}

質問した人からのコメント

2011/11/10 19:49:26

ありがとうございます。未解決のは別に質問を上げます。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

ecl********さん

2011/11/1012:31:03

qwertyuio3456さん、quickbrwnfoxjumpsoverthelazydogさん
質問者さんは「printf("入力データ:H%4.0fW%3.0f\n",a,b);」などとdoubleの出力を%fで行っています、わざわざ改悪して「printf("%.0lf NICHI %.0lfJIKAN %.2lfBYO\n",YEAR,m,s);」などdoubleの出力を%lfで行うように回答するのですか?
%lfはC99以前は未定義で使えません、C99以降でしか使えません。

qui********さん

編集あり2011/11/1014:45:49

回答欄はたった2000文字しか書けないの。こんなに一杯並べても回答は無理。BAなんていうシステムがあるから細切れ回答はあまりしない傾向があるみたいだし。かといって、質問連発するのも嫌われるから難しいね。自分で出来る範囲はやって、それで詰まったところを(自分でやった部分までをちゃんと書いて)質問すると好感度というか回答率アップするんじゃないかな。
その辺
http://note.chiebukuro.yahoo.co.jp/detail/n1493
なんかに目を通して考えてみてね。

じゃ、7番の主要部分だけ。体裁は自分で適宜やってください。
判定する、っていうのがどういう意味かちょっとあいまいだから、その辺も好きなようにやって下さい。
まさか数値の入力が出来ないとはいわないよね? scanfでも使って数値をint型の変数numに入力したとして、

if(num%100){ /* %は整数割り算の余りを求める演算子。割り切れれば0で、if文は「偽」として扱う */
/* 割り切れなかった時の処理 */
} else {
/* 割り切れた時の処理 */
}

追記
ん? 5の入力部分が面倒? じゃあヒント。以下のプログラムを走らせて
H160W50
と(そのまま)入力してみ。問題にある入力の形式を勝手に変えちゃだめだよ。

#include <stdio.h>

int main(void)
{
double height,weight;

scanf("H%lfW%lf",&height,&weight);
printf("h=%lf w=%lf\n",height,weight);
return 0;
}

ecl_love_youさん
ごめん。手が滑った。自分ではgcc(一応C99)だから-Wallは入れてたけどお咎め無しで漏れた。
#組み込みエンジニアにはそもそも浮動小数点もprintfも縁が遠くてねぇ...

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる