• ベストアンサー
  • すぐに回答を!

Cプログラミング 初歩

#include <stdio.h> int main (void){ double num; printf("実数を入力して下さい:"); scanf("%lf",&num); printf("あなたは%fと入力しましたね\n",num); return(0); } のプログラミングがコンパイル出来ません↓ printf("あなたは%fと入力しましたね\n",num); をprintf("%f\n",num);のようにすると上手くいくのですが、 どうしたらコンパイルできるか分かる人はいますか?

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数669
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.4
  • jacta
  • ベストアンサー率26% (845/3158)

GCCのバージョンが3.4以上であれば、コンパイル時に下記のオプションを付けてみてください。 -finput-charset=iso-2022-jp -fexec-charset=cp932

共感・感謝の気持ちを伝えよう!

質問者からのお礼

-finput-charset=iso-2022-jp -fexec-charset=cp932は読み取れないそうです…

関連するQ&A

  • プログラミング 実数 合計値

    プログラミング 実数 合計値 3つの実数を読み込んで合計を表示するというプログラムのソースについてなんですが #include <stdio.h> int main(void) { double na, nb, nc; puts("3つの実数を入力してください。"); printf("実数:"); scanf("%5.lf", &na); printf("実数:"); scanf("%5.lf", &nb); printf("実数:"); scanf("%5.lf", &nc); printf("合計は%5.lfです。\n", (double)(na + nb + nc); return (0); } でコンパイルしてみたんですが、構文エラーでreturnの前の行で')'が';'の前にありません というのが出てきてコンパイルできないのですが、これはどこが間違ってるんでしょうか?

  • プログラミング 実数 合計

    3つの実数を読み込んで合計を表示するというプログラムなんですが、プログラムをコンパイルして3つの実数を入力してくださいと表示させて実数1に1.5、実数2に0.8、実数3に1.0, 合計は3.3です表示させたいのですが #include <stdio.h> int main(void) { double n1,n2,n3; puts("3つの実数を入力してください。"); printf("実数:"); scanf("%lf", &n1); printf("実数:"); scanf("%lf", &n2); printf("実数:"); scanf("%lf", &n3); printf("合計は%5.lfです。\n",(double)(n1 + n2 + n3)); return (0); } でコンパイルしようとすると1つしか実数を入力する所が出てこなくて 数字を入れると合計は.lfですと出てきて実行できないのですが、上のソースのどこか間違ってる所があったら教えてくれませんか?

  • C言語の演習

    大学1年のものです。C言語の勉強をしていて演習問題をやったんですけど、答えがないので詳しい方答えの確認お願いします!! 実数を入力してください:57.3 あなたは57.3000000と入力しましたね。 っていう問題なんですけど、 #include<stdio.h> int main(void) { double vx; puts("2つの整数を入力してください:"); scanf("lf",&vx); printf("あなたは%fと入力しましたね。/n"".vx); return 0; } でいいんでしょうか??

その他の回答 (3)

  • 回答No.3
  • Wr5
  • ベストアンサー率53% (2177/4070)

ソースファイルの文字コードをJISからShitfJISに換えてみてください。 ShitfJISでダメだった場合はUTF-8かEUCか……。 "あなたは"が、 1B 24 42 24 22 24 4A 24 3F 24 4F 1B 28 42 となっています。 22のところが'"'になってしまうため、ここで文字列が終わってしまっています。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ソースファイルの文字コードを変えてみましたけど、ダメでした。

  • 回答No.2
  • splwtr
  • ベストアンサー率16% (75/461)

どのような環境ですか? OS,コンパイラ、言語環境、どうやってコンパイルしたか等々。 こちらは Mac OSX 10.5.2 gcc version 4.0.1 (Apple Inc. build 5465) 記載通りコンパイルできました。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お礼のコメントの場所間違えました 汗 お早い回答、どうも有難うございます。 WindowsXPでプログラミングを勉強しています。 gccファイル名でコンパイルしました。すると次のようなに出てきます… 2-2.c: 関数 `main' 内: 2-2.c:9: error: 文法エラー before "$J$" 2-2.c:9: error: stray '\33' in program 2-2.c:9: error: stray '\33' in program 2-2.c:9: error: stray '\33' in program 2-2.c:9: error: stray '\' in program 2-2.c:9:51: " 文字での終端を欠いています

質問者からの補足

お早い回答、どうも有難うございます。 WindowsXPでプログラミングを勉強しています。 gccファイル名でコンパイルしました。すると次のようなに出てきます… 2-2.c: 関数 `main' 内: 2-2.c:9: error: 文法エラー before "$J$" 2-2.c:9: error: stray '\33' in program 2-2.c:9: error: stray '\33' in program 2-2.c:9: error: stray '\33' in program 2-2.c:9: error: stray '\' in program 2-2.c:9:51: " 文字での終端を欠いています

  • 回答No.1

私の環境ではコンパイルできましたが・・・ 失礼ですがあなたの開発環境を教えていただきますか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます! 上に詳しく書きましたので宜しくお願いします!

質問者からの補足

回答ありがとうございます! 上に詳しく書きましたので宜しくお願いします!

関連するQ&A

  • 平均を求めるプログラムを作ったのですが答えが0.0

    としか出ません。 #include<stdio.h> void main (void) {   double a; double b;   double c; printf("Aを入力する"); scanf("%lf",&a); printf("Bを入力する"); scanf("%lf",&b); c=(2*a*b)/(a+b); printf("平均値は"); printf("%8.6lf",c); } というプログラムを作ったのですが、プログラムはコンパイルするのですが出てくる答えは0.000000しか出ません。ほかにもよく0.0000という答えが出ることがあります。原因を教えていただけませんでしょうか。 

  • ax^2+bx+c=0の解を求めたいのですが・・(初歩的です)

    タイトル通り、a、b、cを入力させて、ax^2+bx+c=0の解xを求めたいのですが、結果をどう求めればいいのか、実解・虚数解・重解の場合をどうしたらいいのか、の2点がよくわかりません。 #include<math.h> #include<stdio.h> double sqrt(double a,double b,double c) { return (b*b-4*a*c); } main(void) { double a,b,c,sqrt,ans; do{ printf("ax^2 + bx +c = 0 の解 x を求めます。\n a,b,cを入力してください。\n"); printf("a : "); scanf("%lf",&a); printf("\nb : "); scanf("%lf",&b); printf("\nc : "); scanf("%lf",&c); if(a = 0){ printf("a は0以外を入力してください。\n"); } }while(a = 0); ans = (-b+dist(a,b,c))/(2*a); printf("%lf", ans); printf("\n"); return(0); } 他にも多々ダメな部分があると思いますがご指摘・アドバイス等いただけたらと思います。よろしくお願いします。

  • プログラミング 関数について教えて下さい。

    プログラミングについての質問です。 関数を使った以下のプログラムを作成し、実行してみたのですが、上手くいきません。 どこかおかしいのでしょうか? 教えていただけると幸いです。ご回答お待ちしております。 #include <stdio.h> double add (double x,double y); int main(void) { double a,b,c; printf("double型の数を入力して下さい。\n"); scanf("%f\n",&a); printf("もうひとつdouble型の数を入力してください\n"); scanf("%f\n",&b); c=add(a,b); printf("入力された2数の和は%fです。\n",c); return 0; } double add(double x,double y) { double z; z=x+y; return z; }

  • c言語 プログラミング(初心者)

    解を判定するプログラミングを作成したのですが、a,b,cを0,1,2と入力したときに解に0.00000が出てきて解がおかしくなります。 どなたか詳しい方教えてください。また簡潔にできる点などありましたらご指摘お願いします。 #include <stdio.h> #include <math.h> int main (void) { double a,b,c,d,x1,x2; printf("ax^2+bx+c=0 の係数を入力してください\n"); scanf("%lf %lf %lf",&a,&b,&c ); if(a==0){ if(b==0) { printf("解は存在しません\n"); } else { x1=-c/b; printf("解は %f です\n",x1); } } else { d=b*b-4*a*c; if(d>=0){ x1=(-b+sqrt(d))/(2.0*a); x2=(-b-sqrt(d))/(2.0*a); if(d==0){ printf("解は %f (重解)です\n",x1); } else { printf("解は %f と %f です\n",x1,x2); } } else { printf("実数解は存在しません(虚数解)\n"); } } return 0; }

  • プログラミングC言語

    プログラミングC言語の問題で、 「ベクトルの内積を用いて、2つのベクトルの成す角度を求めるプログラムを作成せよ。」 という問題をやっていて、以下の画像のような答えになるのですが、上手くいきません。 どのようにすればいいのでしょうか? 作ったソースコード #include<stdio.h> #include<math.h> double naiseki(int *vecterA, int *vecterB) { double rad, deg; rad = acos( (vecterA[0]*vecterB[0] + vecterA[1]*vecterB[1]) / ( sqrt((double)(vecterA[0]*vecterA[0] + vecterA[1]*vecterA[1])) * sqrt((double)(vecterB[0]*vecterB[0] + vecterB[1]*vecterB[1])) ) ); deg = rad/3.141592*180; return deg; } int main(void) { double va[2]; double vb[2]; printf("v1_x:"); scanf("%lf", &va[0]); printf("v1_y:"); scanf("%lf", &va[1]); printf("v2_x:"); scanf("%lf", &vb[0]); printf("v2_y:"); scanf("%lf", &vb[1]); puts("内積から求めたベクトルの角度は"); printf("%f",naiseki(va,vb)); puts("です。"); return(0); } 最後のnaiseki(va,vb)のところで互換性がありませんと でてしまいます。 double naiseki のソースコードはこのままでプログラムが 動くようにしてほしいです。 よろしくお願いします!

  • Cプログラミング 

    素数を判定するプログラミングの作成で以下のプログラミングを作成したのですが、すべて 素数でないとでてしまいます。どなたか間違いをおしえていただけませんでしょうか。 #include<stdio.h> int main(void) { int num,i; printf("Please input a number:"); scanf("%d",&num); for (i=2; i < num ; i++){num % i; if (num % i == 0) break; } if (num % i == 0) printf("%d is not prime. \n" ,num); else printf("%d is prime. \n" ,num); return 0; }

  • C言語の関数に関する質問ですが

    C言語の初心者です。よろしくお願いいたします。 授業でこのような演習が出ました。 演習:実数x を入力したときの最大値を求めるプログラムを作れ. 実数x を入力すると,x; -x; x2; xの絶対値の平方根 の中で一番大きい値を答える プログラムを作れ(ファイル名はmax.c とする). 表示は以下のようにする. Input x: -0.5 【Enter】 Answer is 0.707107. #include<stdio.h> #include<math.h> double max(double a, double b){ if( a > b) return a; else return b; } int main(void) { double x,y; printf(\"Input x: \"); scanf(\"%lf\",&x); y = max (x,-x); y = max (y,x*x); y = max (y,sqrt(fabs(x))); printf(\"Answer is %f.\\n\",y); } このように書けばうまく実行できますが、関数の中に関数を使えないでしょうか。うまく言えないですが、たとえば、以下のように書いてみましたが、うまく実行できません。どう直したらいいでしょうか、お忙しい中教えていただけたらうれしいです。 #include <stdio.h> #include <math.h> int max(double a,double b) { if (a<b) return b; else return a;} int main(void) { double x,result; printf(\"Input x:\"); scanf(\"%lf\",&x); result=max(max(x,-x),max(pow(x,2),sqrt(fabs(x)))); printf(\"%.2f\",result); return 0; } よろしくお願いいたします!!

  • 2次方程式の解 Cプログラミング

    C言語でのプログラムの添削をお願いします。 2次方程式の解を求めるものなのですが。 #include<stdio.h> #include<math.h> main(){ double a,b,c,d; double x1=0; double x2=0; scanf("%lf %lf %lf" ,&a,&b,&c); printf("a=%f b=%f c=%f\n" ,a,b,c); d=b*b-4*a*c; if(d>0){ x1=(-b+sqrt(d))/2*a; x2=(-b-sqrt(d))/2*a; printf("x=%f,%f\n" ,x1,x2); }else if(d<0){ x1=-b/2*a; x2=sqrt(-d)/2*a; printf("x=%f+%fi,%f-%fi\n" ,x1,x2,x1,x2); }else{ printf("x=%f\n" ,x1); } return 0; } このとき、 a=-7,b=2,c=-1 を与えると x=7.000000+-17.146428i,7.000000--17.146428i という値が返ってきます。 他にも、虚数解のときに間違った値が返ってきてしまう気がするのですが、いかがでしょうか? 実数解のときは正しいようです。 回答よろしくお願いします。

  • プログラミング 問題

    もともとの商品の値段が1000円を超えている場合は1割引する。1000円以下の場合はそのままである。まず商品の値段を引数に取り、割引後の値段を返す関数を書け。 次に、この関数を使って「最初に10回商品の値段を入力すると、それぞれに対して割引後の値段をまとめて表示する」というプログラムを書け。 ここまで出来ましたがそれ以上どうしてもわかりません。エラーも出ます 教えてくださいm(_ _ )m #include <stdio.h> double discount(double a); int main(void) { double i,c,n[10]; for(i=0; i<10; i++){ printf("price?"); scanf("%lf",&c); n[i]=discount(c); } for(i=0; i<10; i++){ printf("%f\n",n[i]); } return 0; } double discount(double a){ double b; if(a>1000){ b=a*0.9; }else{ b=a; } return b; }

  • C言語のプログラミングがうまくいきません!

    先日のプログラムを作り直しました。アドバイスのおかげでエラーは減りましたが、まだ完ぺきではないようです。恐らく、elseのところがいけないと思うのですが、どうしたらいいか分かりません。 ご指摘お願いします。 #include <stdio.h> #include <math.h> void main(void) { double x ,y ,z ,error ,menseki ; double ans; printf("x ?"); scanf("%lf", &x); printf("y ?"); scanf("%lf", &y); printf("z ?"); scanf("%lf", &z); if(x<y+z || y<x+z || z<x+y) { ans=(x+y+z)/2; menseki=sqrt(ans*(ans-x)*(ans-y)*(ans-z)); } if(x==y && y==z && z==x) { printf("正三角形です"); printf("面積は%lfです" , menseki); } else if(x==y || y==z || z==x) { printf("二等辺三角形です"); printf("面積は%lfです" , menseki); } else { printf("三角形です"); printf("面積は%lfです" , menseki); } else { printf("error"); } }