LSIで画面に表示されない

このQ&Aのポイント
  • プログラムをコンパイルしても画面に表示されない場合、コンパイラが原因かもしれません。
  • 多くの場合、プログラムにエラーや間違いがあるため、正しく表示されないことがあります。
  • また、使用しているLSI-Cと他の環境(例えばemacs)では、値の振る舞いに違いがあるかもしれません。
回答を見る
  • ベストアンサー

LSIで画面に表示されない

#include<stdio.h> int main(void) { int i,j; for(i=1; i<=5; i++) { for(j=1; j<=5-i; j++) { putchar(' '); } for(j=1; j<=2*i-1; j++) { putchar('* '); } putchar('\n'); } return 0; } このようなプログラムを打ってコンパイルしたんですが画面が真っ暗のままです。これはコンパイラがおかしいのでしょうか?他のはうまく表示されるんですが。ちなみに書籍名は「はじめてのCプログラミング」でコンパイラは本書付属のCD-ROM収録LSI-C(試食版)です。また繰り返しの構文(for文)ところでi=0か1にするかでずいぶんと値の振る舞いが変わるのですが…大学ではemacsを使っているのでLSIとの違いがあれば教えていただきたいです。

noname#100081
noname#100081

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

putchar('* '); を putchar('*'); にして下さい。 putcharの引数は、charですから 文字定数として '* '←2文字 なのはおかしいです。

noname#100081
質問者

お礼

ありがとうございます。 最近はテスト中なので何かと質問するかも知れません。

関連するQ&A

  • LSI C-86 Ver 3.30 試食版について

    プログラムを学びたいと考えており、色々コンパイラを探しています。 PC用語にまったく詳しくないのですが、色々探しているうちに、「LSI C-86 Ver 3.30 試食版」が良いと言われ、見たところ軽そうですのでこれにしようと思うのですが、 この「LSI C-86 Ver 3.30 試食版」は、c言語を勉強するのに適していますか? もし、適していなければ、お勧めのコンパイラを教えてください、お願いします。

  • C++でismbblead()が使えない。

    http://www.orchid.co.jp/computer/cschool/kanji1.html 上記のサイトを参考にVS2013で以下のようなソースを書きました。 #include "stdafx.h" #include "stdio.h" int _tmain(int argc, _TCHAR* argv[]) { char *str = "123498765abcd漢字0000"; int i1; for (i1 = 0;;){ if (str[i1] == '\0')break; if (_ismbblead(str[i1])){ if (str[i1 + 1] == '\0'){ break; } putchar('['); putchar(str[i1++]); putchar(str[i1++]); putchar(']'); continue; } putchar(str[i1++]); } return 0; } 残念なことにコンパイルはとうらず、ismbbleadの部分が引っ掛かっているようでした。 C++だと使えないCのメソッドもあるのでしょうか? そういうわけでないのであればなぜ、コンパイルは通らないのでしょうか?C言語のコンパイラでは問題なく参考サイトのソースはコンパイルできました。 出ているエラーは IntelliSense: 識別子 "_ismbblead" が定義されていません error C3861: '_ismbblead': 識別子が見つかりませんでした というものでした。よろしくお願いします。

  • CPad for LSI C-86の実行結果

    こんにちは 現在コンパイラLSI C-86試食版と CPad for LSI C-86を使ってC言語を勉強しているのですが 何故か実行結果が表示される時とされない時があります。 内容は以下の簡単なものです。 #include <stdio.h> int main(void) { printf("Hello,world\n"); return 0; } ファイルを開いた直後などは実行結果が表示されることが多いのですが 大半(2/3ほどの確率で)の実行結果では C:\Program Files\~~~ -- Press any key to exit (Input "c" to continue) -- としか出ません。 使用OSはWindowsXPで 設定→コンパイラのパス のところと 高度な設定→実行するコマンド のところは FAQに従っています。 一体どこがおかしいのでしょうか? 回答よろしくお願いします。

  • 困っています

    これを三段で実行してみたのですが、うまく表示できません。下のようになります。どこが間違っているか教えてください。お願いします。          *         *        * #include <stdio.h> int main(void) { int i, j, ln; printf("何段を表示しますか?"); scanf("%d", &ln); for(i=1; i<=ln; i++){ for(j=1; j<=ln-i; j++) putchar(' '); for(j=1; j<=i * 2 - 1; j++); putchar('*'); putchar('\n'); } return(0); }

  • プログラミングについて

    初めまして、初めて質問させていただきます。 いきなりですが最近プログラミングにはまり、独学でCプロをやり始めた物なのですが、以下のようなプログラムをCプロで打ち込んでコンパイルしたところ int main(void) { int i,j,height,length; scanf("%d",&height); if(height % 2 ==0) { putchar("invalid"); { return 0; } } scanf("%d",&length); if(height>=1 && height<=100) for(i=1;i<=height;i++){ for(j=1;j<=length;j++) if(i ==1 || i==height) { putchar('e'); } else if( i !=height/2+1){ putchar('e'); for(j=1;j<length;j++) putchar('.'); } else{ for(j=1;j<=length/2+1;j++) putchar('e'); for(j=length/2+1;j<length;j++) putchar('.'); } putchar('\n'); } return(0); } ――――――――――― Main.c:5:1: warning: implicitly declaring library function 'scanf' with type 'int (const char *restrict, ...)' [-Wimplicit-function-declaration] scanf("%d",&height); ^ Main.c:5:1: note: include the header <stdio.h> or explicitly provide a declaration for 'scanf' Main.c:8:5: warning: implicit declaration of function 'putchar' is invalid in C99 [-Wimplicit-function-declaration] putchar("invalid"); ^ 2 warnings generated. ――――――――― と上のようなエラー内容が出てしまい、丸一日自分で模索しても何故こんなエラーが出て来てしまうのか分からない為、教えて頂けるとありがたいです。

  • ‘*’をツリー状に表示しろという問題なんですが・・・。

    ‘*’をツリー状に表示しろという問題なんですが・・・。 #include<stdio.h> int main(void){ int x,i; for(x=1;x<=5;x+=2){ for(i=1;i<=x;i+=1){ putchar('*'); } putchar('\n'); } for(x=5;x<=10;x+=2){ for(i=1;i<=x;i+=1){ putchar('*'); } putchar('\n'); } for(x=7;x<=13;x+=2){ for(i=1;i<=x;i+=1){ putchar('*'); } putchar('\n'); } for(x=9;x<=17;x+=2){ for(i=1;i<=x;i+=1){ putchar('*'); } putchar('\n'); } return 0; } ツリーの数的にはこれでいいんですが、問題には「ツリー状」って書いてあるんですが これでは左詰めになってしまいます。 しかし教科書をみても右詰めや左詰めしか書いてなく、 どうやって中央でそろえるのかわかりません。 お願いします。

  • コンパイラ「LSI-C試食版」の設定方法

    コンパイラ「LSI-C試食版」の設定方法がわからりません。manを見ても具体的に書いていなく困っています。 特に環境変数の設定のところがわかりません。 よろしくお願いします。

  • 行列の和のプログラミング

    以下のをCソースを打ち込んでコンパイルすると、 warning: passing arg 1 of `mat_add' from incompatible pointer type warning: passing arg 2 of `mat_add' from incompatible pointer type となります。これは、どういうエラーでどう直せばいいのでしょうか? #include <stdio.h> void mat_add(const int ma[2][3], const int mb[2][3], int mc[2][3]) { int i, j; for (i = 0; i < 2; i++) for (j = 0; j < 3; j++) mc[i][j] = ma[i][j] + mb[i][j]; } int main(void) { int i, j; int ma[2][3] = { {10, -5, 4}, {18, -2, -18} }; int mb[2][3] = { {23, 16, -9}, {-3, 20, 5} }; int mc[2][3] = { 0 }; mat_add(ma, mb, mc); for (i = 0; i < 2; i++) { for (j = 0; j < 3; j++) printf("%3d", mc[i][j]); putchar('\n'); } return (0); }

  • C言語について質問です

    C言語について質問です #include <stdio.h> int main(){ int i,j; double a[8][8],p[8][8],x[8]; for(i=0;i<8;i++){ for(j=0;j<8;j++){ a[i][j]=0.0; } } x[8]={0.182289,0.063801,0.125440,0.097210,0.128485,0.080488,0.189581,0.132706}; p[8][8]={{0,25,24,14,19,5,25,10}, {24,0,50,52,15,40,20,11}, {59,18,0,35,37,24,45,12}, {34,3,28,0,22,51,43,3}, {29,31,21,33,0,22,30,15}, {37,7,75,24,38,0,28,31}, {40,8,32,15,16,21,0,21}, {26,28,28,25,24,18,36,0}}; for(i=0;i<8;i++){ for(j=0;j<8;j++){ a[i][j]=1-(x[i]/(x[i]+x[j]))/(p[i][j]/(p[i][j]+p[j][i])); printf("%f\n",a[i][j]); } } } がコンパイル出来ません。コンパイラはvisual stadio2008です。 ご指摘お願いします。

  • C言語 行列の和

    C言語 行列の和 ご覧いただき有難うございます。 久しぶりにC言語の復習をしようと簡単な行列の計算を書いてみたのですが、思うような結果になりませんでした。 昨日から考えていたのですが、どこに間違いがあるのか発見できませんでした。 アドバイス等宜しくお願いいたします。 >環境 OS:Windows XP(32bit),Windows 7(64bit) コンパイラ:Visual Studio C++ 2010 Express (付属のコマンドプロンプ使用) >期待する結果 7 5 7 9 6 8 >出力された結果 7 8 0 0 0 0 >ソースコード #include <stdio.h> int main(void){ int i,j, ma[2][3] = {(1,2,3),(4,5,6)}, mb[2][3] = {(6,3,4),(5,1,2)}, mc[2][3] = {0}; for(i=0;i<2;i++){ for(j=0;j<3;j++){ mc[i][j] = ma[i][j] + mb[i][j]; } } for(i=0;i<2;i++){ for(j=0;j<3;j++){ printf("%3d",mc[i][j]); } putchar('\n'); } return (0); }

専門家に質問してみよう