- ベストアンサー
mbed C言語について
c言語の初歩的な質問です。 http://www.oidenansho.com/elekijack/mbed/2bk0919_gyro_servo/gyro_servo.htm のページにあるプログラムで ♯define on 1 ♯define off 0 ♯define Gy1_offset 0.01 とあるのは、どういう意味でしょうか? どこにどんなふうに反映されるのでしょうか? またprintf %2.5fの意味を教えてください。小数点以下5桁を指定している? 2は何でしょうか? わかる方、お願いします(>_<)
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- C言語について
最近C言語を始めたばかりです。 誰か教えてください。 私の勉強している、明解C言語入門の演習2-6で、 以下に示すように、身長を整数値として読み込んで、標準体重を実数で表示するプログラムを作成せよ。標準体重は(身長-100)×0.9によって求め、その小数点以下は、1桁だけ表示すること。 身長を入力してください。 標準体重は67.5です。 がわかりません。 念のため、私の作ったものを参考にして答えを教えていただけないでしょうか? #include <stdio.h> int main(void) { int na; puts("身長を入力してください。"); printf("身長:"); scanf("%d",&na); printf("標準体重は[%.1f]です。%n", (double)(na - 100) * 0.9); return(0); }
- ベストアンサー
- C・C++・C#
- C言語について質問です。
C言語について質問です。 C言語初心者の者です。 1に1ずつ加えていき、9までいったら、 次は0.1ずつ加えていき、9.9までいったら、 その次は0.01ずつ加えていき、9.99までいったら そのまた次は0.001ずつ加えていき・・・ といった計算をするプログラムを考えています。 9まではこのように作りました。 #include <stdio.h> main() { float a; a=1; while(a<10) { printf("%f\n",a); a++; } } この先をどのように作ったらいいのかわかりません。 同じようにして0.1を加えていくといった方法も考えたのですが、 小数点以下15桁以上は計算したいので、 とても長くなってしまいます。 9までいったら自動的に加える数が1/10になるようにしたいのですが どうしたらいいのかわかりません。 説明が下手で本当にごめんなさい。 どなたか教えていただけないでしょうか?
- ベストアンサー
- C・C++・C#
- C言語初心者です。
大学に入ってからC言語を授業で習い始めました。なので、すごい初歩的なことですが丁寧に教えてくださると嬉しいです。いくつか分からないことがあるので教えてください。 1・よくprintf("");なので%dや%fを使いますが、これはint(整数)の時が%dで、double(小数点付)の時に%fを使えばいいのか。 2・mul(呼び出す)、return(戻る)の意味、使い方 3・if(aaaa%4==0){ if(aaaa%100!=0)printf("閏年である。\n"); else{if(aaaa%400==0)printf("閏年である。\n"); else printf("閏年ではない。\n"); の意味は、もしaaaaが4で割り切れ、100で割り切れなかったら閏年で、そうではなく100で割り切れ400で割り切れたら閏年である。という意味でいいのか。 4・andとor,whileの使い方が分からない。 5・授業でやったことなのですが、 # include<studio.h> int passWordInput(); main(){ int a, pw=1234, a=passWordInput(); if(a==pw)printf("ok\n"); else{a=passWordInput(); if(a==pw)printf("ok\n"); else{a=passWordInput(); if(a==pw)printf("ok\n"); else printf("Byw!!\n"); } } } int passWordInput(){ int wk; printf("パスワード:");scanf("%d",&wk); return wk; } がよく分かりませんでした。特にwkが出てくるあたりからです。 一応全て自分なりに本とか見てみましたが、あまり理解出来なかったので詳しい回答をしてくださると嬉しいです。よろしくお願いします。
- ベストアンサー
- C・C++・C#
- C初心者です
学校でC言語を習い始めたばかりの初心者です。以下のプログラムを作成したいのですが、お教え願います。ちなみに授業では整数型の変数を定義してなんちゃらとか、printfというところまでしかやってません。 1、5人の身長の平均を求めるプログラム(小数点以下切捨て) 2、1の人数5に対してNUMBERというマクロ名を与え、プログラムを書き換えよ。(#defineで定義とか言うひヒントがかいてありました) 3、#defineによるマクロ名を使うメリットは何か? という3つです。 1は変数を5個定義してやればいいんですかね?それを全部足して5で割って…、でいいんでしょうか? 2,3はまったく分かりません。 かなり簡単な質問かとは思いますが、なにぶん始めたばかりなものなので、お教え願います。 できたらプログラムリストを示していただきたいです。 宜しくお願い致します。
- ベストアンサー
- C・C++・C#
- c言語です
c言語初心者です。今大学の課題でc言語のプログラムをかいているのですが、うまくいかないので助けて欲しいです。以下のようなプログラムで調和平均の値を出したいのですがなぜか表示されません。infと表示されてしまいます。あと調和平均とはn/(1/d1+1/d2+1/d3+.........+1/dn)の値です。ここでd1~dnは入力された数のことです。なので0が入力された場合は値を返さないようにしたいです。 どこをどのように直せばいいのか教えてください。よろしくお願いします。 #include <stdio.h> #include<math.h> #define M 1000 int main (int argc, const char * argv[]) { // insert code here... float d[M]; double e[M]; double wa=0.0,av,bun=0,kika=1,tyowa=0; /*avはaverageを,bunは分散を意味します*/ int i=0,j=0; printf("複数の数字を入力してください\n"); printf("数字入力を終了するときはnull文字を入力してください\n"); printf("数字以外が入力されたら\n"); printf("それまでの数字の計算結果を表します\n"); /*数字を入力、和を求める*/ while (scanf("%f",&d[i])!='\0') { wa=wa+d[i]; i++; } if (i!=0) { printf("算術平均は%fです\n",wa/i); av=wa/i; for (j=0; j<i; j++) { kika=kika*d[j]; } printf("幾何平均は%fです\n",pow(kika,1./i)); for (j=0; j<i; j++) { if (d[j]=0) { printf("調和平均は出せません\n"); } else e[j]=1/d[j]; } for (j=0; j<i; j++) { tyowa=tyowa+e[j]; } printf("調和平均は%fです\n",e[1]); for (j=0; j<i; j++) { bun=bun+(d[j]-av)*(d[j]-av); } printf("分散の値は%fです\n",bun/i); } else { printf("数字を入力してください\n"); } return 0; }
- ベストアンサー
- C・C++・C#
- C言語 基礎の勉強をしています。
C言語を勉強していた所わからなかった点があったのでぜひお力を貸して頂けると助かります。参考書には演習問題しかのっておらず解答がのっていなくて・・・(明解C言語 入門編 著者:柴田望洋) p.77 演習4-14 問題 例のように、身長と標準体重の対応表を表示するプログラムを作成せよ。なお、表示する身長の範囲(開始値、終了値、増分)は、整数値として読み込み、標準体重は小数点以下を2桁だけ表示すること。 (例)このように表示。標準体重は (身長-100)*0.9で求めるとする 何cmから:150 (←数字の部分を入力として受け付けます) 何cmまで:190 何cmごと:5 150cm:45.00kg 155cm:49.50kg ...(190cmまで以下略) 自分で記述してみたプログラムが↓です。実行したところ無限ループしてしまいます。なぜだか原因がつかめませんので教えていただけると助かりますm(__)m #include <stdio.h> int main (void){ int x;/*何センチから*/ int y;/*何センチまで*/ int z;/*何センチごと*/ printf("何センチから:"); scanf("%d",&x); printf("何センチまで:"); scanf("%d",&y); printf("何センチごと:"); scanf("%d",&z); for(; x <= y;x + z) printf("標準体重=%.2f",(x - 100)*0.9); return 0; } 以上が演習4-14の問題です。
- ベストアンサー
- C・C++・C#
- gnuplotをC言語で操作する方法
C言語を用いてgnuplotを操作しデータファイルから自動的にグラフを作成するプログラムを作ろうとしています。 使用環境はWindows7、VisualStudio2010です。 ほとんどの部分はうまくいったのですが一部分が正しく表示されません。 軸の目盛ラベルの表示フォーマット設定のコマンドで set format x "%.1f" として小数点以下一桁を強制的に表示させるためC言語でパイプを用いて #define GNUPLOT_PATH "C:/gnuplot/binary/pgnuplot.exe" int plot(char *file_name){ FILE *gp; gp = _popen(GNUPLOT_PATH, "w"); fprintf(gp, "set title 'TEST PLOT'\n"); : (中略) : fprintf(gp, "set format x '%.1f' \n");//この部分が正しく反映されません。 : (中略) : fprintf(gp, "plot '%s' using 1:2 with linespoints lt 4 lw 5 pt 6 ps 2.0 lc rgb 'red'\n",file_name); fprintf(gp,"quit \n"); fflush(gp); _pclose(gp); return 0; } '%.2f' の部分をいろいろいじってみたのですがうまくいかず、なぜできないのか原因がわかりません。 fprintf()の数値代入の %f と混ざってしまっているのでしょうか?
- ベストアンサー
- C・C++・C#
- C言語の問題-配列について
今、独学でC言語をやっているんですが本にのっている問題に解答がなくわかりません。 問題はbunpu[tensu[i] / 10]++;はどういう意味を表すかです。 do-while分の繰り返しがおわった後にbumpuに++があるので+1をすればいいのでしょうか?よくわかりません・・・ 学生10人の点数の分布を10点ごとに分布グラフとして表示します。 #include <stdio.h> #define NUMBER 80 int main (void) { int i,j,num; int tensu[NUMBER]; int bunpu[11] = {0}; puts("点数を入力してください"); for("i =0; i < num; i++"){ printf("%2d番",i + 1); do{ scanf("%d",&tensu[i]); if(tensu[i] < 0 || tensu[i] > 100) printf("0以上100以下"); }while (tensu[i] < 0 || tensu[i] > 100); bunpu[tensu[i] / 10]++; } puts("\n 分布ぐらふ "); printf(" 100:"); for (j = 0;j < bumpu[10];j++) putchar('*') putchar('\n') for(i = 9; i>=0; i--) { printf("%3d - %3d:",i*10,i*10+9); for (j=0; j< bunpu[i];j++) putchar('*'); putchar('\n'); } return(o); }
- ベストアンサー
- C・C++・C#
- C言語の問題が解けません
C言語の問題ができなくて困っています。 これが問題文です。 与えられた表の縦・横の値の平均/合計をそれぞれの行・列ごとに求め出力するプログラムを作成しなさい。ただし、縦・横のデータ数は10個未満とし、それぞれの数字は整数とする。また、出力は右詰め6桁で出力することとし、平均における小数点以下は1桁まで表示する。平均行/列および合計行/列がぶつかる個所は、表全体の平均と合計を計算した結果を表示する。 補足として入力された行列数が10未満であることは、プログラム内でチェックすること。 例:20,3→再入力となる(行が9未満でない) :2,-5→再入力となる(行が負の値) 実行結果例はこんな感じらしいです。 行数(最大9),列数(最大9)をカンマ区切りで入力(行,列):4,4 データをカンマ区切りで行ごとに入力[4行 4列] 52,96,15,20 86,22,35,45 45,78,54,36 16,86,74,55 52 96 15 20 45.8 183 86 22 35 45 47.0 188 45 78 54 36 53.3 213 16 86 74 55 57.8 231 49.8 70.5 44.5 39.0 50.9 - 199 282 178 156 - 815 自分はここまで自力でやったのですがここからが試行錯誤してもできません。このあとどのようにプログラムを書いていけばいいのですか? よろしくお願いします。 #include <stdio.h> int main(){ int gyou,retu,Loop1=0,Loop2=0; int kazu[8][8]; printf("行数(最大9行)、列数(最大9列)をカンマで区切って入力 (行,列):"); scanf("%d,%d",&gyou,&retu); if((gyou<=9)&&(retu<=9)){ printf("データをカンマ区切りで行ごとに入力 [%d行,%d列]\n",gyou,retu); for(Loop2=0;Loop2<gyou;Loop2++){ for(Loop1=0;Loop1<retu;Loop1++){ scanf("%d\n",&kazu[gyou--][retu--]);
- 締切済み
- C・C++・C#
補足
ありがとうございます。しかし、その後のプログラムの中に、『on 』の記述がないのはなぜでしょうか? 使用しないのなら特に定義しなくてもいいような気がするのですが…