第3回講義演習課題

問題0 下記のプログラムを次の条件を満たすように完成させよ.

(1)学籍番号id(int型),名前name(*char)をメンバーとして持つ構造体 _student を宣言し、typedefでStudentと再定義しなさい

(2)Studnet型の変数gakuseiにたいして、番号を10番、名前を近大太郎としてデータを格納しなさい

(3)Student型とするgakuseiという配列を以下のように宣言した.3番目の学生の学籍番号と名前を出力するプログラム書け。

#include <stdio.h>

#include <stdlib.h>
 /* 構造体の定義 */

typedef struct _student {

} ;

/* 学生の番号と名前を入出力する例 */
void kadai31(void){
   Student gakusei;
printf( );

}

/* 3番目の学生の番号と名前を出力する例 */
void kadai32(void){
   Student gakusei[] = {135, "Aさん", 85, "Bさん", 54, "Cさん", 8, "Dさん", 12, "Eさん"};
printf( );

}

問題1 ポインタを用いて問題0の(2)と同様の出力をするプログラムを完成させよ

void kadai33(){

Student *node = (Student*)calloc(1, sizeof(Student));

}

問題2

名前(文字列,name)を入力し、それをそのまま出力するプログラム(関数kadai3_1())を書き、実行せよ。

void kadai3_1(){

//変数宣言(変数名をnameとして書いてください)

printf("名前を入力してください:");

fgets(name, 50, stdin);

//以下はゴミを取り除く作業(とりあえず気にしない)

char *c = strchr(name, '\n');

*c='\0';

fflush(stdin);

     printf("入力内容は以下のとおりです\n");

//出力処理 printfで出力

}

問題3

3人分の名前を入力し、それを多次元配列(文字列,names)に格納してそのまま出力するプログラム(関数kadai3_2())を書き、実行せよ。

void kadai3_2(){

//多次元配列宣言


for(int i=0;i<3;i++){

printf("名前を入力してください:");

fgets(names[i], 50, stdin);

//以下はゴミを取り除く作業(とりあえず気にしない)

char *c = strchr(names[i], '\n');

*c='\0';

fflush(stdin);

}

printf("入力内容は以下のとおりです\n");

//printf文をここに書いてください

}

printf("Enterを押して終了\n");

}

問題4

ポインターとmallocによる領域生成により問題2と同じ挙動をするプログラムを作成せよ

void kadai3_3(){

char *name;

/* 文字列のためのメモリを確保 */

name = (char *)malloc(50);

if(name == NULL) {

printf("メモリが確保できません\n");

exit(1);

}

/* 文字列を入力 */

printf("名前を入力してください:");

fgets(name, 50, stdin);

char *c = strchr(name, '\n');

*c='\0';

fflush(stdin);


printf("入力内容は以下のとおりです\n");

printf("%s\n",name);

}

問題5

ポインターとmallocによる領域生成により問題2と同じ挙動をするプログラムを作成せよ

void kadai3_4(){


//ポインタ変数宣言する names

for(int i=0;i<3;i++){

/* 文字列のためのメモリを確保 */

names[i] = (char *)malloc(50);

if(names[i] == NULL) {

printf("メモリが確保できません\n");

exit(1);

}

/* 文字列を入力 */

printf("名前を入力してください:");

fgets(names[i], 50, stdin);

char *c = strchr(names[i], '\n');

*c='\0';

fflush(stdin);

}

printf("入力内容は以下のとおりです\n");

for(int i=0;i<3;i++){

printf("%s\n",names[i]);

}

}