- ベストアンサー
このプログラム課題を完成させるヒントを下さい。
以下のようなプログラム課題があるのですが、イマイチ問題のとっかかりがわかりません。 というかどのようなプログラムを書けばいいのかイメージが全然つかめません… %cってそもそもなんなのでしょうか?明解C言語にも載ってませんし… 正直、お手上げ状態ですのでどなたかご教授してくる方いましたらお願いします…。 print の %d と同じ出力を %c だけ使って実現しなさい. ヒント: 剰余演算子 % をつかいます. 502 % 100 = 2 #include <stdio.h> int main(void) { int d ; int i ; d = 502 ; for (i = 0 ; ??? ; ???) { printf("%c", ???) ; } ; return(0) ; } ;
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- C言語でこのプログラムを完成させるには
C言語でこのプログラムを完成させるには C言語初心者です。 1~6の乱数を100回発生させて、それぞれの出現回数をカウントし、ヒストグラムとして表示するプログラムを作成したいのですが上手くいきません。 #include <stdio.h> #include <time.h> #include <stdlib.h> int rnd(int m, int n) { return (int)(n-m+1)*(rand()/(RAND_MAX+0.1))+m; } int main(void) { int i, j, r; int hist[7]; for (i=1; i<7; i++) hist[i]=0; srand((unsigned)time(NULL)); for (i=0; i<100; i++) { r=6; while (6-- > 0) putchar('*'); putchar('\n'); } for (i=1; i<7; i++) { printf("%2d:", i); for (j=0; j<hist[i]; j++) printf("*"); printf("\n"); } return 0; } 何がいけないのでしょうか? よろしくお願いします。
- ベストアンサー
- C・C++・C#
- プログラム
下のようなプログラムを作ったのですが、10進2進変換をj=n>>2&1の部分にあるようなビットシフトではなく、 for(i=1;i<8;i++){printf("bit[%d]=%d\n",i,n%2);n=n/2;}に変えて剰余計算で行うプログラムにしたいのですが、分かる方がいましたら教えて下さい。お願いします。 #include <stdio.h> int main(void) { int i,j,n; i=2; printf("数字を入力="); scanf("%d",&n); printf("Dec=%d\n",n); printf("heX=0x%x\n",n); j=n>>2&1; printf("bit[%d]=%d\n",i,j); return(0); }
- 締切済み
- C・C++・C#
- 2つのプログラムの違い
どうしても分からなかったので投稿しました。よろしくお願いします。 #include<stdio.h> int main(void) { int c; while((c=getchar())!=EOF){ putchar(c); } return 0; } のプログラムをコマンドプロンプトで入力すると、 abc abc なんですが、 #include<stdio.h> int main(void) { int c,i; i=0; while ((c=getchar())!=EOF) { putchar(c); i++; printf("%d\n",i); } return 0; } の場合、 abc a1 a2 a3 4 になります。 自分は abc a1 a2 a3 になると思ったのですが、a3と4の隙間と4は何故出て来たのでしょうか?
- ベストアンサー
- C・C++・C#
- 二次元配列の対各成分を書き出すプログラムについて
実行結果が3,5,7を書き出すプログラムを作成したいです。1,5,9を書き出す(以下のプログラム)を書き出すものは出来たのですが、3,5,7を書き出すプログラムが解りません。誰か解る方、教えて下さい。 #include<stdio.h> int main(void){ int i,mt[3][3]= {{1,2,3}, {4,5,6}, {7,8,9}}; for(i=0;i<3;i++){ printf("%d",mt[i][i]); } printf("\n"); return(0); }
- 締切済み
- C・C++・C#
- プログラムの添削
以下のような数当てゲームを作りました.なるべくうまいプログラムを書けるようになりたいのですが,どのような改善点がありますか?よろしくお願いします. /*数当てゲームを作りなさい.*/ #include<stdio.h> void maegaki(void); /*このように関数を定義しまくることに意味はあるのか?main関数はすっきりするけど.*/ void in_check_out(int i); int main(void) { int i; int j; maegaki(); for(j=0;j<10;j++) { scanf("%d",&i); in_check_out(i); if(!(i-1)) return 0; printf("残り%d回です.\n",9-j); } return 0; } void maegaki(void) { printf("数当てゲームをはじめます.\nぼくの好きな整数を当ててください.\nチャンスは10回です.\nヒントはボゾン\n"); } void in_check_out(int i) { if(!(i-1)) { printf("正解!答えは1です.\n"); } else { printf("残念!\n"); if(i>1) printf("%dより小さいです.\n",i); else printf("%dより大きいです.\n",i); } }
- 締切済み
- その他(プログラミング・開発)
- 昇順に並べ替えるプログラム(続き)
(C言語)実行例のような3つの整数を読み込み昇順に並べ替えるプログラムは途中までわかったのですがあとはどう修正・追加をすればいいのでしょうか? 実行例 1:45 2:43 3:38 昇順に並べ替えました。 1:38 2:43 3:45 途中までのプログラム #include<stdio.h> int main(void) { int n1,n2,n3; printf("1:"); scanf("%d",&n1); printf("2:"); scanf("%d",&n2); printf("3:"); scanf("%d",&n3); printf("昇順に並べ替えました。\n"); return 0; }
- 締切済み
- C・C++・C#
- このプログラムのどこを直せばいいんでしょうか?
いま、文字列strの中に文字cが含まれている個数を表示するプログラムを作っているんですが、下のように作っても、上手く行きません。 どこをどう直せばいいのか教えてください! #include <stdio.h> int str_chnum (const char str[],int d) { int i=0; int sum=0; while(str[i]!=0){ if(str[i]==d ){ sum++; } i++; } return(sum); } int main(void) { int c; char str[128]; puts("put sentence..."); scanf("%s",str); puts("search character..."); scanf("%d",&c); printf("there are %d %ds in this sentence.",str_chnum(str,c),c); return(0); }
- ベストアンサー
- C・C++・C#
- 素数であるかを判断するプログラムについて
C言語を学習していて「独習C」48ページの次のプログラムが分かりませんでした。 ~~~~~~~~~~~~~~~~ #include <stdlib.h> #include <stdio.h> int main(void) { int num, i, is_prime; printf("判定したい数を入力してください"); scanf("%d", &num); /*ここからがわかりません*/ is_prime = 1; for(i=2; i<=num/2; i=i+1) if((num%i)==0) is_prime = 0; if(is_prime==1) printf("素数です"); else printf("素数ではありません"); return 0; } ~~~~~~~~~~~~~~~ 私はこうなると考えています。どこが間違っているでしょうか? numが0のとき、2<=0となり、素数 numが1のとき、2<=0.5となり、素数でない numが2のとき、2<=1となり、素数でない numが3のとき、2<=1.5となり、素数でない
- ベストアンサー
- C・C++・C#
- C言語<素数を求めるプログラム>
#include<stdio.h> int j; int prime(int n) { int i; if(n < 2) return 0; if(n == 2) return 1; if(n%2 == 0) return 0; for(i = 3; i*i<= n; i += 2){ if(n%i == 0) return 0; } return 1; } int main(void) { int n; for(n=1; n <= 1000; n++) { if(prime(n)){ printf("%d\n",n); j++; } } printf("素数の個数は全部で %d 件見つかりました。\n",j); return 0; } このプログラムは1から1000までの素数のみを表示させるプログラムでありますが、このアルゴリズムが全くわかりません。 int prime(int n)の中身のアルゴリズムがどういう仕組みになっているのかお分かりになりますでしょうか?
- ベストアンサー
- C・C++・C#
- 普段会わない友達への出産祝いについて悩んでいます。仲の良い友達夫婦に子供ができたので、友達グループでお金を出し合って贈ろうと思っています。しかし、そのグループの中に出産祝いを贈っていない子持ちの既婚者が3人います。
- その3人には贈っていないのに、今回だけ贈ることになると申し訳なく感じるし、気分を悪くさせるかもしれません。この状況で出産祝いを贈る場合、子持ちの3人以外にも声をかけて贈る、もしくは私個人で贈る方がいいでしょうか。
- 他にもいい方法があれば教えてください。
お礼
非常に丁寧な回答ありがとうございます。 なるほど、%cとはそういうものだったんですね。 数字502を1数字ずつに分解して文字に直して出力すれば良いのかぁ…。 それで今回の場合は問題に沿って、for分を使って3回プログラムを回せば良かったんですね。 問題の意味共にyamame3092さんの書いていただいた内容もしっかり理解できました。 アスキーコードを使った問題を解くのはほとんどやっていなかったので 今回の問題の方向性が掴めず非常に困っておりました。 今後の参考にさせてもらいます。本当に助かりました。 改めてありがとうございます。