• ベストアンサー

プログラミング(ASCIIコード)

kt1965の回答

  • kt1965
  • ベストアンサー率34% (116/339)
回答No.1

カテゴリー違いかも知れませんが、とりあえず回答しておきます。 特に問題は無いです。ただし、scanfのところが問題になるでしょう。 正確には、scanf("%d",a);です。 なぜならば、%fで読み込むと、floatになって、intで取り込めない。 float型は、大抵の場合にはIEEEの仕様になりますので、全然違う値になります。 仕事用に作る場合には、判別用の定数をマクロにしておいて、EBICDIC、ASCII、EUC、Unicodeのそれぞれに対応できるようにしておきます。

tonyemly
質問者

お礼

返信ありがとうございます。 %fでやってみましたがだめでした。 scanfにHを入れて実行したところ、”その他”としか表示できません。 小文字も試しましたが、同じ結果でした。

関連するQ&A

  • このプログラミングで。

    #include <stdio.h> int main(void) { int x; printf("長い河はどれ?\n 1天の川 2三途の川 3谷川\n"); scanf("%d",&x); if(x == 1){ printf("なるほど"); } else if(x == 2){ printf("フーン"); } else if(x == 3){ printf("やっぱり?"); } else if(x != 1){ printf("ハァ?"); } else if(x != 2){ printf("ハァ?"); } else if(x != 3){ printf("ハァ?"); } return 0; } これを実行して 等しくないときハァ?と表示させて、ふたたび、入力をさせる方法を教えてください。何度でも入力を求める方法もありましたら教えていただきたいです。 とても理解に苦しむような質問ですがよろしくおねがいします。

  • プログラミングについての質問です

    C言語で詰将棋のプログラミングをしたのですが、実行して答えを入力してもうまくいきません。どこがまちがってるのか教えていただけませんか?なおprintfを使って場を表現した部分が長すぎて4000文字に収まらないので、そこは割愛しています。 #include<stdio.h> int main(int argc, const char * argv[]){ int yoko,tate,yoko2,tate2,yoko3,tate3; char koma,koma2,koma3; printf("詰め将棋をしましょう\n"); ~printf略~ printf("持ち駒:なし\n相手の駒は玉(1二)、歩(1三)、角(1四)、飛(2五)、あなたの駒は龍(3二)、と(3一)、角(2二)です。\n\n残り3手ですが、何を動かしますか?\n"); printf("龍、と、角のいずれかを入力:"); scanf_s("%c\n", &koma); if(koma == '龍'){ printf("どこに動かしますか? (例:「9九」なら「9 9」と入力):"); scanf_s("%d %d\n",&yoko,&tate); if((yoko==2)&&(tate==1)){ ~printf略~ printf("王手です。玉を守りましょう。最長手となるように動かしてください。\n\n残り2手ですが、何を動かしますか?\n"); printf("玉、歩、角、飛のいずれかを入力:"); scanf_s("%c\n",&koma2); if(koma2=='玉'){ printf("どこに動かしますか?:"); scanf_s("%d %d\n",&yoko2,&tate2); if((yoko2==2)&&(tate2==3)){ ~printf略~ printf("残り1手です。この1手で相手を詰みにしてください。何を動かしますか?:"); printf("龍、と、角のいずれかを入力:"); scanf_s("%c\n",&koma3); if(koma3=='角'){ printf("どこに動かしますか?:"); scanf_s("%d %d\n",&yoko3,&tate3); if((yoko3==4)&&(tate3==4)){ ~printf略~ printf("あなたの勝ちです!\n"); } else{ printf("残念!\n"); } } else{ printf("残念!\n"); } } else{ printf("残念!\n"); } } else{ printf("残念!\n"); } } else{ printf("残念!\n"); } } else{ printf("残念!\n"); } return 0; }

  • Cプログラミング(文字入力)

    文字を二つ入力して、TかFであれば 1~3、それ以外は4を返すプログラムです。 下記のソースでは正常に動作しませんでした。 どの文法が間違っているか判らないので、 どなたか指摘頂けないでしょうか。 宜しくお願いします。 char a,b; printf("1つめの文字を入力してください-->"); scanf("%c",&a); printf("2つめの文字を入力してください-->"); scanf("%c",&b); if(a=='T'&&b=='T')   printf("結果:1\n"); else if((a=='T'&&b=='F')||(a=='F'&&b=='T'))   printf("結果:2\n"); else if(a=='F'&&b=='F')   printf("結果:3\n"); else   printf("結果:4\n");

  • C言語 文字列の比較 compare

    プログラミング初心者です。 60文字以内の文字列を入力して、 大小関係を比較・表示するプログラムなのですが・・ 「AはBより大きい」という結果しか出ません。 どこが間違っているのか、ご指摘お願いしますっ。 #include<stdio.h> int main(void) { char moji1[61]; char moji2[61]; printf("文字列Aを入力===>"); scanf("%60s" ,&moji1); printf("文字列Bを入力===>"); scanf("%60s" ,&moji2); if(moji1-moji2>0){ printf("===AはBより大きい===\n"); } else if(moji1-moji2<0){ printf("===AはBより小さい===\n"); } else if(moji1-moji2==0){ printf("===AとBは等しい===\n"); } return 0; } int compare(char *x, char*y) { while(*x==*y){ if(*x=='\0') return 0; x++; y++; } return (*x-*y); }

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

  • このプログラミングのいけないところは?

    こういうプログラムを作ったんですけど、なぜか正常に作動しません!理由をおしえてください!!!!!! お願いしますーーー!!ちなみに内容はドイツ語です。 #include "stdafx.h" void tyuusinn(); void head_1(); void head_2(); int main() { while(1){ tyuusinn(); } return 0; } void tyuusinn() { int a; printf("(1)→sein,haben,werdenについて\n"); printf("(2)→定冠詞\n"); printf("表示したい項目を選んでください\n"); scanf_s("%d",&a); if(a == 1){ head_1(); } else if(a == 2){ head_2(); } } void head_1() { char a[90] = " sein haben werden"; printf("%6s\n",a); printf("------------------------------\n"); char b[90] = "ich bin habe werde"; printf("%6s\n",b); char c[90] = "du bist hast wirst"; printf("%6s\n",c); char d[90] = "er ist hat wird"; char e[90] = "wir sind haben werden"; char f[90] = "ihr seid habt werdet"; char g[90] = "sie sind haben werden"; printf("%6s\n%6s\n%6s\n%6s\n",d,e,f,g); return; } void head_2() { char a[90] = "der des dem den"; char b[90] = "die der der die"; char c[90] = "das des dem das"; char x[90],y[90],z[90]; printf("男性名詞は?\n"); scanf("%s",&x); if(x == a) printf("正解です。\n"); else printf("不正解!正解は%sです。\n",a); printf("女性名詞は?\n"); scanf("%s",&y); if(y == b) printf("正解です。\n"); else printf("不正解!正解は%sです。\n",b); printf("中性名詞は?\n"); scanf("%s",&z); if(z == c) printf("正解です。\n"); else printf("不正解!正解は%sです。\n",c); return; }

  • c言語についての質問です。

    #include<stdio.h> int main(void){ int a; printf("1文字たいぷしてください。\n"); scanf("%d",&a); if(a>=65 && a<=90){ printf("大文字です。\n"); } else if(a>=97 && a<=122){ printf("小文字です。\n"); } else{ printf("大文字でも小文字でもありません\n"); } return 0; } このプログラムは正しくなくて、 intをchar %dを%cにかえなければなりません。 なぜintはダメなんでしょうか? できれば丁寧に教えてください。 お願いします。

  • 標準ライブラリ関数と標準入力を使ったプログラミング

    C言語で「入力された数字をASCIIコードとして文字で出力する」というプログラムを作っています。 isdigitを使って入力が数字だったら値を出力して、それ以外のときはエラーメッセージが出力されるようにしたいのですが上手く動作しません。 以下が作ったプログラムなのですが。 #include<stdio.h> #include<ctype.h> int main(void) { int=a; scanf("%d",&a); if(isdigit(a))printf("%c",a); else printf("エラーです"); return 0; } isdigitの使い方がいまいちよく分かってないのともしかしたら根本的に何か大きく違ってるのかもしれないのですが何か助言等あれば頂きたいので宜しくお願いいたします。

  • どこが悪いのか・・・

    初めまして、こんばんわ。 学校の課題で、二次方程式のXの解を求めるC言語のプログラムを作ったのですが 何故か巧く起動しません。 よくわかりません・・・。 是非、何処が悪いのか指摘していただくと嬉しいです。 /*2-10(su210.c)*/ #include <stdio.h> #include <math.h> main() { int a,b,c; float D,x,y; printf("a*x^2+b*x+c=0のときa.b.cを入力して下さい。\n"); printf("a="); scanf("%d",&a); printf("b="); scanf("%d",&b); printf("c="); scanf("%d",&c); if(a=0){ if(b=c=0) printf("xはすべての実数をとる。"); else{ if(c=0&&b!=0) printf("x=0"); else{ if(b=0&&c!=0) printf("解なし。"); else{ if(b!=0&&c!=0) {x=-c/b; printf("x=%f",x);} } } } } else{ if(a!=0){ D=b^2-4*a*c; if(D>0){ x=(-b+sqrt(D))/2/a; y=(-b-sqrt(D))/2/a; printf("判別式はD>0です。\n"); printf("x1=%f\n",x); printf("x2=%f\n",y);} else{ if(D=0){x=-b/2*a;printf("判別式はD=0です。\n");printf("x=%f",x);} else{ if(D<0){printf("判別式はD<0です。\n");printf("解なし。");} } } } } }

  • プログラミングで質問があります。

    プログラミングで質問があります。 実数値を入力して、その平均を出すプログラミングを作ったのですが、うまく行きません。 どこが間違っているのか教えてほしいです #include <stdio.h> int main (void) { float a=1,sum=0; int b=0,i; while(a!=0) { printf("整数値を一つ入力してください。"); scanf("%f",&a); if(a!=0) { b=b+1; } for(i=0;i<=b;i=i++) { sum=sum+a; } } printf("平均値は%fです\n",sum/b); } 実行して、10、10、10と入力すると、90になってしまいます(..;)