構造の基本概念を理解することによって1.実験。
2.構造型定義、構造体変数の定義および使用を把握します。
3.構造変数の初期化を把握します。
書式#include <stdio.hに>
する#include <string.hの>
構造体の誕生日{
ダブル年。
int型の月、日、
}。
構造体電話{
int型NUM;
文字名[10]。
構造体の誕生日のBD;
}
。
INTのmain()
{
int型I、J、N、マックス。
構造体電話P [100]、T。
printf( "Entern N:")。
scanf関数( "%のD"、&N);
printf( "请输入通讯人姓名、号码电话、生日の\ n");
(私は++; iがn <I = 0)ため
、scanf関数( "%sの%D%%D%D LF"、P [I] .nameの、&P [i]は.num、&P [i]は.bd.year &P [i]は.bd.month、&P [i]の.bd.day)。
以下のために(i = 0; iは<N-1; I ++){
最大= I。
用(J = I + 1、J <nであり、j ++){
IF(P [j]が.bd.year <P [最大] .bd.year){
T = P [最大]。
P [最大] =のp [jを];
P [j]は、Tを=。
}
他(P [j]は.bd.month <P [最大] .bd.month){もし
、T = P [最大]。
P [最大] =のp [jを];
P [j]は、Tを=。
}
そうであれば(P [j]が.bd.day <P [最大] .bd.day){
T = P [最大]。
P [最大] =のp [jを];
P [j]は、Tを=。
}
}
}
のprintf( "誕生日順に\ nされています")。
(; iがn <I ++はI = 0)のため
のprintf( "名前%S \ n電話番号%D \ n%1.1f%D%D \ n"、P [I] .nameの、P [i]は.num 、P [i]は.bd.year、P [i]は.bd.month、P [i]の.bd.day)。
0を返します。
}
(2)
する#include <stdio.hに>
する#include <string.hの>
INT set_grade(構造体の学生の学生[10]、int型N);
構造体の学生{
int型NUM;
文字名[10]。
フロートスコア;
文字グレード;
}。
INTのmain()
{
int型I、N、カウント。
printf( "请输入学生数据:");
scanf関数( "%のD"、&N);
構造体の学生の学生[10]。
用(i = 0; iがn <; iは++){
のprintf( "名");
scanf関数( "%sの"、&学生[I] .nameの);
printf( "番号:");
scanf関数( "%d個"、&学生[i]の.num)。
printf( "スコア:");
scanf関数( "%のLF"、および学生[i]の.score)。
set_grade(学生、N)=数えます。
}
iがn <(I = 0。
printf( "学号:%D姓名:%S等级:%Cする\ n"、学生[I] .num、学生[I] .nameの、学生[I] .grade)。
}
のprintf( "不及格人数为:%Dを\ n"、カウント)。
0を返します。
}
int型set_grade(構造体の学生の学生[10]、int型N){
I = 0をカウントし、int型。
用(i = 0; iがn <; iは++){
IF(学生[I] .score <60){
学生[I] .grade = 'D'。
++カウント;}
そうでない場合(学生[I] .score <70人の&&学生[I] .score> = 60){
学生[I] .grade = 'C';}
そうでない場合(学生[I] .score <85人の&&学生[I] .score> = 70){
学生[I] .grade = 'B';}
そうでない場合(学生[I] .score <= 100 &&学生[I] .score> = 85){
学生[I] .grade = 'A 「;}
}
リターン数えます。
}
図3.実験手順
(1)
(2)
三,实验心得
当对结构体变量赋值时,可以整体引用,一般情况下不能对结构体变量整体引用,只能引用其成员。结构体也是和数组类似的一种构造类型。但和数组不同的是结构体的各个分量可以分别具有不同的数据类型。