《C语言程序设计》课后习题答案第九章 《1》

9.1定义一个结构体变量。计算该日在本年中是第几天,注意闰年问题。

#include<stdio.h>

struct

{intyear;

int month;

int day;

}date;

void main()

{int days;

printf("inputyear,mouth,day:");

scanf("%d,%d,%d",&date.year,&date.month,&date.day);

switch(date.month)

{case 1:days=date.day;break;

case2:days=date.day+31; break;

case3:days=date.day+59; break;

case4:days=date.day+90; break;

case5:days=date.day+120; break;

case6:days=date.day+151; break;

case7:days=date.day+181; break;

case8:days=date.day+212; break;

case9:days=date.day+243; break;

case10:days=date.day+273; break;

case11:days=date.day+304; break;

case12:days=date.day+334; break;

}

if((date.year%4==0&&date.year%100!=0||date.year%400==0)&&date.month>=3)

days+=1;

printf("days=%dn",days);

}

9.2写一个函数days,实现第一题的计算。由主函数将年月日传递给days函数,计算后将日子数传回主函数输出。

#include<stdio.h>

struct dt

{intyear;

int month;

int day;

}date;

void main()

{

scanf("%d,%d,%d",&date.year,&date.month,&date.day);

printf("n%dn",days(date.year,date.month,date.day));

}

days(year,month,day)

intyear,month,day;

{int daysum=0,i;

static intdaytab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}

for(i=1;i<=13;i++)

daysum+=daytab[i];

daysum+=day;

if((year%4==0&&year%100!=0||year%400==0)&&month>=3)

daysum+=1;

return(daysum);

}

9.3编译一个函数ptint,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score【3】,用主函数输入这些记录,用print函数输出这些记录。

9.4在第三题的基础上,编写一个函数input,用来输入5个学生的数据记录。

程序设计如下

#define N 5

struct student

{charnum[6];

charname[8];

intscore[4];

}stu[N];

void main()

{

input(stu);

print(stu);

}

input(stu)

struct studentstu[];

{int i,j;

for(i=0;i<N;i++)

{printf("number");

scanf("%s",stu[i].num);

printf("name");

scanf("%s",stu[i].name);

for(j=0;j<3;j++)

{printf("nscoren");

scanf("%d",&stu[i].score[j]);

}

printf("n");

}

}

print(stu)

struct studentstu[];

{int i,j;

printf("nnumbername score1score2 score3 n");

for(i=0;i{printf("%8s%10s",stu[i].num,stu[i].name);

for(j=0;j<3;j++)

printf("%7d",stu[i].score[j]);

printf("n");

}

}

9.5有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总成绩,以及最高分的学生的数据。

#include<stdio.h>

#define N 10

struct student

{charnum[6];

charname[8];

intscore[4];

float avr;

}stu[5];

void main()

{inti,j,max,maxi,sum;

floataverage;

for(i=0;i<5;i++)

{printf("number");

scanf("%s",stu[i].num);

printf("name");

scanf("%s",stu[i].name);

for(j=0;j<3;j++)

{printf("nscoren");

scanf("%d",&stu[i].score[j]);

}

}

average=0;

max=0;

maxi=0;

for(i=0;i<5;i++)

{sum=0;

for(j=0;j<3;j++)

sum+=stu[i].score[j];

stu[i].avr=sum/3.0;

average+=stu[i].avr;

if(sum>max)

{max=sum;

maxi=i;

}

}

average/=5;

printf("numbername score1score2 score3averagen");

for(i=0;i<5;i++)

{printf("%8s%10s",stu[i].num,stu[i].name);

for(j=0;j<3;j++)

printf("%7d",stu[i].score[j]);

printf("% 6.2fn",stu[i].avr);

}

printf("average=%5.2fn",average);

printf("The best student is%s,sum=%dn",stu[maxi].name,max);

}

9.6有13个人围成一圈,从第一人开始顺序报号1,2,3。凡报到3者推出圈子。找出最后留在圈子中的人的序号。

设计程序如下

解:
#define N 13
struct person
{int number;
int nextop;
}link[N+1];
main()
{int I,count,h;
for(I=1;I<=N;I++)
{if(I==N)
link[i].nextp=1;
else
link[i].nextp=I+1;
link[i].number=I;
}
printf(“n”);
count=0;
h=N;
printf(“sequence that person2 leave thecircle:n”);
《C语言程序设计》课后习题答案(第九章)《1》
while(count<N-1)
{I=0;
while(I!=3)
{h=link[h].nextp;
if(link[h].number)
I++;
}
printf(“%4d”,link[h].number);
link[h].number=0;
count++;
}
printf(“nThe last oneis”);
for(I=1;ii<=N;I++)
if(link[i].number)
printf(“%3d”,lin[i].number);
}

9.7编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针,指向字符串开始的空间。New(n)表示分配n个字节的内存空间。
解:new函数如下:
#define NULL 0
#define NEWSIZE 1000
char newbuf[NEWSIZE];
char *newp=newbuf;
char *new(int n)
{if (newp+n<=newbuf+NEWSIZE)
{ newp=newp+n;
return(newp-n);
}
else
return(NULL);
}
9.8写一函数free,将上题用new函数占用的空间释放。Free(p)表示将p指向的单元以后的内存段释放。

程序设计如下
解:
#define Nullo
#defineNEWSIZE 1000
char newbuf[NEWSIZE];
char *newp=newbuf;
free(char *p)
{if((p>=newbuf)&&(p<newbuf+NEWSIZE))
newp=p;
}

9.9在例题9.9的基础上,写一个函数del,用来删除动态链表中指定的结点。

程序设计如下:略

9.10写一个函数insert,用一个动态链接表插入结点。

程序设计如下:略

  

爱华网本文地址 » http://www.aihuau.com/a/25101013/185079.html

更多阅读

VisualFoxPro程序设计教程课后习题二

第二章1.如何启动与退出Visual FoxPro? Visual FoxPro 6.0的启动与Windows环境下其他软件一样,有3种常见方法:(1) 在Windows桌面上单击“开始”按钮,选择“程序”选项,单击“Microsoft Visual Studio 6.0”组中的“Microsoft Visual

C语言视频教程30课曾怡 c语言教学视频曾怡

最好的c语言视频教程----曾怡副教授讲解30课,csf格式C程序设计视频教程(曾怡):本套视频教程由曾怡副教授讲解,使用教材为:《C语言程序设计》 谭浩强清华大学出版社出版。是难得的C语言学习视频教程。全程共30讲,每讲45分钟左右,CSF视频格

声明:《《C语言程序设计》课后习题答案第九章 《1》》为网友未满岁的男生分享!如侵犯到您的合法权益请联系我们删除