トップページ⇒tech
156コメント36KB

■C言語の基本問題-第一問■

■ このスレッドは過去ログ倉庫に格納されています
0001常識NGNG
KBで入力された文字列を、各文字がそれぞれ何個ずつあったか出力せよ。
変数は x[] moji[] cnt[] を使用することにする。
必要なら上記以外の変数を使用しても可。

結果例)------------------------------------
Enter:kasdaask
a:3 kai
s:2 kai
d:1 kai
k:2 kai
-----------------------------------------
これを表示するためのプログラムを、C言語で記述せよ。
#include<stdio.h>
void main(void)
{
ここを考える
}
0002デフォルトの名無しさんNGNG
/** 終了 **/
0003デフォルトの名無しさんNGNG
>>1
宿題か?
0004 NGNG
printf("Enter:kasdaask\na:3kai\ns:2kai\nd:1kai\nk:2kai\n");

return 0;
0005 NGNG
>>4
へたれプログラマー逝ってよし。
KBって書いてあるだろ!ゴルァ!
0006ビル・ジョブスNGNG
みんな!寝るよー!
0007デフォルトの名無しさんNGNG
KBってなんだ?
教えろ
00084NGNG
>>5
知ってるよ!ボケ!
各アルファベットを何回使ったか表示するプログラムだろ、1問目からめんどくせーじゃねーか!
0009デフォルトの名無しさんNGNG
>>1
終了はどうするんだよ。
終了の際に押したキーもカウントするのか?
00104NGNG
多分キーボードの略だろ,KB
0011常識NGNG
キーボードの事(KB)
任意で入力した文字を、1つずつ(重ならないよう)並べて、
その文字が何回使用されたかを、出力する問題。
答え、知りたい?
0012デフォルトの名無しさんNGNG
どうでもいいことだが、
> a:3 kai
> s:2 kai
> d:1 kai
> k:2 kai
なぜ「kai」?出力はテレタイプ?
0013デフォルトの名無しさんNGNG
全然。
0014 NGNG
>>8
はぁ、ここは、なんちゃってが多いな。
00154NGNG
まぁ答えが6行以内のプログラムだったら感動してやる。
0016デフォルトの名無しさんNGNG
>>11
出力は辞書順にする必要あるか?
0017デフォルトの名無しさんNGNG
>>1
変数名指定するのって、凄く宿題臭いですの。
しかも莫迦っぽいですの。
0018デフォルトの名無しさんNGNG
mainはintを(以下略)
0019 NGNG
>>16
>>1の結果例を見れば辞書順にする必要があるかどうか分かるだろ!馬鹿!
0020デフォルトの名無しさんNGNG
普通、KBって言ったらナレッジベース(Knowledge Base)を思うもんだがなぁ・・・
0021常識 NGNG
少し回答
----------------------------------------
char x[100];
char moji[100];
char cnt[100];
int x,y;

//文字列の入力
printf("Enter:");
scanf("%s",x);

--------------------------------------------------------
ヒント:変数の使い道
 x[100]⇒kasdaask
 moji[100]⇒kasd
0022デフォルトの名無しさんNGNG
>変数は x[] moji[] cnt[] を使用することにする。

変数なのに[]?
配列っていえや!モルァ
0023常識NGNG
問題だから、変数を指定するんだ!
そんなに作られた変数がいやなら、好きにしろ!
ここでは、メイン関数にintは使わない。
0024デフォルトの名無しさんNGNG
凄いよ!x[100] で、しかも scanf() だって!
尚かつ、moji[100] で cnt[100]!
参った>>21
0025常識NGNG
1次配列を使用します。
0026デフォルトの名無しさんNGNG
これは難しいぞ。
"kasdaask" と入力されてasdkの順に出力されてるのだが、
どんな方法か全く思いつかない。
きっとものすごいアルゴリズムが必要なのだろう。

0027デフォルトの名無しさんNGNG
>>20
すまん。>>1にはそんな知識は無いんだ。
なんたってchar x[100];だぞ。こういうときは普通ヒープ使うだろ?
0028デフォルトの名無しさんNGNG
>>25
何で配列じゃないとダメなの?

宿題なんだろ、早く白状しろ。
今ならまだ怒らないから。
0029 NGNG
>>24
お前の頭に参った。
0030デフォルトの名無しさんNGNG
(´−`)。o ○ (ディムパか…)
0031常識NGNG
>1です。
はい。宿題でした。ごめんなさい。
0032デフォルトの名無しさんNGNG
(´-`).。oO(きっと>>29は老いた時代錯誤プログラマなんだろうな)
0033常識NGNG
これは、隣り合う文字を比べながら、判定していく方法を使います。
0034 NGNG
>>31
おいおい・・・マジなのかよ
0035デフォルトの名無しさんNGNG
>>26
キーボードの、キーの並び順じゃないのか ?
0036 NGNG
>>26
馬鹿か?乱数を使うに決まってるだろ!
0037 NGNG
>>35
君、面白いな、ツボつかれた(藁
0038うんこNGNG
>>1 >>15
int cnt[256], c, i;
for(i=0;i<256;i++) cnt[i]=0;
printf("Enter:");
while((c=getchar())!='\n') cnt[c]++;
for(i=0;i<256;i++) cnt[i] && printf("%c:%d kai\n", i, cnt[i]);
return;

>>35
教官がキーボードを左から順に…(ワラ
0039デフォルトの名無しさんNGNG
cntスタックに取ってる奴は厨房
staticにしろよ
004015NGNG
>>38
変数cは初期化しなくていいのか?
0041デフォルトの名無しさんNGNG
scanfにprintf。挙句の果てにgetchar…か…。
0042デフォルトの名無しさんNGNG
>>40
↓この行の意味わかる?
while((c=getchar())!='\n') cnt[c]++;
0043デフォルトの名無しさんNGNG
x[]使い忘れてるぞ(藁
004438NGNG
>>39
こんなプログラムでそんなこと気にしてどないすんねんっちゅう…。
まあ、確かに俺は厨房だけど。

>>40
c=getchar()で最初に使ってるのに初期化してどないすんねんっちゅう…。

>>41
printfとgetcharって何か問題でも?

>>42
moji[]モナー
004544NGNG
あ、>>42が目にはいってなかった。
>>42じゃなくて>>43ね。
004615NGNG
>>38
scanfが無いのにどうやって入力するの?
004744NGNG
そういやgetcharって-1を返すことがあるような…

>>46
ネタですか?
004815NGNG
>>42
おれはまだそうゆう使い方習ってません。
基本問題1問目なのにそんなの使うのか?
0049常識NGNG
>1です
え〜〜〜〜〜〜〜〜〜〜。
こんなやり方、あったの?信じられない〜!!
getcharって-1を返す
なつかしい、響き。
00501.22NGNG
int i,*p = &i;
(*& * p = * p - 10 * 5) = 1 && 1 & 0 && & p || 0;

これはなんて言うエラーが表示される?
当ててみろ!
00511.22NGNG
言っとくがコンパイルとか試して調べるなよ。
そんなアフォはいないと思うが。
0052常識NGNG
>>48
使いません。scanfで大丈夫です。
ヒント:for(i=0 ; x[i]!='\0' ;i++) …省略
0053デフォルトの名無しさんNGNG
>50
エラー:スレッドが違います。
0054デフォルトの名無しさんNGNG
>>47
処理系依存だけどね。
0055常識NGNG
めちゃくちゃやな。
ポインタ?か?これ?
0056 NGNG
>>50
エラー:逝ってよし!
0057デフォルトの名無しさんNGNG
>>50
(*& * p = * p - 10 * 5)
この結果は左辺値じゃないから、代入できんやろ。
0058デフォルトの名無しさんNGNG
>>50
左辺が左辺値(ていうんだっけ?)ではないとか?
* & とかのほうが = より優先度高そうだし。
0059sageNGNG
cnt[] 初期化するなら
 int cnt[256] = {0};
が簡単。
しかし 0x00〜0xff まで受け付けるのに "%c" は如何なものか。
006015NGNG
>>52
それよりもscanfなしで入力できるの?
0061デフォルトの名無しさんNGNG
結局、答え出せるやついないんかいココは
三村やってるぐらいなら
コード書いてくれ
0062デフォルトの名無しさんNGNG
>>50
普通にコンパイル通りますがなにか?
0063デフォルトの名無しさんNGNG
((*(&(*p))=((*p)-(10*5)))=(((1&&(1&0))&&(&p))||0);

多分こうだろう。
0064デフォルトの名無しさんNGNG
>>62
ほんと?一字一句間違いなく入力した?
どう見ても左辺が左辺値になってないからコンパイル通らないよ。
0065デフォルトの名無しさんNGNG
馬鹿ばっか。
0066デフォルトの名無しさんNGNG
>>60
getcharがあるよ。
0067デフォルトの名無しさんNGNG
>>64
これって単純に
*p = 0;
やってるだけでそ。
つーか、コンパイルするなっつといて「ほんと?一字一句間違いなく入力した?」はないだろ。
0068デフォルトの名無しさんNGNG
>>62コピペしろ。
0069デフォルトの名無しさんNGNG
printfつかわないで
出力するにはどうやるの
0070 NGNG
>>50
は一年中がひなまちゅり。
0071デフォルトの名無しさんNGNG
>>62 >>67
どのコンパイラ?
0072デフォルトの名無しさんNGNG
コピペしてやってみたけどiが0になって正常終了したよ。
007364NGNG
>>67
わりい。「コンパイル通りますが」って書いてるから試したのかと思ったよ。
>>63見れば分かるでしょ。*p = 0; にはならないよ。
007415NGNG
>>69
何に対して?
0075デフォルトの名無しさんNGNG
Cで代入演算子は左辺のリファレンスを返しますか?
作り出されるのは右辺値だと思うが。
0076デフォルトの名無しさんNGNG
あ、たしかに0にはならないみたい。初期化したらダメなのかな
0077デフォルトの名無しさんNGNG
むしろ、
(*p = 0) = 0;
の方が近い。>>75の通り、これは
0 = 0;
になる。(0 == 0 じゃねーぞ)
当然コンパイルエラー。
0078デフォルトの名無しさんNGNG
>>printf
std outに対して・・・
0079デフォルトの名無しさんNGNG
>>78
putchar
0080デフォルトの名無しさんNGNG
vcは
(*p = 0) = 0;
が通るんだよね。
0081デフォルトの名無しさんNGNG
wchar_t euc = L'あ';
fputc(euc);
0082デフォルトの名無しさんNGNG
>>79
ほんとに助かりました
いま、自分のコンパイラprintf使えないもんで・・・
0083 NGNG
つーか俺は今、CASL�Uを勉強してるので、

    CASL�Uの問題スレにしましょう。    

0084デフォルトの名無しさんNGNG
>>1は大学生?専門学校?
この問題出した教官の言うことはあまり信じない方がいいと思うよ。
0085デフォルトの名無しさんNGNG
>>80
あ、ほんとだ。>>50でエラー出ないね。普通にi=0で正常終了するわ。
0086デフォルトの名無しさんNGNG
>>82
なんじゃそりゃ…
0087 NGNG
>>82
printfが使えないコンパイラなんてないだろう。
0088デフォルトの名無しさんNGNG
>>80
まじ?それってC言語の文法を逸脱してるような…
0089デフォルトの名無しさんNGNG
野球ヲタワラタ

http://ime.nu/www.baseball-lover.com
0090デフォルトの名無しさんNGNG
>>86-87
>>82は組み込み系だと思う。
0091 NGNG
>>90
何組み込み系って?stdio.hが無いの?
009280NGNG
>>88
マジ。前にこれでハマったことがあって覚えてるんだけどね。
0093デフォルトの名無しさんNGNG
printfが使えなくてputcharが使える組み込み系ってあんの?
009488NGNG
ひええ。ひどいバグだなあ。
>>50はその問題を踏まえてあんなこと書いてたのか?深すぎるぞ。
ちなみにgccでは、
invalid lvalue in assignment
のエラーになる。
0095デフォルトの名無しさんNGNG
>>90
なるほろ
0096デフォルトの名無しさんNGNG
ええ、マジです
LSI C86 試食版なんですが・・・
あと、既知のものではsin,cos,なども使えません
試食版ってこんなものですか?
製品版って値段いくらぐらいするんですか
っていうかLSIC86の試食版以外きいたことないんで
存在するのかどうか・・・・
0097デフォルトの名無しさんNGNG
>84 なんで?
>1さんが学校でどの教科書使ってるか教えて( ‘д‘)ホスィ
009886,95NGNG
>>96
BCCかgcc使えどっちもフリーだぞ。
009980NGNG
>>94
それが正常なコンパイラの反応だよねぇ。
0100デフォルトの名無しさんNGNG
>96 ttp://www.lsi-j.ab.psiweb.com/product/c86/index.html
0101デフォルトの名無しさんNGNG
>>96
試食版なら使えるよ。>printf
ちゃんとinclude出来てないんじゃないの?

っていうか、BCC55使えよ。

> っていうかLSIC86の試食版以外きいたことないんで
> 存在するのかどうか・・・・

非常に有名だったよ。
0102デフォルトの名無しさんNGNG
クソスレかと思ってたら意外とタメになってしまった…(藁
0103デフォルトの名無しさんNGNG
>>100
>>101
やっぱりDL中にファイル壊れたのかな?
もう一回落としてきます
0104デフォルトの名無しさんNGNG
>103 本の付録CDをチェックやよ
0105 NGNG
>>96
俺の持っている参考書は付録で LSI C86 試食版のCDが付いてたけど、
printfは普通に出てくるよ、使えもしない関数を参考書で使ってるのか?
俺はVC持ってたから全然気が付かなかったけど、
しかも入門書なのにそんなんでいいのか?
0106デフォルトの名無しさんNGNG
いや、別に入門ではなく
興味本位で入れてみました
VC++、BCC、gcc(Cygwin)、はすでに
インストールしてあったので
LSIC86はどうかなと思って試したら
つかえなかった・・・
DLはやめて、CマガのCDROMから入れたらOKでした、
お騒がせしました
0107デフォルトの名無しさんNGNG
gccってみんなどこから落としてる?
0108デフォルトの名無しさんNGNG
>>107
落とすまでも無い。
0109デフォルトの名無しさんNGNG
>>108
Linux,Cygwinに入ってるっていうのはなしよ
あくまでも、gcc単体のDL先
0110109(騙り)NGNG
そうそう、gccとかbinutils単体のね
0111109NGNG
>>110
ん?
きみ、文句もってるの?
0112デフォルトの名無しさんNGNG
>>111
そう、君は煽られている。
0113騙りNGNG
文句なんか持ってないよヽ(`Д´)ノ
0114107NGNG
みなさん、そろそろ教えてくださいよ〜
0115デフォルトの名無しさんNGNG
へんじがない。ただのしねばかのようだ。
0116デフォルトの名無しさんNGNG
#define s(a) (a) / (a)

(w
0117デフォルトの名無しさんNGNG
いま、「gcc」で検索したら
こんなのが・・・
://japan.cnet.com/News/2001/Item/010620-4.html
0118 NGNG
ここは素人の集まりか?
何故、こんな問題が解けない。
scanfを使って、順番に並べるだけなのに。
0119ありがとうNGNG
メールを読んでその代価としてお金がもらえます。当然、登録・維持全て無料。
広告メールの配信企業は他にも多数あります。しかし登録したはいいがメールが来ない、懸賞は自作自演、
果てには個人情報収集目的のサービス実態のない所まであります。
その点このサイトは月10通〜20通の配信実績がありますし、何より住所・電話番号等不要なので匿名性がかなり高く、安心。
それにちゃんと送金してくれます。私も既に3回送金してもらいました。
ポイントが加速度的に増えるサービス、いくつかありますので仮登録したらCheckしてみて下さい。

※注意※ 
必ず 本登録 して下さい。仮登録のままではポイントが加算されません。
本登録スタートボタンのURLが載ったメールが来るまで数日〜数週間かかりますが、待っただけの価値は十二分にあります。
ともかく時間がかかることが多いので早めに仮登録を済ましておくことをお勧めします。
その後の本登録維持も忘れないようご注意下さい。(何かと面倒なのも広告出稿者を多く集める為の策のようです)
興味のある項目を答えるアンケートでは全てチェックを入れるのが吉。その分配信メールが増えてポイント増。

Ariga10.com http://www.ariga10.com/?id=207054
こちらから登録できます。記入欄は少ないので時間はほとんどかかりません。
0120デフォルトの名無しさんNGNG
初心者スレのようなので一つ質問させてください

const 就職子をつけた変数は初期化された値から変更されないってKRでよんだんですが
const a[0] = "abcde";

とやって、その後、a[0] = "fghij";
とやると、printfさせるとfghijになってるんですが、これって変更できちゃってるんじゃ
ないの?
0121デフォルトの名無しさんNGNG
誤 const a[0] = "abcde";
正 const char *a[0] = "abcde";
const char *a[1] = "ABCDE";

0122デフォルトの名無しさんNGNG
>>120
うーん、
ポインタのときは
constの場所が重要だと思います
どういう書き方しましたか
0123107NGNG
GNUの日本のミラーサイト来てるんだけど
コンパイル済みgccってファイル名にbinaryとかかいてあるの?
前間違ってソース全部落としちゃったから
0124デフォルトの名無しさんNGNG
#include<stdio.h>
int f(char c,const char *p)
{//文字列pを走査しcと同じ要素があれば1、無ければ0
while(*p != '\0')
if(*p++ == c) return 1;
return 0;
}

int main(void)
{
int i,a[256] = {0},n;
char s[256],m[256],*p = m;
printf("Enter:");
gets(s);
for(n = i = 1,m[0] = s[0];s[i] != '\0';i++){
m[i] = '\0';
if(!f(s[i],m)) //登録されてない要素なら登録する
m[n++] = s[i];
}
m[i] = '\0';
n = i = 0;
while(s[n] != '\0'){
if(s[n++] == *p){
a[i]++;//カウント
}else{
p++;
a[++i]++;
}
}
for(i=0,p=m;*p != '\0';p++,i++)
printf("%c:%d kai\n", *p, a[i]);

return 0;
}

できたと思ったがダメだった・・・勉強が足りんね。
0125デフォルトの名無しさんNGNG
>>118 >>124
>>38 見れ。
あと「scanf は…」って意見も前のほうで出てました。
0126VBのほうがらくなんで、つい。NGNG
Sub main()
Dim st$, ms$, i&, k&
st = InputBox("Please Input Keys"): For i = 0 To 255: k = Len(st) - Len(Replace(st, Chr$(i), "")): If k >= 1 Then ms = ms & Chr(i) & CStr(k) & "kai" & vbCrLf
Next: MsgBox (ms)
End Sub
0127デフォルトの名無しさんNGNG
120です。

>>122

>>121 に書いたのですが、このような初期化の仕方ではまずいのでしょうか?
0128デフォルトの名無しさんNGNG
>>123
ソースだと何が悪いの?
0129デフォルトの名無しさんNGNG
>>121
> 正 const char *a[0] = "abcde";
って char へのポインターの配列か?
なら const がかかるのは配列の要素つまりポインターじゃないか
要するに「アドレスは書き換えませんよ」って事だろ
0130ラジャライオンNGNG
>>121
const char* const a="abcde";
0131デフォルトの名無しさんNGNG
>>129
>>130

あぁそうか、、、わかりました。逝ってきます。
0132デフォルトの名無しさんNGNG
131=121
0133デフォルトの名無しさんNGNG
>>130
> const char* const a="abcde";
配列になってないじょ

121がしたいのは「書き換えられない文字列の配列」じゃないか?
でもどうしたらいいのか分からん^^;
誰か模範解答キボンヌ
0134デフォルトの名無しさんNGNG
>>133
const char* const a[] = { "abcde", "ABCDE", };
では?
0135デフォルトの名無しさんNGNG
121
>>133
>>134
constって使い方難しいね
const a[] というように char とか型指定子でないものにかかる場合って
どういう意味なんだろう。最初と2番目のconstのかかり方がよくわからん。
0136デフォルトの名無しさんNGNG
2バイト文字の扱いはどうすんでしょう。
0137デフォルトの名無しさんNGNG
133です
あんがとさん>>134

漏れも逝ってきます。
0138デフォルトの名無しさんNGNG
>>135
識別子から外へ読んでいく。

 const char * const a[] → const 『char 『* 『const 『a[]』』』』

1. a[] → a は配列。
2. const 『a[]』 → a は(定数の)配列。
3. * 『const 『a[]』』 → a は((ポインタの)定数の)配列。
4. char 『* 『const 『a[]』』』 → a は(((文字列への)ポインタの)定数の)配列。
5. const 『char 『* 『const 『a[]』』』』 → a は((((定数の)文字列への)ポインタの)定数の)配列
0139138NGNG
あ、外側っつっても [] 優先ね。
0140デフォルトの名無しさんNGNG
121=135

>>138

うわぁ〜丁寧な説明ありがとう
すごく分かりやすい!
0141デフォルトの名無しさんNGNG
じゃあ、質問
1.const int *p;
2.int* const p;
3.const int* const p;
の違いは?
0142141NGNG
おい、まさかみんなわからないわけじゃないだろう?
いろんなこといって、実は初心者か?みんな
0143デフォルトの名無しさんNGNG
4. int const * const p;

も :)
0144デフォルトの名無しさんNGNG
>>141-142
あまりにバカらしくて誰も答えないに5000ポインタ
0145デフォルトの名無しさんNGNG
>>144
割り当てられていないアドレス
0146デフォルトの名無しさんNGNG
>>141
お前>>138の説明読んでもわかんねーの?プ
0147デフォルトの名無しさんNGNG
Effective C++ 第21項より

char *p;        // ポインタは const ではない。データも const ではない。
const char *p;     // ポインタは const ではない。データは const である。
char * const p;     // ポインタは const である。データは const ではない。
const char * const p;  // ポインタは const である。データも const である。
char const * const p;  // ポインタは const である。データも const である。

ポインタ宣言のアスタリスクの上を通る垂直の線があると考えればいい。
その線の左側に const があれば、ポインタそのものが指している対象が定数であり、
銭の右側に const があれば、ポインタそのものが定数である。

型名の前に const を書くのと型名とアスタリスクの間に const を書くのは同一である。
0148訂正NGNG
char *p = "hello";        // ポインタは const ではない。データも const ではない。
const char *p = "hello";     // ポインタは const ではない。データは const である。
char * const p = "hello";     // ポインタは const である。データは const ではない。
const char * const p = "hello";  // ポインタは const である。データも const である。
char const * const p = "hello";  // ポインタは const である。データも const である。
0149デフォルトの名無しさんNGNG
char const * const p;
こんな書き方、使ったことなかったよ。
0150138NGNG
じゃ
 const char * const (*hoge)(const char * const base);
なんてどう?
0151デフォルトの名無しさんNGNG
Cの表記法で読みにくいのは関数ポインタの絡まったやつだと思われ
0152デフォルトの名無しさんNGNG
for(;P("\n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);
0153デフォルトの名無しさんNGNG
参照データを変更でき、参照先を変更できない char ポインタを返す関数ポインタ hoge で、
引数として 参照データも参照先も変更できない char ポインタを受け取る。
0154デフォルトの名無しさんNGNG
const char * const (*hoge)() なのね。まちがえました。

参照データを変更できない、参照先を変更できない char ポインタを返す関数ポインタ hoge で、
引数として 参照データも参照先も変更できない char ポインタを受け取る。
0155デフォルトの名無しさんNGNG
hogeは、ヒキーと返り血がconst char*constな関数へのポインタ。でしょか?
0156デフォルトの名無しさんNGNG
宿題は終わったのか?>>1
■ このスレッドは過去ログ倉庫に格納されています