c言語のプログラミングで1から1000までの自然数の和を求め表示するプログラムをさくせいで
int i,add=__;
for (i=1;i<=1000;i++)

add___
]
printf (”合計値は%dです. ¥n”add);
下線部に何をいれたらいいですか?

A 回答 (1件)

最初 add= 0;


    ^^^
次 add = add + i;
   ^^^^^^^

^^^^の部分です。
    • good
    • 0
この回答へのお礼

等比数列の問題もよろしければお願いします

お礼日時:2017/05/14 23:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qfor(int i = 100, long n = 1; i > n/3i; i++)

for(int i = 100, long n = 1; i > n/3i; i++)
のように、初期設定で型の違う変数を宣言したいんだけど
C++ではこんなふうに2つ以上の型を宣言してはいけないんですか?

Aベストアンサー

,

コンマ演算子の原理です。
forの初期化文で "," で区切れるのは値を返す文だけです。
よってintステートメントもlongステートメントも値を返さないので、この文では使用できません。

というか、むしろ、intステートメントの第2引数としてlongが認識されてしまいます。
外で

int i; long n;

とし

for(i = 0, n = 0; hoge; hoge)

なら可能です。

Qint i,j; \n i=0,j=5;

int i,j;
i=0;
j=5:
と書いてあるソースは普通ですが、
int i,j;
i=0,j=5:
と書いてあるソースもあります。
後者はC++の正しい書式ですか?

カンマ演算子というのは後者のカンマのことですか?

Aベストアンサー

 正しい書式です。

i=0,j=5;
 における、「,」をカンマ演算子といいます。2項の演算子です。カンマで区切られた演算を「左から順番に」実行し、最後の演算を結果として返します。
 したがって、例の文であれば、i=0を実行し、次にj=5を実行。そして、j=5の結果の5を結果として返します。
 ・・・
 が、本来的には、あまり、例のような使い方はしませんね。よく見られるのは、次のような場合です。

 for (i=0,j=0 ; i < 50 ; ++i,++j) {

 のような形でよく見られます。for文の各式は、一つの式でなければならないので、こんな書き方をするわけです。初期化と更新部が一つにまとまり、ループが読みやすくなるのが利点かな。

Qint i, int i[1];

C++で、
 int i;
と、
 int i[1];
は、どっちで宣言をしても、iは同じ振るまいですか?

Aベストアンサー

配列、ポインタなどよりももっと基礎的な概念である「右辺値」、「左辺値」を理解しましょう。

int i ;
この形で宣言されたiは代入式の右辺(代入する値)にも左辺(代入される領域)にも使うことが出来ます。
int a ;
a = i ;
i = 10 ;

C言語でも他のほとんどの言語でも「変数は右辺の時と左辺の時とでは解釈が違う」という原則があります。

代入式の右辺に配置出来るのは『値』です。
変数であっても良いし定数であっても、式であってもかまいません。
左辺がポインタ変数の場合は右辺はアドレス値(またはアドレス式)です。
代入式の右に配置可能な値を右辺値といいます。

代入式の左に配置出来るのは『領域』です。
変数であっても良いし、配列要素でもかまいません。
また、領域を示す式(int i[1]のときの*iなど)でもかまいません。
配列名(int i[1]のときのi)や定数は領域を持たないため、左辺に配置することが出来ません。
代入式の左に配置可能な領域を左辺値といいます。

int i[1] ;
この形で宣言されたiは右辺値に利用できます。
int *a ;
a = i ;
しかし、iだけでは領域を持たないため左辺値になりえません。
i = 1 ; //コンパイルエラーが出る。

コンパイル時に「有効な左辺値でない」と言う意味のエラーが出るのは「領域を示さない値を左辺値として使っている時」です。

どちらかと言うと「基礎理論」の部類なのでプログラム言語の本などには書いてないのですが、実は最も大切なのが「基礎理論」です。
頑張って勉強してください。

配列、ポインタなどよりももっと基礎的な概念である「右辺値」、「左辺値」を理解しましょう。

int i ;
この形で宣言されたiは代入式の右辺(代入する値)にも左辺(代入される領域)にも使うことが出来ます。
int a ;
a = i ;
i = 10 ;

C言語でも他のほとんどの言語でも「変数は右辺の時と左辺の時とでは解釈が違う」という原則があります。

代入式の右辺に配置出来るのは『値』です。
変数であっても良いし定数であっても、式であってもかまいません。
左辺がポインタ変数の場合は右辺はアドレス...続きを読む

Qvoid (*signal(int signum, void (*handler)(int)))(int);

の解釈を教えてください
最後の「(int)」については詳しくお願いします

Aベストアンサー

signalが

(1)1つ目の引数の型:int
(2)2つ目の引数の型:引数がintで戻り値がvoidである関数へのポインタ
(3)戻り値の型:引数がintで戻り値がvoidである関数へのポインタ(2と同じ)

を満たす関数である事を宣言しています。最後の(int)はsignalの戻り値の
関数ポインタがint型の引数を持つ事を示しています。

「引数がintで戻り値がvoidである関数へのポインタ」の型をHANDLERと表すと

HANDLER signal(int signum, HANDLER handler);

となります。

Qilink32について。'__setargv__'と'__turboFloat__'が未解決

WindowsXP+bcc32+ilink32でGLUTを使ったプログラムを書いています。
bccの設定はsetbcc.exe(http://www.cmagazine.jp/setbcc.html)を使いました。
opengl32.lib, glu32.lib, glut32.libはimplib.exe(http://blog.jyoken.net/?eid=478291)を使って作成しました。

以上の設定でbcc32付属のMakeを使ってmakeしたところ、
コンパイル後のリンクで以下のようなエラーが出てしまい困っています。
どなたか解決法を教えていただけないでしょうか?

よろしくお願いします。


---------------------
エラーの内容
---------------------
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '__setargv__' が未解決(root が参照)
Error: 外部シンボル '__turboFloat' が未解決(root が参照)
---------------------

---------------------
使用しているMakefile
---------------------
CC= bcc32
LINKER= ilink32

SRCS= main.c callback.c Task.c Logger.c
OBJS= $(SRCS:.c=.obj)
TARGET= main.exe

CFLAGS= -wall -O2
LFLAGS=
LIBS= opengl32.lib glu32.lib glut32.lib

INCLUDE= -I"C:\borland\bcc55\Include"
LIB= -L"C:\borland\bcc55\Lib"


all: $(TARGET)

.SUFFIXES : .obj .c

.c.obj:
$(CC) $(CFLAGS) -c $(SRCS)

$(TARGET): $(OBJS)
$(LINKER) $(LFLAGS) $(LIB) $(OBJS),$(TARGET),,$(LIBS)
---------------------

WindowsXP+bcc32+ilink32でGLUTを使ったプログラムを書いています。
bccの設定はsetbcc.exe(http://www.cmagazine.jp/setbcc.html)を使いました。
opengl32.lib, glu32.lib, glut32.libはimplib.exe(http://blog.jyoken.net/?eid=478291)を使って作成しました。

以上の設定でbcc32付属のMakeを使ってmakeしたところ、
コンパイル後のリンクで以下のようなエラーが出てしまい困っています。
どなたか解決法を教えていただけないでしょうか?

よろしくお願いします。


---------------------
エラー...続きを読む

Aベストアンサー

BorlandのCコンパイラは、スタートアップルーチンを含むオブジェクトファイルは
ライブラリファイルの中にはアーカイブされていなくて、適切な
スタートアップ用.objファイルを別途指定してリンクしていたと思います
#bcc32.exeを使った場合はコンパイラドライバが自動でやってくれる。

質問にあるMakefileの内容を見た感じでは、そのOBJファイルを指定していませんので、
それが原因で解決できないシンボル名がでているのだと思います。
ということで、ilink32.exeでリンクする対象にそのスタートアップ用OBJファイルを
含めてやればよろしいかと。

C0なんとか.OBJという名前で、コンパイルオプションに応じていくつか
存在していたと思います。
#置かれている場所はライブラリファイルのあるディレクトリです。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報