C言語でキーボードから名前と住所を入力し表示するプログラムの作成方法

このQ&Aのポイント
  • C言語でキーボードから自分の名前と住所を入力し、大文字と小文字をランダムに続けて表示するプログラムを作成する方法について説明します。
  • 入力された文字列に含まれる大文字と小文字の数をカウントし、ディスプレイに表示する方法も説明します。
  • また、具体例としてC言語プログラムのコードを示しますが、一部修正が必要な点もご注意ください。
回答を見る
  • ベストアンサー

c言語において、

"キーボードから自分の名前と住所を半角英文字で大文字と小文字をランダムに続けて入力し、「自分の名前と住所」と「小文字が何文字あるかと、大文字が何文字あるか」をディスプレィに表示するプログラムを作成しなさい。” とした場合、どのように表示させればよいのでしょうか?ちなみに、 #include<stdio.h> void main(void) { char a[100]; int i=0; printf("自分の名前と住所を半角英小文字で大文字と小文字をランダムに続けて入力して下さい\n"); scanf("%s",a); while(a[i]!=0){ if(a[i]<65,90<a[i]<97,122<a[i]) printf("a[%d]=%c, ",i,a[i]); else if(64<a[i]<91) printf("a[%d]=%c,%c ",i,a[i],a[i]+32); else printf("a[%d]=%c,%c ",i,a[i],a[i]-32); if((i+1)%5==0) printf("\n"); ++i; } } では、うまくいきません。 具体例を書いていただけるとありがたいです。

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

  • ベストアンサー
  • KEIS050162
  • ベストアンサー率47% (890/1879)
回答No.3

下記で試してみてください。(試してないので、コンパイルエラーが出るかも知れませんが、そこは適当に直してください) void main(void) { char a[100]; int i=0, x=0, y=0; printf("自分の名前と住所を半角英小文字で大文字と小文字をランダムに続けて入力して下さい\n"); scanf("%s",a); while( a[i] != 0 ) { if ( ( a[i] >= 'A' ) && ( a[i] <= 'Z' ) ) x++; if ( ( a[i] >= 'a' ) && ( a[i] <= 'z' ) ) y++; i++; } printf( "\n名前・住所 %s 大文字 %d, 小文字%d\n", a, x, y ); } ご参考に。

audi8110
質問者

お礼

ありがとうございます。参考にさせて頂きます。 もしまた何かありましたらその際は宜しく御願い致します。

その他の回答 (2)

回答No.2

> では、うまくいきません。 どううまくいかないのかを書きましょう。 ちなみに、 > if(a[i]<65,90<a[i]<97,122<a[i]) > if(64<a[i]<91) ここは、あなたの思い通りになっていないでしょう。 どうすればよいのかは、if文に複数の条件を記述する場合の書き方を調べてみればわかります。

audi8110
質問者

お礼

自分でいろいろ調べてみます。ありがとうございます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

私には "キーボードから自分の名前と住所を半角英文字で大文字と小文字をランダムに続けて入力し、「自分の名前と住所」と「小文字が何文字あるかと、大文字が何文字あるか」をディスプレィに表示するプログラムを作成しなさい。” という文章の意味が分かりません. 自然に解釈すると「キーボードから~表示する」プログラムを作れ, ってこと? プログラムに「キーボードから入力させる」のか.... どうするんだろう. ロボットでも使う?

関連するQ&A

  • 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言語

    #include <stdio.h> int main(void) { int a=0,ans1,ans2,ans3,ans4; printf("整数を入力してください。\n"); scanf("%d",a); ans1 = a+7; ans2 = a*;8 ans3 = a%3; ans4 = a*(-1); printf("%d\n",ans1); printf("%d\n",ans2); printf("%d\n",ans3); if(a==15){ prntf("true\n",a); } else{ printf("false\n",a); } if(a != 8){ printf("true\n",a); } else{ printf("false\n",a); } if(a <= 3){ printf("true\n",a); } else{ printf("false\n",a); } printf("%d\n",ans4); if(a<2||7<a){ printf("true\n",a); } else{ printf("false\n",a); } return 0; } これを実行しようとしてもexeファイルになりません。 教えていただけませんか?

  • C言語における複素数の四則演算について

    複素数の四則演算(a+biとc+diの四則演算)について、for文を用いて表示するプログラムについて、???の部分に何を入れたらよいかわからず、うまく実行することができません。和・差・積・商の計算種別を入れるみたいなのですが、何を入れたらいいのかわかりません。 #include <stdio.h> void fukuso(double a,double b,double c,double d,double *e,double *f,int keisan); int main(void) { double a=4, b=8, c=4, d=3, e, f; int i; for(i=1;i<5;i++){ fukuso(a,b,c,d,&e,&f,???); if(i==1) printf("和演算\n"); else if(i==2) printf("差演算\n"); else if(i==3) printf("積演算\n"); else printf("商演算\n"); printf("e=%f f=%f i\n",e,f); } return (0); } void fukuso(double a1,double b1,double a2,double b2,double *a3,double *b3,int keisan) { if(keisan==1){ *e=a+c; *f=a+c; } else if(keisan==2){ *e=a-c; *f=b-d; } else if(keisan==3){ *e=a*c-b*d; *f=a*d+c*b; } else{ *e=(a*c+b*d)/(c*c+d*d); *f=(-a*d+c*b)/(c*c+d*d); } }

  • C言語の配列の使い方について質問です。

    以下のプログラムを配列を使って見やすくしたいのですが、どのように作ったら良いでしょうか? 宜しくお願いします。 #include<stdio.h> int main(void) { int a, b, c, d, e, f, g, h, i, j, k, l, m ,n, o; /*5段目の処理*/ for(a = 1; a <= 15; a++) { for(b = 1; b <= 15; b++) { if(a == b) continue; for(c = 1; c <= 15; c++) { if(a == c || b == c) continue; for(d = 1; d <= 15; d++) { if(a == d || b == d || c == d) continue; for(e = 1; e <= 15; e++) { if(a == e || b == e || c == e || d == e) continue; // printf("%d %d %d %d %d\n", a, b, c, d, e); ////4段目//// if(a>b){ f=a-b; } else if(a<b){ f=b-a; } if(b>c){ g=b-c; } else if(b<c){ g=c-b; } if(c>d){ h=c-d; } else if(c<d){ h=d-c; } if(d>e){ i=d-e; } else if(e<d){ i=e-d; } // printf(" %d %d %d %d \n", f, g, h, i); /////3段目//// if(f>g){ j=f-g; } else if(f<g){ j=g-f; } if(g>h){ k=g-h; } else if(g<h){ k=h-g; } if(h>i){ l=h-i; } else if(h<i){ l=i-h; } // printf(" %d %d %d \n", j, k, l); /////2段目//// if(j>k){ m=j-k; } else if(j<k){ m=k-j; } if(k>l){ n=k-l; } else if(k<l){ n=l-k; } // printf(" %d %d \n", m, n); /////三段目///// if(m>n){ o=m-n; } else if(m<n){ o=n-m; } // printf(" %d \n", o); if(a != b != c != d != e != f != g != h != i != j != k != l != m != n != o){ printf("%d %d %d %d %d\n", a, b, c, d, e); printf(" %d %d %d %d \n", f, g, h, i); printf(" %d %d %d \n", j, k, l); printf(" %d %d \n", m, n); printf(" %d \n", o); } } } } } } }

  • C言語の問題がわからないです。

    C言語のプログラムで、列数を自分で決めて、 (例)3列         ●(この行を最後として)   □● ●□● 上記のプログラムを作りたいのですが、 上手くいきません。途中まで作ったのですが、なかなか思うようにいかないです。どうすれば上記のようになりますでしょうか? #include <stdio.h> void disp(int x, int y); main() { int i,n; printf("表示する列:"); scanf("%d",&n); disp(3,3); for(i=1;i<=n;i++){ if(i%2==0){ disp(n-i,4); disp(i,2); } else{ disp(n-i,4); disp(i,1); } disp(1,3); } } void disp(int x, int y) { int i; for(i=0;i<x;i++){ if(y==1){ printf("●"); } else if(y==2){ printf("□"); } else if(y==3){ printf("\n"); } else{ printf("\0"); } } }

  • C言語 無効な例外ハンドラー ルーチン

    失礼します現在C言語を書籍にて勉強しておりますが、エラーが出てしまいすすめません正誤表などがなくこまっています現在のソースは #include <stdio.h> int str_char(const char str[], int c) { int i; for (i = 0; str[i] != '\0'; i++) if (str[i] == c) return (i); return(-1); } int main(void) { int no; char ch[10]; printf("英文字を入力してください"); scanf_s("%s", ch); no = str_char("ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz", ch[0]); if (no >= 0 && no <= 25) printf("それは英大文字の%dです\n", no + 1); else if (no >= 26 && no <= 51) printf("それは英小文字の%dです\n", no - 25); else printf("それは英文字ではありません\n"); return(0); } で、出てくるエラーメッセージは ハンドルされない例外が 0xFEFEFEFE (helloworld.exe) で発生しました: 0xC00001A5: 無効な例外ハンドラー ルーチンが検出されました。 (パラメーター: 0x00000003)。 です。 よろしくお願いします

  • C言語でのじゃんけん

    こんちには。 C言語の乱数を用いてじゃんけんプログラムを作ろうと思っているのですが、 エラーメッセージが出てしまいうまくいきません。 どこがおかしいのでしょうか? #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i,j,k; printf("じゃんけんをしましょう(ぐー:1、ちょき:2、ぱー:3)¥n"); for(k=k; k<=10; k++) { srand(time(NULL)); j=rand()%3+1; scanf("%d",&i); if(i==1&&j==1) printf("私はグーなので、あいこです¥n"); else if(i==1&&j==2) printf("私はチョキなので、あなたの勝ちです¥n"); else if(i==1&&j==3) printf("私はパーなので、あなたの負けです¥n"); else if(i==2&&j==1) printf("私はグーなので、あなたの負けです¥n"); else if(i=2&&j==2) printf("私はチョキなので、あいこです¥n"); else if(i==2&&j==3) printf("私はパーなので、あなたの勝ちです¥n"); else if(i==3&&j==1) printf("私はグーなので、あなたの勝ちです¥n"); else if(i==3&&j==2) printf("私はチョキなので、あなたの負けです¥n"); else if(i==3&&j==3) printf("私はパーなので、あいこです¥n"); else printf("1か2か3を入力してください¥n"); } } OS mountain lionで利用中ですが、 「じゃんけんをしましょう(ぐー:1、ちょき:2、ぱー:3)」 と表示されたまま、うまく動作しません。 教えてください。

    • ベストアンサー
    • Mac
  • Cのプログラム(初心者)

    #include<stdio.h> void main(void) { int a,b,c; printf("西暦で生まれた年を入力してください。\n"); scanf("%d",&a); printf("今の年を西暦で入力してください。\n"); scanf("%d",&b); c=b-a; if('0'<=c&&c<='23'){ printf("あなたは%d歳です。げんき。\n",c); } else if('24'<=c&&c<='40'){ printf("あなたは%d歳です。仕事盛り。\n",c); } else if('41'<=c&&c<='60'){ printf("あなたは%d歳です。まだいける。\n",c); } else if('61'<=c&&c<='99'){ printf("あなたは%d歳です。がんばれ。\n",c); } else{ printf("100歳以上なの?\n"); } } というプログラムを作っているのですが、うまく実行できません。間違いがあると思うのですが、それもよくわかりません。ビルドは成功するのですが、どの数字を入力しても「げんき」しか出てきません。 わかる人がいたら教えてください。 お願いします。

  • C言語

    forの直後で1+2+3+4+5+・・・・・・・と加算し続ける式がわからないので教えてください。 #include<stdio.h> int main(void) { char moji; int i,sum; printf("正の整数を1から順に加算します。n\"); printf("加算を開始してよろしいですか。(Y=実行。N=終了)\n"); moji=getchar(); if(moji==y) { for(i=2;sum>=1001;i++) { この部分がわかりません; printf("加算値は%dです。¥n",sum); } }else if(moji=='n'){ printf("終了します。\n"); }else{ printf("YまたはNを入力してください。\n"); } return 0; }

  • C言語

    ストップウォッチの一時停止の機能をもつプログラムを作成しているのですが、上手く動作しません。 (一時停止し、再開してもその状態から再開できない状態) #include <windows.h> #include <mmsystem.h> #include <stdio.h> #include <conio.h> #pragma comment(lib, "winmm.lib") int main(void) { int command;//キーボード入力の文字判別用変数 int quit_flag = 1;//プログラム終了フラグ 0で停止 int c_flag = 0;//カウント状態取得用フラグ 1:カウント中,0:停止中 int h,m,s,ms;//左から,時間,分,秒,ミリ秒 int b,c,d,e; int a; int f,g,i; DWORD start,cur; printf("使い方:小文字の's'でカウントスタート.カウント中,小文字の's'で停止.次の's'でまた0からスタート\n"); printf("使い方:どんな状態でも小文字の'r'でカウントリセットして停止\n"); printf("使い方:qでプログラム終了\n\n"); printf("使い方:tを押すと一時停止.一時停止中,tで計測再開\n"); h=m=s=ms=0; b=c=d=e=0; while(quit_flag != 0)//quit_flagが0以外ならループ { while(!_kbhit())//何かキーが押されるまでループ { if(c_flag != 0)//c_flagが0以外であればカウント中ということ. { h=m=s=ms = timeGetTime() - start; b=h/3600000; c=(m/60000)%60; d=(s/1000)%60; e=ms%1000; cur=timeGetTime(); ms=(cur-g); f=ms; } printf("%02d:%02d:%02d:%03d\r",b,c,d,e); } command=_getch();//ループを抜けるために押されたキーの内容をcommandに代入. if(command=='s' && c_flag == 0) { printf("\n計測開始\n"); c_flag = 1; start = timeGetTime() ; h=m=s=ms=0; } else if(command=='t' && c_flag != 0) { printf("\n一時停止\n"); c_flag = 0; a=c_flag; //計測開始時にtを押すとバグが発生するため } else if(command=='t' && a==0) { printf("\n計測再開\n"); c_flag = 1; f=timeGetTime(); } else if(command=='s') { printf("\n計測中止\n"); c_flag = 0; } else if(command=='r') { printf("\nカウンタリセット,停止\n"); c_flag = 0; h=m=s=ms=0; } else if(command=='q') { printf("\n終了\n"); quit_flag = 0; } else if(command=='l' && c_flag==1) { c_flag=0; printf("\nラップ\n"); printf("%02d:%02d:%02d:%03d\n",h/3600000,(m/60000)%60,(s/1000)%60,ms%1000); c_flag=1; } } return 0; } 差分をとれば良いと聞いたのですが、どのようにとれば良いか全く分からなくて困っています。 ソースコードを修正または適宣追加をしてくだされば幸いです。

専門家に質問してみよう