第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]);
}


}



Comments