2.閱讀下列程序,寫出程序的運(yùn)行結(jié)果。
main ()
{ struct student
{ char name[10];
float k1;
float k2;
} a[2]={ {“zhang”, 100,70} ,{“wang”,70,80 } },* p=a;
int i;
printf(“\nname:%s total=%f”,p ->name,p -> k1+p -> k2);
printf(“\nname:%s total=%f”,a[l].name, a[1].k1+a[l].k2);
}
「解」結(jié)構(gòu)數(shù)組a 有兩個(gè)元素,每個(gè)元素有三個(gè)成分:10個(gè)元素的字符數(shù)組和兩個(gè)類型為float的成分k1、k2.結(jié)構(gòu)指針變量p指向結(jié)構(gòu)數(shù)組a的首元素。其中初始化使a的兩個(gè)元素分別有值如下:
a[0].name=“zhang”,a[0].k1= 100.0,a[0].k2=70.0,
a[1].name=“wang”,
a[l].k1=70.0, a[1].k2 =80.0.所以程序運(yùn)行后輸出:
name:zhang total = 170.000000
name: wang total= 150.000000
3.閱讀下列程序,寫出程序的運(yùn)行結(jié)果。
main ( )
{ enum em { em1=3, em2=l, em3 };
char * aa[] = {“AA”,“BB”,“CC”,“DD” } ;
printf(“%s%s%s\n”,aa[em1],aa[em2], aa[em3] );
}
「解」由枚舉類型測(cè)的定義知,枚舉類型常量em1的值是3,枚舉類型常量em2的值是1,枚舉類型常量em3的值是2.所以程序運(yùn)行后輸出:
DD BB CC
7.4 程序設(shè)計(jì)題
1.用結(jié)構(gòu)體存放下表中的數(shù)據(jù),然后輸出每人的姓名和實(shí)發(fā)工資( 基本工資+浮動(dòng)工資-支出)。
姓名 基本工資(元) 浮動(dòng)工資(元) 支出(元)
Li 220.00 300.00 90.00
Xia 370.00 180.00 60.00
Wang 620.00 0.00 70.00
「解」程序定義struct person結(jié)構(gòu)類型,包含人的姓名(<20個(gè)字符)、基本工資、浮動(dòng)工資和支出,用這個(gè)struct person結(jié)構(gòu)類型定義數(shù)組。程序首先輸入人數(shù)n(<100),再輸入n人的信息,最后輸出各人的姓名和實(shí)發(fā)金額。程序如下:
# include
# include
# define N 100
struct person {
char name[20] ;
float base;
float ds;
float pay;
} person[N], *p;
void main ()
{ int n;
float d;
char buf[120];
printf(“輸入n(<%d)! \n”,N);
do {
scanf(“%d”, &n);
if(n>0 && n printf(“輸入n不合理! 請(qǐng)重新輸入! \n” );
} while(1);
printf(“輸入%d個(gè)人的姓名、基本工資、浮動(dòng)工資和支出 \n”, n);
for( p=person; p scanf(“%s”, buf); strncpy( p -> name, buf, 19);
scanf(“%f”, &d); p -> base=d;
scanf(“%f”,&d); p -> ds=d;
scanf(“%f”, &d ); p -> pay= d;
}
for(p = person; p< person+n; p++)
printf(“%s %.2f\n”,p-> name,P->base+p->ds-P -> pay);
}
main ()
{ struct student
{ char name[10];
float k1;
float k2;
} a[2]={ {“zhang”, 100,70} ,{“wang”,70,80 } },* p=a;
int i;
printf(“\nname:%s total=%f”,p ->name,p -> k1+p -> k2);
printf(“\nname:%s total=%f”,a[l].name, a[1].k1+a[l].k2);
}
「解」結(jié)構(gòu)數(shù)組a 有兩個(gè)元素,每個(gè)元素有三個(gè)成分:10個(gè)元素的字符數(shù)組和兩個(gè)類型為float的成分k1、k2.結(jié)構(gòu)指針變量p指向結(jié)構(gòu)數(shù)組a的首元素。其中初始化使a的兩個(gè)元素分別有值如下:
a[0].name=“zhang”,a[0].k1= 100.0,a[0].k2=70.0,
a[1].name=“wang”,
a[l].k1=70.0, a[1].k2 =80.0.所以程序運(yùn)行后輸出:
name:zhang total = 170.000000
name: wang total= 150.000000
3.閱讀下列程序,寫出程序的運(yùn)行結(jié)果。
main ( )
{ enum em { em1=3, em2=l, em3 };
char * aa[] = {“AA”,“BB”,“CC”,“DD” } ;
printf(“%s%s%s\n”,aa[em1],aa[em2], aa[em3] );
}
「解」由枚舉類型測(cè)的定義知,枚舉類型常量em1的值是3,枚舉類型常量em2的值是1,枚舉類型常量em3的值是2.所以程序運(yùn)行后輸出:
DD BB CC
7.4 程序設(shè)計(jì)題
1.用結(jié)構(gòu)體存放下表中的數(shù)據(jù),然后輸出每人的姓名和實(shí)發(fā)工資( 基本工資+浮動(dòng)工資-支出)。
姓名 基本工資(元) 浮動(dòng)工資(元) 支出(元)
Li 220.00 300.00 90.00
Xia 370.00 180.00 60.00
Wang 620.00 0.00 70.00
「解」程序定義struct person結(jié)構(gòu)類型,包含人的姓名(<20個(gè)字符)、基本工資、浮動(dòng)工資和支出,用這個(gè)struct person結(jié)構(gòu)類型定義數(shù)組。程序首先輸入人數(shù)n(<100),再輸入n人的信息,最后輸出各人的姓名和實(shí)發(fā)金額。程序如下:
# include
# include
# define N 100
struct person {
char name[20] ;
float base;
float ds;
float pay;
} person[N], *p;
void main ()
{ int n;
float d;
char buf[120];
printf(“輸入n(<%d)! \n”,N);
do {
scanf(“%d”, &n);
if(n>0 && n
} while(1);
printf(“輸入%d個(gè)人的姓名、基本工資、浮動(dòng)工資和支出 \n”, n);
for( p=person; p
scanf(“%f”, &d); p -> base=d;
scanf(“%f”,&d); p -> ds=d;
scanf(“%f”, &d ); p -> pay= d;
}
for(p = person; p< person+n; p++)
printf(“%s %.2f\n”,p-> name,P->base+p->ds-P -> pay);
}

