C言語の問題集を作りませんか?
■ このスレッドは過去ログ倉庫に格納されています
00011
05/02/18 15:33:180002デフォルトの名無しさん
05/02/18 15:34:19本当に作る気があるなら>>1が何か意見を書くべきでしょ?
0003デフォルトの名無しさん
05/02/18 16:52:3400041
05/02/18 17:15:26問題は計算プログラムを作れ
ttp://ibatasan.hp.infoseek.co.jp/kei.txt
こんなかんじで。
0005デフォルトの名無しさん
05/02/18 17:26:50#include<stdio.h>
int main()
{
int a, b;
char Operator;
printf("何算をしますか?");
scanf("%c", &Operator);
printf("数を2つ入力してください");
scanf("%d %d", &a, &b);
switch (Operator)
{
case '+':
c =a + b;
break;
case '-':
c =a - b;
break;
case '*':
c = a * b;
break;
case '/':
c = a / b;
break;
default:
printf("計算できません");
return 1;
}
printf("%d %c %d = %d", a, Operator, b, c);
return 0;
}
0006デフォルトの名無しさん
05/02/18 17:45:26・Kernighan の奥さんが、Kernighan に必死に隠し続けている「秘密」とは何か?
問題2
・Stroustrup の髪の毛の本数は何本?
0007デフォルトの名無しさん
05/02/18 17:46:100008デフォルトの名無しさん
05/02/18 18:42:04二つのint型の変数を入れ替える関数を作りなさい。
0009デフォルトの名無しさん
05/02/18 18:56:52int b = 1;
void func(int *a, int *b){
int tmp;
tmp = *a ^ *b;
*a = tmp ^ *a;
*b = tmp ^ *b;
}
0010デフォルトの名無しさん
05/02/18 19:14:17だったらtmpいらなくね?
void func(int *a, int *b){
*b ^= *a;
*a ^= *b;
*b ^= *a;
}
0011デフォルトの名無しさん
05/02/18 19:34:17カーニハンとリッチーはどっちが偉いか?
0012デフォルトの名無しさん
05/02/18 20:12:140013デフォルトの名無しさん
05/02/18 20:45:000014デフォルトの名無しさん
05/02/18 21:08:39int a =3;
func(&a, &a);
0015デフォルトの名無しさん
05/02/18 21:54:58わざわざ関数にするならa==bのときに無条件で返るようにすべきだろう
0016デフォルトの名無しさん
05/02/19 00:57:27>>10
>>15
ttp://www.dd.iij4u.or.jp/~okuyamak/Information/xor_fixed_swapping.html
まあこれでも読めって
0017デフォルトの名無しさん
05/02/19 05:09:56なんで>>1はCの問題集を作ろうとしたの?
0018デフォルトの名無しさん
05/02/19 10:57:46なるほどね。
余計な事せんで普通に退避させとけって事か。
0019デフォルトの名無しさん
05/02/19 21:46:500020デフォルトの名無しさん
05/02/19 21:55:060021デフォルトの名無しさん
05/02/20 00:34:46#include <stdio.h>
typedef struct
{
int zero; int one;
}Hoge;
typedef struct
{
int two; Hoge *hoge;
}Foo;
int main(void)
{
Hoge hoge = {1000, 1001};
Foo foo = {1002, &hoge};
Hoge hoge2[2] = {{2000, 2001},{2002, 2003}};
Foo foo2 = {2004, hoge2};
printf("%d\n", foo.hoge->one);
printf("%d\n", foo2.hoge[1].one);
return 0;
}
0022デフォルトの名無しさん
05/02/20 01:32:02{
typedef void (*FUNC)();
FUNC func =(FUNC)0xc3;
func();
unsigned int* pByte = (unsigned int*)main;
printf( "%x\n", *pByte );
}
問題1:このソースから、( ) 演算子の仕組みを考察せよ。
問題2:このソースから、関数とは何かを考察せよ。
解答は漏れの能力では巧く書けん。
良い問題では無いが、これを見て1人でも多くのPGが '開眼' してくれれば幸いである。
0023デフォルトの名無しさん
05/02/20 11:38:55問題1:さっき、考察しますた
問題2:今、考察しますた
0024デフォルトの名無しさん
05/02/20 13:31:10引数はvoid
戻り値は自分自身と同じ型の関数へのポインタ
0025デフォルトの名無しさん
05/02/20 14:03:01int omanco(int a) {
return (a%2)==(a&1);
}
関数omancoが0を返す事はありうるか?
あると答えた場合、その時の変数aの値の範囲を答えよ。
(東京ム養成健康大学)
0026デフォルトの名無しさん
05/02/20 14:25:38void main(void)
{
char* p = "nullpo";
printf("%c", 5[p]);
}
何が表示されますか?
根拠も一緒に述べよ。
0027デフォルトの名無しさん
05/02/20 14:35:05ある(かもしれない)。
a が負数の場合、結果は実装依存だから。
>>26
分からない。main の戻り値が void だから。
0028デフォルトの名無しさん
05/02/20 17:18:580029デフォルトの名無しさん
05/02/20 22:18:44pは右辺の文字列の先頭アドレスを指しているが、
5[p]はp+5またはp[5]と同じである。
なんて嘘
0030デフォルトの名無しさん
05/02/20 22:48:250031デフォルトの名無しさん
05/02/21 07:02:340032デフォルトの名無しさん
05/02/22 13:52:42各行の処理内容は分かります。
でも、何がしたいのか、これでいったい何に「開眼」できるのかが分かりません。
2行目なんて、何が起こるか分からないし。
0033デフォルトの名無しさん
05/02/22 15:36:22>2行目なんて
>{
これのどこをどう解説しろと?
0034デフォルトの名無しさん
05/02/22 17:45:22{
だよね。関数定義の中身の開始でよかったかな。
003532じゃないけど
05/02/22 18:01:41こんなことでもいちいち上げ足取るのか
0036デフォルトの名無しさん
05/02/22 18:04:11「複文の開始」だな。
0037デフォルトの名無しさん
05/02/22 18:24:50FUNC func =(FUNC)0xc3;
としてもキャストと代入が起こるだけだと思うが。
0038デフォルトの名無しさん
05/02/22 19:54:480039デフォルトの名無しさん
05/02/22 20:33:52あなたの長所、短所、および希望する死にざまについて、C言語で論述せよ。
ただし、文字列や長い変数名等、自然言語による文章表現は好ましくなく減点とする。
<配点:技術点19点、芸術点23点>
0040デフォルトの名無しさん
05/02/22 20:52:54は一点
0041デフォルトの名無しさん
05/02/22 21:40:35void main(void){
system("shutdown -h now");
}
0043デフォルトの名無しさん
05/02/23 02:29:49別になにも開眼しないんじゃないかなあ。
その出題者って関数ポインタのことが理解できて嬉しかったんじゃないの。
0044デフォルトの名無しさん
05/02/23 04:25:55の間違いだと思う
0045デフォルトの名無しさん
05/02/23 04:59:20ただし、文字数をなるべく少なくすること。効率は度外視して良い。
(解答)
int f(int a,int b){return a*b?f(a%b,b%a):a+b;}
0046デフォルトの名無しさん
05/02/23 07:37:54intは省略できるだろ。
0047デフォルトの名無しさん
05/02/23 08:51:010048デフォルトの名無しさん
05/02/23 14:11:02すげー
0049デフォルトの名無しさん
05/02/23 16:14:370050デフォルトの名無しさん
05/02/23 18:59:08これは凄いな。28文字か。某所では30文字が限界と言われていたが。
さすがにこれ以上短いのは作れんだろ
0051デフォルトの名無しさん
05/02/23 19:10:480052デフォルトの名無しさん
05/02/23 22:20:550053デフォルトの名無しさん
05/02/23 22:59:220054デフォルトの名無しさん
05/02/23 23:10:030055デフォルトの名無しさん
05/02/23 23:24:03int, char, double, int型のポインタ
全ての型で偽になる場合を書け!
0056デフォルトの名無しさん
05/02/24 00:11:45ありがとう。期待通りになりました。
0057デフォルトの名無しさん
05/02/24 00:54:530058デフォルトの名無しさん
05/02/24 01:10:490059デフォルトの名無しさん
05/02/24 02:00:51じゃあ、試しに比較してみたらpu
0060デフォルトの名無しさん
05/02/24 22:39:392 * f(x) ^ 3 + 1 > 0
0061デフォルトの名無しさん
05/02/25 01:49:160062デフォルトの名無しさん
05/03/02 13:23:50#include<stdio.h>
staticvoidsub(void);
intmain()
{
chara[] = "abc", *b = "def";
char*x = a, *y = b;
printf("%s : %s\n", x, y);
sub();
return 0;
}
chara[]= "ghi", *b = "jkl";
char*x = a, *y = b;
voidsub()
{
chara[] = "mno", *b = "pqr";
char*x = a, *y = b;
printf("%s : %s\n", x, y);
return;
}
0063デフォルトの名無しさん
05/03/02 18:21:32static void sub(void);
int main()
{
char a[] = "abc", *b = "def";
char *x = a, *y = b;
printf("%s : %s\n", x, y);
sub();
return 0;
}
char a[]= "ghi", *b = "jkl";
char *x = a, *y = b;
void sub()
{
char a[] = "mno", *b = "pqr";
char *x = a, *y = b;
printf("%s : %s\n", x, y);
return;
}
0064デフォルトの名無しさん
05/03/02 18:35:13制約条件違反かな?
グローバル変数は定数で初期化しないといけない。
0065デフォルトの名無しさん
05/03/02 19:17:06Error! E1054: Expression must be constant
0066デフォルトの名無しさん
05/03/02 22:20:17あんがとね。
タブは消えちゃうみたいだね。
main()とsub()の間の二行の変数宣言をコメントアウトしてコンパイルしてみたら。
0067デフォルトの名無しさん
05/03/02 22:33:22char *x = a;
char *y = b;
と分けて、どちらの行でエラーになるのか確かめてみて
0068デフォルトの名無しさん
05/03/02 23:19:01006962,66,67
05/03/02 23:22:46おいらがこの問題出したからだよ。
これをコンパイルしないで一発で分かったら、おそらく超ベテランだと思うよ。
普通は分からないだろうな。嫌な経験をとことんしてないと...。
0070デフォルトの名無しさん
05/03/03 20:37:300071デフォルトの名無しさん
05/03/03 22:04:020072デフォルトの名無しさん
05/03/03 23:09:02perlでbbs作るぐらいは出来るヤツのC言語の問題として
結城浩の C&Perlで学ぶ「CGIレッスン」 ttp://www.hyuki.com/cmcgi/
コードがダウンロードできるので
perlのコードだけ読んでCのコードは読まずに
自分で書き直してみるといいかもよ。
0073デフォルトの名無しさん
05/03/03 23:42:30だれか解説してくれ
0074デフォルトの名無しさん
05/03/05 13:36:21俺はスーパープログラマーだと言いたいらしい
0075デフォルトの名無しさん
05/03/07 09:20:400076デフォルトの名無しさん
05/03/07 09:43:530077デフォルトの名無しさん
05/03/07 16:53:280078デフォルトの名無しさん
05/03/07 17:14:370079デフォルトの名無しさん
05/03/07 19:28:390080デフォルトの名無しさん
05/03/07 20:10:080081デフォルトの名無しさん
05/03/08 01:11:08�@初項a0=10 公差d=3の等差数列でa0〜a10を出力するプログラム(配列使用)
�Aキーボードより数値を入力し、ENTキーを押すと次々に確定された値を順に収納。入力が終えたらCtrl+Z(同時に押す)をおすと各配列に入った値を表示するプログラム
while(入力した値!=EOF){処理する内容(配列の要素数を繰り上げてく):}
�Bテストの点数(100点満点)を入力。各レベル(11段階)の人数を把握し出力するプログラム。数値入力の終了はCtrl+Zを押し、結果を出力するプログラム。
実行結果例
0点以上 10点未満 = 1人
10点以上 20点未満 = 2人
20点以上 30点未満 = 3人
30点以上 40点未満 = 4人
40点以上 50点未満 = 5人
50点以上 60点未満 = 6人
60点以上 70点未満 = 5人
70点以上 80点未満 = 4人
80点以上 90点未満 = 3人
90点以上 100点未満= 2人
100点 = 1人
�C2つのint型変数を引数としてその和、差、積、商を計算し、結果をint型で返す4つの関数を作成。int型の引数はscanf関数で入力できるように。関数名は適当の名前で。
�D関数を作成し、階乗のプログラムを作成。入力はscanf関数で。入力する値は1以上である。
実行結果例
5の階乗は120です。
�E距離、角度を設定し、x方向、y方向の移動距離を求めるプログラム。
0082デフォルトの名無しさん
05/03/08 09:09:430083デフォルトの名無しさん
05/03/08 18:02:44(1)
#include<stdio.h>
//初項
#define A0 10
//公差
#define D 3
//第n項まで
#define N 10
int main(void)
{
int a0,d,i;
int pg[N];
a0=A0;d=D;
for(i=0;i<N;i++){
printf("a[%d]=%d\n",i,a0+(i*d));
}
return 0;
}
0084デフォルトの名無しさん
05/03/08 22:39:410085デフォルトの名無しさん
05/03/08 22:52:59配列、宣言してるだけで使ってないぞ(w
0086デフォルトの名無しさん
05/03/09 02:46:180088デフォルトの名無しさん
05/03/11 16:02:230089835
05/03/17 23:57:31実行結果
Input Num:
>11
17
Input Num:
>A0
160
Input Num:
>1111
4369
Input Num:
>FFFF
-1
0090デフォルトの名無しさん
05/03/18 00:15:540091835
05/03/18 00:18:310092デフォルトの名無しさん
05/03/18 00:23:110093デフォルトの名無しさん
05/03/18 07:02:11■ このスレッドは過去ログ倉庫に格納されています