掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.24153

教えて下さい><
投稿者---かっぴ(2005/11/15 16:49:36)


C言語のかけだしで何もわからないので聞きたいのですが、
100以下の自然数を入力し、その数が3の倍数であれば、その数の約数を全て表示して次の数の入力に移り、
3の倍数でない数が入力されると終了するプログラム(配列を使わず)
を作るにはどうすればよいですか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> 教えて下さい>< 24154 かっぴ 2005/11/15 16:52:09
<子記事> Re:教えて下さい>< 24155 REE 2005/11/15 16:56:09
<子記事> Re:教えて下さい>< 24156 Blue 2005/11/15 17:02:10


No.24154

教えて下さい><
投稿者---かっぴ(2005/11/15 16:52:09)


3の倍数であれば、その数の約数を全て表示して次の数の入力に移るプログラム(配列を使わず)
でお願いしますm(_ _)m


この投稿にコメントする

削除パスワード

No.24157

3の倍数であれば、その数の約数を全て表示して次の数の入力に移るプログラム(配列を使わず)
投稿者---かっぴ(2005/11/15 17:17:30)


#include <stdio.h>

int main(void)
{
int n, i;

printf("Enter a natural number less than or equal to 100:");
scanf("%d", &n);

if((0 > n)||(n > 100)){
printf("Input error.\n");
return(0);
}
else if( n % 3 != 0 ){
printf("Entered number is not a multiple of 3.\n");
return(0);
}
else{
for(i = 1; i > n / 2; i++){
if(n % i == 0)
printf("Entered number's maltiple of 3 = %d\n", i);
}
}
return(-1);
}

for文の中身がどうすればよいのでしょうか?


この投稿にコメントする

削除パスワード

No.24158

Re:3の倍数であれば、その数の約数を全て表示して次の数の入力に移るプログラム(配列を使わず)
投稿者---iijima(2005/11/15 17:40:41)


for文の中身は、
「nがiで割り切れる(iがnの約数)なら、"Enterd...."と表示する」
となっているので、題意に沿っていると思います。

問題はそこではなく、for文の繰り返し条件のところです。

> for(i = 1; i > n / 2; i++){

↑だと、「iがn/2より大きい間」繰り返すことになりますが、それは正しい動作ですか?

#「ソースの添付は「HTML変換ツール」で字下げします」もよろしく。


この投稿にコメントする

削除パスワード

No.24159

Re:3の倍数であれば、その数の約数を全て表示して次の数の入力に移るプログラム(配列を使わず)
投稿者---Blue(2005/11/15 17:41:30)


まず、
  ソースの添付は「HTML変換ツール」で字下げします。
が守られていません。
HTMLとして解釈するので、行頭の空白は有効にならないので
「HTML変換ツール」をつかって変換したものを載せてください。

n = 18 の場合
約数は 1, 2, 3, 6, 9, 18 ですね。
だから、1〜18の数値をnからわって割り切れるかチェックをしないといけません。

よって、
> for(i = 1; i > n / 2; i++){
ではなく、
for ( i = 1; i <= n; i++ ){
です。

また、nが3の倍数でも1〜100でもない場合は、何度も同じ処理をしないといけないので、
while文を使ってループさせたい処理を囲ってください。


ちなみに、main関数の戻り値は 正常の場合 0 以上の場合は 非0 であったような。。。



この投稿にコメントする

削除パスワード

No.24155

Re:教えて下さい><
投稿者---REE(2005/11/15 16:56:09)


>C言語のかけだしで何もわからないので聞きたいのですが、
>100以下の自然数を入力し、その数が3の倍数であれば、その数の約数を全て表示して次の数の入力に移り、
> 3の倍数でない数が入力されると終了するプログラム(配列を使わず)
>を作るにはどうすればよいですか?

まずは、【掲示板利用宣言】の上から2行を読みましょう。



この投稿にコメントする

削除パスワード

No.24156

Re:教えて下さい><
投稿者---Blue(2005/11/15 17:02:10)


自然数を入力                               ・・・ scanf関数を使う

100以下の自然数                            ・・・ if文 を使う

その数が3の倍数        -> 3で割り切れる。
                                           ・・・ 演算子 % と if文 を使う
                                           
その数の約数を全て表示 -> 1からその数まで一つ一つ約数かチェック。
                                           ・・・ for文 と printf関数 を使う

で、これでかけるだけ書いてみてください。
(わからなくても、メチャクチャでもいいのでノートやこのサイトを参考にしてください。)
# "すいません、わかりません。コードを書いてくれませんか" ってのはナシ。

また、

  題名と投稿者名は具体的に書きます。("教えて下さい><"は具体的でしょうか?)
  課題の丸投げはしません。
  環境(OSとコンパイラ)や症状は具体的に詳しく書きます。(環境によってできるとことできないことがあります)

が守られていませんので、次回からは気をつけてください。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧