好文档 - 专业文书写作范文服务资料分享网站

C语言程序设计(第3版)何钦铭 颜 晖 第9章 结构

天下 分享 时间: 加入收藏 我要投稿 点赞

精选文库

} time;

int main(void) {

scanf(\time.second++;

if( _time.second_ == 60){ _time.minute++ _; time.second = 0;

if(time.minute == 60){ time.hour++; time.minute = 0;

if( _time.hour == 24_ ) time.hour = 0; } }

printf (\

return 0; }

4.写出下面程序的运行结果 1 2 A B 。 struct s1{ char c1, c2; int n; };

struct s2{ int n;

struct s1 m;

} m = {1, {‘A’, ’B’, 2} }; int main(void) {

printf(“%d\\t%d\\t%c\\t%c\\n”, m.n, m.m.n, m.m.c1, m.m.c2); return 0; }

5.写出下面程序的运行结果 23, wang, 98.5, wang 。 struct abc{

int a; float b; char *c; }; int main(void) {

struct abc x = {23,98.5,\struct abc *px = &x;

printf(\

6

精选文库

return 0;

}

三、程序设计题

1. 时间换算:用结构类型表示时间内容(时间以时、分、秒表示),输入一个时间数值,再输入一个秒数n(n<60),以h:m:s的格式输出该时间再过n秒后的时间值(超过24点就从0开始计时)。试编写相应程序。 解答:

#include struct time{ int hour; int minute; int second; };

int main(void) {

int n;

struct time tim;

printf(\

scanf(\ printf(\ scanf(\

tim.hour=(tim.hour*60*60+tim.minute*60+tim.second+n)/3600$; tim.minute=(tim.minute*60+tim.second+n)/60`; tim.second=(n+tim.second)`;

printf(\

return 0; }

2. 计算两个复数之积:编写程序,利用结构变量求解两个复数之积: (3+4i) × (5+6i)。

提示:求解(a1+a2i)×(b1+b2i),乘积的实部为:a1×b1 - a2×b2,虚部为:a1×b2 + a2×b1。 解答:

#include struct complex{ int real,im; };

struct complex cmult(struct complex a,struct complex b); int main(void) {

struct complex a={3,4},b={5,6},c;

c=cmult(a,b);

7

精选文库

printf(\l,c.im);

return 0; }

struct complex cmult(struct complex a,struct complex b) {

struct complex c;

c.real=a.real*b.real-a.im*b.im; c.im=a.real*b.im+a.im*b.real;

return c; }

3. 平面向量加法:输入两个二维平面向量V1=(x1,y1)和V2=(x2,y2)的分量,计算并输出两个向量的和向量。试编写相应程序。 解答:

#include struct vector{ float x,y; };

struct vector vec(struct vector v1,struct vector v2); int main(void) {

struct vector v1,v2,v;

printf(\

scanf(\ printf(\

scanf(\ v=vec(v1,v2);

printf(\

return 0; }

struct vector vec(struct vector v1,struct vector v2) {

struct vector v;

v.x=v1.x+v2.x; v.y=v1.y+v2.y;

return v;

8

精选文库

}

4. 查找书籍:从键盘输入 10 本书的名称和定价并存入结构数组中,从中查找定价最高和最低的书的名称和定价,并输出。试编写相应程序。 解答:

#include #define NUMBER 10 struct book{

char name[10]; float price; };

int main(void) {

int i,maxl,minl,n;

struct book test[NUMBER];

for(i=0;i

scanf(\ maxl=minl=0;

for(i=1;i

if(test[maxl].pricetest[i].price) minl=i; }

printf(\ printf(\ return 0; }

5.通讯录排序:建立一个通讯录,通讯录的结构包括:姓名、生日、电话号码;其中生日又包括三项:年、月、日。编写程序,定一个嵌套的结构类型,输入 n(n≤10)个联系人信息,再按照他们的年龄从大到小依次输出其信息。试编写相应程序。 解答:

#include struct date{ int year; int month; int day; };

struct friends_list{ char name[10];

struct date birthday; char phone[15]; };

void sort(struct friends_list s[],int n); int main(void)

9

精选文库

{

int i,n;

struct friends_list friends[10];

printf(\ scanf(\

printf(\ for(i=0;i

scanf(\

&friends[i].birthday.month,&friends[i].birthday.day,&friends[i].phone);

sort(friends,n); for(i=0;i

printf(\

ear,friends[i].birthday.month,friends[i].birthday.day,friends[i].phone);

return 0; }

void sort(struct friends_list s[],int n) {

int i,j,index;

struct friends_list temp;

for(i=0;i

for(j=i+1;j

if(s[index].birthday.year>s[j].birthday.year) index=j;

else if((s[index].birthday.year==s[j].birthday.year) &&(s[index].birthday.month>s[j].birthday.month)) index=j;

else if((s[index].birthday.year==s[j].birthday.year)

&&(s[index].birthday.month==s[j].birthday.month)&&(s[index].birthday.day>s[j].birthday.day)){ index=j; temp=s[i]; s[i]=s[index]; s[index]=temp; } } }

6.按等级统计学生成绩:输入 10 个学生的学号、姓名和成绩,输出学生的成绩等级和不及格人数。每个学生的记录包括学号、姓名、成绩和等级,要求定义

10

C语言程序设计(第3版)何钦铭 颜 晖 第9章 结构

精选文库}time;intmain(void){scanf(\time.second++;if(_time.second_==60){_time.minute++_;time.second=0;if(time.minute==60
推荐度:
点击下载文档文档为doc格式
41sbf7efyp9da6a52gje3fmdy9ulfu00gg2
领取福利

微信扫码领取福利

微信扫码分享