1] 授業単元:C言語
[2] 問題文:
二つの整数を読み込んで、後者が前者の約数かを表示するプログラムを表示しなさい。
等価演算氏や関係演算子が、1あるいは0の値を生成することを確認するプログラムを作成せよ。
整数値を読みこんで、その絶対値を表示しなさい。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン: (bcc32)
[3.3] 言語: C
[4] 期限: (2007年9月22日まで)
[5] その他の制限:
1.二つの整数を読み込んで、後者が前者の約数かを表示するプログラム。
2.等価演算氏や関係演算子が、1あるいは0の値を生成することを確認するプログラム。
3.整数値を読みこんで、その絶対値を表示するプログラム。
943 :
912:2007/09/20(木) 20:17:18
>>913-914 レスサンクス。やんない方がいい事みたいだな。
これだけだとなんなので、
>>941の1つめ
#include <stdio.h>
int main(void){
int a,b;
printf("整数値を2つ入力して下さい>");
scanf("%d %d",&a,&b);
if(b!=0 && a%b==0){
printf("%dは%dの約数です。",b,a);
}else{
printf("%dは%dの約数ではありません。",b,a);
}
return 0;
}
>>941 > 等価演算氏や関係演算子が、1あるいは0の値を生成する
これってC的にはどうなの?
1って保証あったっけ?
aが0の場合、0以外のbが全部約数になるけど、いいんかね?
>>941 2つめ
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
printf("%d",(n>>(sizeof(n)*8-1))?~n+1:n);
return 0;
}
947 :
946:2007/09/20(木) 20:28:26
3つめだった
948 :
デフォルトの名無しさん:2007/09/20(木) 20:29:03
/*読み込んだ整数値の符号を判定*/
#include <stdio.h>
int main(void)
{
int no1,no2;
puts("二つの整数を入力してください。");
printf("整数1:"); scanf("%d",&no1);
printf("整数2:"); scanf("%d",&no2);
if(no2%no1)
puts("後者は前者の約数ではありません。");
else
puts("後者は前者の約数です。");
return (0);
}
>>944 疑問に思ったら仕様書を確認しような。以下 ANSI ISO/IEC 9899, 1999 から引用。
6.5.8 - 6
Each of the operator < (less than), > (greater than), <= (less than
or equal to), and >= (greater than or equal to) shall yield 1 if the
specified relation is true and 0 if it is false. The result has type int.
6.5.9 - 3
The == (equal to) and != (not equal to) operators are analogous to the
relational operators exept for their lower precedence. Each of the
operator yields 1 if the specified relation is true and 0 if it is false.
The result has type int. For any pair of operand, exactly one of the
relations is true.
>>941 二つ目
#include <stdio.h>
int main(void)
{
int i;
for(i=0; i<2; i++) printf("%d %d %d ", i == 0, i > 0, i < 1);
return 0;
}
/*1か0を生成*/
#include <stdio.h>
int main(void)
{
int no1;
printf("整数を入力してください。:");
scanf("%d",&no1);
if (no1 == 0)
puts("0");
else
puts("1");
return (0)
}
?
確実に0か1かを返すプログラムを提供してくれたんだと思うよ
>整数値を読みこんで、その絶対値を表示しなさい。
は、
-8とか-10と入力したら、
絶対値は、8です、とか10ですとか表示するプログラムのことです。
#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
printf("絶対値は%dです", n < 0 ? -n : n);
return 0;
}
printf("%d",n>0?n:-n);
どっちでもいいだろ
958 :
デフォルトの名無しさん:2007/09/20(木) 21:10:38
【質問テンプレ】
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):int型で10個の要素を持つ配列に順次キーボードから整数を入力していく(入力データに関する
範囲チェックも行う)。10個の要素全てにデータを入力したら、配列の内容を降順にソートし、その内容を表示する。
また、10個の要素の合計、平均、最大値、最小値を求めて表示するプログラムの作成。
[3] 環境
[3.1] OS:(Windows Vista Business)
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語: C
[4] 期限: ([2007年09月21日まで]
[5] その他の制限:
@配列に対する入力・出力は繰り返しのアルゴリズムで処理すること
A整数値しか入力されないものとし、入力データに大して「0以上かつ100以下」の範囲チェックを行う。
範囲外のデータが入力された場合はエラーメッセージを出力し、再入力を行う。
Bソートのアルゴリズムはfor文の2重ループで処理すること
C平均は小数点以下2桁で表示し、合計、平均、最大値、最小値は小数点の位置を合わせて表示する
書き込みのタイミングが遅れただけなんだけど?
960 :
デフォルトの名無しさん:2007/09/20(木) 21:11:15
【質問テンプレ】
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
以下の実行結果を表示するプログラムの作成
[実行結果]
国語 数学 英語 | 合計
-------------------+------
55 67 75 | 197
30 41 55 | 126
90 85 88 | 263
77 75 72 | 224
95 65 89 | 249
[3] 環境
[3.1] OS:(Windows Vista Business)
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語: C
[4] 期限: ([2007年09月20日まで]
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
あらかじめ以下の二次元配列を定義しておくこと
int ten[5][3] = {
{55,67,75}
{30,41,55}
{90,85,88}
{77,75,72}
{95,65,89}
};
961 :
デフォルトの名無しさん:2007/09/20(木) 21:12:42
【質問テンプレ】
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
半角英数字を一文字入力し、入力された英字で始まる曜日を検索して表示するプログラム
[3] 環境
[3.1] OS:(Windows Vista Business)
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語: C
[4] 期限: ([2007年09月20日まで]
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
@あらかじめ以下の二次元配列を定義しておく
char week[7][10] = {
"Sunday"
"Monday"
"Tuesday"
"Wednesday"
"Thursday"
"Friday"
"Saturday"
};
A入力された文字で始まる曜日がなければ「頭文字が一致する曜日はありませんでした」と表示する。
B入力された文字で始まる曜日があれば「頭文字が一致するのは以下の通りです」と表示し、
その次の行から頭文字が一致する曜日を全て表示する。
962 :
デフォルトの名無しさん:2007/09/20(木) 21:16:05
【質問テンプレ】
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
金額を入力し、入力された金額の金種計算を行うプログラムの作成
[実行結果]()内はキーボードから入力
金額を入力:(10000000)
金額は「1〜9999999」の範囲で入力してください
金額を入力:(38999)
金種計算
------------------
10000 | 3
5000 | 1
2000 | 1
1000 | 1
500 | 1
100 | 4
50 | 1
10 | 4
5 | 1
1 | 4
[3] 環境
[3.1] OS:(Windows Vista Business)
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語: C
[4] 期限: ([2007年09月20日まで]
[5] その他の制限:@金種計算で必要な配列データは各自で最適だと思うものを用意する
963 :
デフォルトの名無しさん:2007/09/20(木) 21:17:21
【質問テンプレ】
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
万年カレンダー(グレゴリオ暦)を表示するプログラムの作成
[実行結果]()内はキーボードからの入力
万年カレンダー
年を入力:(12345)
年は「1〜9999」の範囲で入力してください。
年を入力:(2006)
月を入力:(15)
月は「1〜12」での範囲で入力してください。
月を入力:(11)
2006年11月のカレンダー
----------------------------
sun mon tue wed thu fri sat
----------------------------
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
----------------------------
964 :
デフォルトの名無しさん:2007/09/20(木) 21:19:12
[3] 環境
[3.1] OS:(Windows Vista Business)
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語: C
[4] 期限: ([2007年09月20日まで]
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
グレゴリオ暦の規則
@ 西暦の年数が4で割り切れ、かつ100で割り切れない年を閏年とする。
A 西暦の年数が400で割り切れる年も閏年とする。
B 西暦1年1月1日を月曜日とする
カレンダーに必要な配列データなどは各自で最適だと思うものを用意すること
なんか一気に来た
>>962 #include<stdio.h>
int main(void){
int a[]={10000,5000,2000,1000,500,100,50,5,1};
int y,i;
while(1){
printf("金額を入力:");
scanf("%d",&y);
if(y<1||y>9999999)
printf("金額は「1〜9999999」の範囲で入力してください\n");
else
break;
}
printf("金種計算\n------------------\n");
for(i=0;i<9;i++){
printf("%5d | %d\n",a[i],y/a[i]);
y%=a[i];
}
return 0;
}
新学期始まったんだなw
>>963 #include<stdio.h>
int f(int y,int m,int d){
if(m<3) y--,m+=12;
return y*365+y/4-y/100+y/400+(m+1)*306/10+d-428;
}
int main(void){
int y,m,d;
printf("万年カレンダー\n");
//グレゴリオ暦は1582年10月15日から
while(1){
printf("年を入力:",y); scanf("%d",&y);
if(y<1||y>9999) printf("年は「1〜9999」の範囲で入力してください。\n");
else break;
}
while(1){
printf("月を入力:",m); scanf("%d",&m);
if(m<1||m>12) printf("月は「1〜12」での範囲で入力してください。\n");
else break;
}
printf("\n%d年%d月のカレンダー\n----------------------------\n"\
" sun mon tue wed thu fri sat\n----------------------------\n",y,m);
for(d=0;d<f(y,m,1)%7;d++) printf(" ");
for(d=1;d<=f(y,m+1,1)-f(y,m,1);d++){
printf("%4d",d);
if(f(y,m,d)%7==6) printf("\n");
}
printf("\n----------------------------\n");
return 0;
}
969 :
デフォルトの名無しさん:2007/09/20(木) 22:32:02
1] 授業単元:C言語
[2] 問題文:
最初300個ある商品が、毎日何個かランダムに減っていき、
残り75個になったら、その3日後に250個たされるプログラムを作りなさい。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン: (bcc32)
[3.3] 言語: C
[4] 期限: (2007年9月22日まで)
[5] その他の制限:
よろしくお願いします。
減り幅限定しないのか?
971 :
969:2007/09/20(木) 22:35:44
>970
すいません減り幅は、0〜50です。
よろしくお願いします。
75個未満はいいのか?
973 :
969:2007/09/20(木) 22:39:59
>972
何度もすいません。
75個以下になったらです。
デバッグに3日以上かかるがいいのか?
975 :
969:2007/09/20(木) 22:48:37
>974
できるだけ早くお願いしたいんですけど。。。
終了条件ないと永遠に終わらないんだけど。
977 :
969:2007/09/20(木) 22:54:20
>976
そのとおりですね。
5回250個足したら終了でお願いします。
問題文
最初300個ある商品が、毎日何個かランダムに減っていき、
残り75個になったら、その3日後に250個たされるプログラムを作りなさい。
すいません減り幅は、0〜50です。
75個以下になったらです。
単語の抽出
最初 300個 商品 毎日 何個 ランダム
残り 75個 3日後 250個
減り幅 0〜50
75個以下
乱数の精度は?
980 :
969:2007/09/20(木) 23:11:51
>979
0〜50の間であればいいんですけど。。。
>>969 #include<stdio.h>
#include<stdlib.h>
int main(void)
{
int num, prev_num, dec_num, inc_times=0, inc_day=0, day;
num=prev_num=300;
for(day=1;inc_times<3;day++)
{
if(day==inc_day) num+=250, inc_times++;
dec_num=rand()%51;
if(dec_num>num){
printf("\n!!!%d 日目に商品が %d 個不足しました!!!\n", day, dec_num-num);
dec_num=num;
}
num-=dec_num;
if(num<=75 && day>=inc_day) inc_day=day+3;
printf("%2d日目 商品数:%3d->%3d %+4d\n", day, prev_num, num, num-prev_num);
prev_num=num;
}
return 0;
}
>>981 の訂正
for(day=1;inc_times<3;day++)
↓
for(day=1;inc_times<5;day++)
>>937 これも酷いな……。
こっちまでブルーになる。
2×3=6ドットしかないのか
単位がmなら何も不思議じゃない
C#の問題は書いていいの?
C#の問題といてくれるスレはないの?
無いよ
自分でやれカス
無いよ
>>961 #include<stdio.h>
main(){
int ten[5][3] = {
{55,67,75}
{30,41,55}
{90,85,88}
{77,75,72}
{95,65,89}
};
printf("国語 数学 英語 | 合計 \n"
"-------------------+------ \n"
"55 67 75 | 197 \n"
"30 41 55 | 126 \n"
"90 85 88 | 263 \n"
"77 75 72 | 224 \n"
"95 65 89 | 249 \n"
);
}