第2回講義演習・課題

演習1

(1)以下のプログラムを見て、配列にどのようにデータが入っているか,配列イメージを図で書け.

(2) 配列の中のデータをすべて出力するような関数を完成させよ。

(3)フローチャートを書け

(4)2番目のデータと3番目のデータを交換したい。

・どうすればよいか、日本語で説 明せよ。

・該当部分のプログラムをかけ。

#include <stdio.h>

void kadai2_1(){

int data[2][3]= {2,4,6,1,8,3};

//(2)以下にプログラムを書け

}

コピペをしてもよいが、ゴミ(全角スペースなど)が所々入っているので削除してください

エラーメッセージで、「文字'***'は認識できません」と出てきた行には、全角文字(全角スペースなど)が含まれているはずです。

演習2

fgetsを利用して、文字列入力する下記のプログラムを動かせ

void kadai21(){

char name[21];

printf("名前を入力して下さい\t");

fgets(name, sizeof(name), stdin);

//改行コードを終端コードに置き換える

name[strlen(name) - 1] = '\0';

printf("\nあなたの名前は %s です。\n", name);

}

演習3

配列に数値を格納する下記のプログラムを動かせ

void kadai22(){

int i;

int value[10];

char input[10];

i=0;

do{

printf("数字を入力して下さい\t");

fgets(input, sizeof(input), stdin);

//改行コードを終端コードに置き換える

input[strlen(input) - 1] = '\0';

value[i] = atoi(input);

printf("入力された数値は %d です。\n", value[i]);

i++;

}while(i<10);

//出力

printf("入力された数値は以下のとおり...\n");

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

printf("%d ",value[i]);

}

}

演習4 下記のプログラムを次の条件を満たすように完成させよ.

(1)学籍番号id(int型),名前name(*char)をメンバーとして持つ構造体 Kindaisei を宣言しなさい.

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

#include <stdio.h>
#include <stdlib.h>
 /* 構造体の定義 */
struct Kindaisei {
(1)
};
/* 3番目の学生の番号と名前を出力する例 */
void kadai23(void){
   struct Kindaisei gakusei[] = {135, "Aさん", 85, "Bさん", 54, "Cさん", 8, "Dさん", 12, "Eさん"};
printf( (2) );

}

演習5

次のプログラムでポインターを理解しよう

#include <stdio.h>
void kadai25(){
 char array[]="abcdef";
 char* pstr="abcdef";
 printf("%s\n",array);
 printf("%s\n",pstr);
}

(1)入力し実行せよ(コピペしてよい)

(2)配列arrayとポインタpstrの関係を図示せよ。

(3)それぞれを2文字目から出力するにはどうすればよいか?

(4)それぞれを3文字目だけ出力するにはどうすればよいか?

演習6

下記のような出力をするプログラムを書け(ヒントコードを完成させよ)

0 1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
2 3 4 5 6 7 8 9
3 4 5 6 7 8 9 10
4 5 6 7 8 9 10 11
5 6 7 8 9 10 11 12
6 7 8 9 10 11 12 13
7 8 9 10 11 12 13 14

ヒントコード

void kadai25(){
 int z;
 for(int i=0;i<=7;i++){
   for(int j=0;j<=7;j++){
    z= ;
    printf("%d ",z);
   }
   printf("\n");
 }
}