トップページ⇒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)
{
ここを考える
}
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
■ このスレッドは過去ログ倉庫に格納されています