• 締切済み

【至急】C言語のプログラミングについての質問です。

【至急】C言語のプログラミングについての質問です。 以下の3問の解答をお願い致します。 問1. 下のプログラムの[____]を埋めてください。ヒント:a,p,*p,p++,p=a,*p=a,*p++,(*p)++のいずれかが入ります。 #include<stadio.h> int main(void) { int a[5]={1,2,34,5,}; int i,+p; [____]; prntf("先頭のアドレスは%dです。\n",p); for(i=0;i<5;i++){ prntf("アドレス%dに%dが格納されています。\n"[____],[____]); [___]; } return0; } 問2. 下のプログラムの[____]を埋めてください。ヒント:p,*p,p=a,p=a[0],*p++,(*p)++のいずれかが入ります。 #include<stadio.h> int main(void) { int i; char *a[5],*p; a[0]="Hello"; a[1]="Good morning"; a[2]="Good evening"; a[3]="Good night"; a[4]="Bye Bye"; [____]; for(i=0;i<50;i++){ prntf("アドレス%dに%cが格納されています。\n"[____],[____]); [___]; } return0; } 問3. まず3つの整数知値(たとえば2,3,1)を書いたfile1という名前のテキストファイルを作成してください。 数値をカンマ(,)で区切って並べることで、複数の変数をfscanfで読み込むことが可能(CVS形式)となります。 このファイルから数値を読み込み、合計をファイルfile2に書き込むプログラムkaitou.cを作成してください。

みんなの回答

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.4

CSVのVはValues。 「変数」ではなくて「値」。

回答No.3

問1. 同じものを書くにしても、自分だったらこう書きますね。 #include <stadio.h> #include <stdlib.h> int main(void) { int a[5]={1,2,34,5,}; int i, *p; prntf("先頭のアドレスは%pです。\n", &a[0]); for(i=0;i<5;i++){ prntf("アドレス%pに%dが格納されています。\n", &a[i], a[i]); } return EXIT_SUCCESS; } 問2は言語処理系をあわせないとSEGVで終了することもあり得るのでは? 正直、Index out of boundで気持ち悪いし、error proneなのでこういうプログラムの書き方はやめたほうがいいと思います。 問3 実際に使われる CSV (Comma Separated Variables) は引用符の処理とそのエスケープの処理が必要でもう少し複雑ですが、ここでは各行にカンマと数字しか出てこないと考えて手抜きします。 #include <err.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_CHARS_PER_LINE 1024 int main(void) { FILE *fp_input, *fp_output; char line[MAX_CHARS_PER_LINE]; /* 入出力に使うfile1, file2を開きます */ fp_input = fopen("file1", "r"); if (fp_input == NULL) err(errno, "failed to open file1"); fp_output = fopen("file2", "w"); if (fp_output == NULL) err(errno, "failed to open file2"); /* 各行を読み、カンマで区切られた値を読んで足し、和をfp_outputに出力します */ while (fgets(line, sizeof(line), fp_input) != NULL) { char *ap, *inputstring = line; int sum = 0; line[strlen(line)] = '\0'; /* remove '\n' */ for (; (ap = strsep(&inputstring, ",")) != NULL;) if (*ap != '\0') sum += atoi(ap); fprintf(fp_output, "%d\n", sum); } /* ファイルを閉じます */ fclose(fp_input); fclose(fp_output); return EXIT_SUCCESS; }

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

>問1. 下のプログラムの[____]を埋めてください。 >ヒント:a,p,*p,p++,p=a,*p=a,*p++,(*p)++のいずれかが入ります。 >問2. 下のプログラムの[____]を埋めてください。 >ヒント:p,*p,p=a,p=a[0],*p++,(*p)++のいずれかが入ります。 この2問については、ヒントに従って空欄を埋めていけば、 いつかは正解にぶち当たるでしょう。 試行回数の最大値は、問1:1680回、問2:360回 たいした数ではないですね。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

int i,+p; は int i,*p; の間違いではないでしょうか それと出題者はポインタ型を%dで表示させたいようですが64ビットOSだと変になりそうな気が 丸投げ質問は以前禁止されていましたが今はOKになったようですね でもまともな回答は得られないと思います。

関連するQ&A