重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

1 「ファイルの入出力」
以下のプログラムはdata.txtのデータを読み込み,画面に出力するものです.
下記のプログラムの######を埋めて完成させよ.

#include <stdio.h>
#include <stdlib.h>

int main(void){

    char dummy[128], filename[128];
    FILE *fp;
    char x;

 sprintf(filename,"data.txt");

    fp=fopen(filename, "r");
    if(#####(1)####) {
       printf("ファイル%s が見つかりません\n",filename);
       return(-1);
     }
while(#########(2)############){
putchar(x);
}
fclose(fp);
return(0);
}

2 構造体を用いたプログラム

名前と点数用のメンバを持つ構造体dataを宣言しなさい。
また、名前と点数を表示する関数hyoujiを完成させよ。

#include <stdio.h>

(1)

void hyouji(###(2)###, int no);

int main(void){
struct data member[3] = {{"伊藤", 71},{"小林", 81},{"山田", 67},};
hyouji(member, 3);
}

void hyouji(####(3)####, int no){
int i;
for(i=0; i<no; i++){
printf("%s:%d\n", ###(4)###);
mem++;
}
}


3 「2次元配列を使った行列の四則演算」

次のプログラムは、2次元配列の和を求め結果を表示するためのものである.
関数 mat_tasu()の中身を完成させよ.
ただし関数 mat_tasu()は引数を持たない関数とします.

#include<stdio.h>

int ma[2][2]={{1,2}, {3,4}};
int mb[2][2]={{5,6}, {7,8}};
int mc[2][2];

void mat_tasu(void);


int main(void)
{
int i,j;

mat_tasu();
for (i=0; i<2; i++){
for (j=0; j<2; j++)
printf("%3d", mc[i][j]);
putchar('\n');
}
return (0);
}
/*行列の和の計算 */
void mat_tasu(void)
{

     (1)

}
各問題の(1)や(2)みたいになってるところに当てはまるプログラミングを教えてください!
一問だけでもいいので分かる方いましたら、回答お願いいたします!

A 回答 (4件)

1-1 if だから何かを判定しているんですよね。

オープン出来なかったのは何かですね。
1-2 while だからループですよね。ファイルから1文字読み込んだ値が適切かどうかでしょうか。

2-1 何かinclude か変数の定義でしょうか?
2-2 2-2 と2-3 は同じですね。宣言と定義ですので。んでこの関数が呼ばれている所を探すと、ここにどんな型が入るのか分かりそう

2-4 おそらく配列の個々の値でしょうね。(ヒント:ここは値が複数?)

3-1 mc = ma * mb でしょうね。具体的には行列の計算なんですが・・・。


いかにも課題って感じですね。プログラムの楽しみもへったくれもココから見いだせません。まっ、がんばって。
    • good
    • 0

おっと, 1 の (2) は処理系によらない書き方ができそうだ. 多分, この問題を出した人間が期待する解答にはならんけど.


単純に getc ではダメなんだよな~.
    • good
    • 0

みなさん騙されてはいけません.


1 の (1) をよ~く見てください. この if でチェックすべきは「ファイルが存在するかどうか」ですよ. 「ファイルがオープンできたかどうか」ではありません. つまり, 「ファイルはあるけど諸事情でオープンできない」ときにはこの if で引っかかってはいかんのです. で, それをこの 1行で書くことはできません.

ちなみにその次の (2) も書きようがなかったりする (厳密に言えば「動かない処理系があっても文句の言えない」プログラムにはできる).
    • good
    • 0

これ課題でしょ。

自分で考えないと後々困ると思いますが。ヒントだけ。
1.「fopen」「戻り値」で検索。
 2番目は
http://www1.cts.ne.jp/~clab/hsample/IO/IO14.html
 を参照
2.は以下を参照。
http://www.mapee.jp/cpp/post_30.html
 その際、文字列を格納する配列はSJISならば文字数×2+1(文字列終端を示す'\x0')分の領域が必要。「hyouji(member, 3);」のところでhyouji関数に構造体配列の先頭アドレスを渡しているのでhyouji側では「->」で参照しなければならない。
3.関数内でi,jを宣言して2重ループにして足せばいいのでは。
    • good
    • 0

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