質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

5回答

1827閲覧

C言語のfor文if分について、解答をお願いします。

aka-1990

総合スコア13

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2017/06/09 07:42

編集2017/06/09 11:12

###前提・実現したいこと
こんにちは、初めての質問です。
1************************
2************************
3************************
4************************
5*************@@@@@@@@@@@
6@@@@@@@@@@@@@@@@@@@@@@@@
7@@@@@@@@@@@@@@@@@@@@@@@@
8@@@@@@@@@@@@@@@@@@@@@@@@
9@@@@@@@@@@@@@@@@@@@@@@@@
10@@@@@@@@@@@@@@@@@@@@@@@@
aを100としてfor文とif文を使って*を縦に10行、横に24行を列番号と一緒に表示させて、aの値100以上から*を@に替えて上のように表示させたいです。
###発生している問題・エラーメッセージ
下のように、コンパイルしても*を縦に10行、横に24行表示させるところまでしかできません。列番号と、if文を使って100から@と表示させたいです。
どうか教えていただけないでしょうか。よろしくお願いします。

###該当のソースコード
#include<stdio.h>
main(void){
int i,j;
for(i=1;i<=10;i=i+1)
{
for(j=1;j<=24;j=j+1)
{
printf("*");
}
printf("\n");
}
return 0;
}

###補足情報(言語/FW/ツール等のバージョンなど)
たくさんの回答ありがとうございます。
補足なのですが、まだprintf、if、for以外は習っていないのでこの3つの条件文でお願いします。
本当にすみません。お願いします。

回答してくださった本当に皆様ありがとうございました。とっても助かりました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/06/09 08:58

質問の編集画面に<code>と言うボタンがあるので、ここに言語を入力の部分をCに、バッククォート3つ(''')に挟まれた中にソースコードを書くとコードが整形されて見やすくなりますのでよろしくお願いします。
aka-1990

2017/06/09 11:15

丁寧にありがとうございます!次からそうします
guest

回答5

0

アプローチを変えてみました。
forループ1つの方がわかりやすいかも?

c

1#include<stdio.h> 2 3int main() 4{ 5 for(int a = 1; a <= 24*10; a++) { 6 // aが100未満なら*を、以上なら@を出力する 7 if (a < 100) { 8 printf("*"); 9 } 10 else { 11 printf("@"); 12 } 13 14 // aを24で割った余りが0なら改行する 15 if (a%24 == 0) { 16 printf("\n"); 17 } 18 } 19 20 return 0; 21} 22

投稿2017/06/09 08:20

編集2017/06/09 08:29
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

作成してみました

c

1void main(void){ 2int i,j,k,l; 3char st1[8]={"*"}; 4char st2[8]={"@"}; 5char *p; 6k=0; 7l=0; 8p=(char *)st1; 9for(i=1;i<=10;i=i+1) 10{ 11 l++; 12 printf("%d",l); 13 for(j=1;j<=24;j=j+1) 14 { 15 k++; 16 if (k>100) p=(char *)st2; 17 printf("%s",p); 18 } 19 printf("\n"); 20} 21return; 22} 23

投稿2017/06/09 08:03

A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

今のコードを活用するならこうでしょうか。

c

1#include <stdio.h> 2int main(void){ 3 int i,j; 4 for(i=1;i<=10;i=i+1) 5 { 6 for(j=1;j<=24;j=j+1) 7 { 8 if((i - 1) * 24 + (j - 1) < 100){ 9 printf("*"); 10 } else { 11 printf("@"); 12 } 13 } 14 printf("\n"); 15 } 16 return 0; 17}

投稿2017/06/09 07:57

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

c

1#include <stdio.h> 2int main(void){ 3 // Here your code ! 4 int i,j; 5 int count = 0; 6 for(i=1;i<=10;i=i+1) 7 { 8 printf("%d",i); 9 for(j=1;j<=24;j=j+1) 10 { 11 if(count < 100){ 12 printf("*"); 13 }else{ 14 printf("@"); 15 } 16 count++; 17 } 18 printf("\n"); 19 } 20 return 0; 21}

こんな感じでしょうか?

投稿2017/06/09 07:55

s.t.

総合スコア2021

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

i, j とは別に適当な変数を作って1つ表示するごとに1足していきます。
それが100をより小さければ*, 以上なら@を表示すればいいです。
それか(j-1)*24+(i-1)でも判定できますが。

投稿2017/06/09 07:52

編集2017/06/09 07:55
toki_td

総合スコア2850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問