高教c语言程序设计(版)课后编程题答案(材料)_c语言程序设计编程题

2020-02-27 其他范文 下载本文

高教c语言程序设计(版)课后编程题答案(材料)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言程序设计编程题”。

第三章顺序结构

3.30 编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。※程序如下※

main(){

int hour,minute;hour=560/60;minute=560%60;

printf(“hour=%d,minute=%d”,hour,minute);}

3.31 编写程序,输入两个整数:1500和350,求出它们的商数和余数并进行输出。※程序如下※

#include main(){

int num1,num2,i,j;/* 定义变量 i-商,j-余数 */ printf(“input num1 and num2:n”);scanf(“%d%d”,&num1,&num2);i=n }

3.32 编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。

※程序如下※

main(){

double a,b,c,average=0;

printf(“input a,b,c(double):n”);scanf(“%lf%lf%lf”,&a,&b,&c);average=(a+b+c)/3;average=average*10;average=average+0.5;average=(int)average;average=average/10;

printf(“average=%lf”,average);} 3.33 编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中的值给a。※程序如下※

main(){

int a,b,c,t=0;

printf(“input a b c:n”);

scanf(“%d%d%d”,&a,&b,&c);t=c;c=b;b=a;a=t;

printf(“a=%d b=%d c=%d”,a,b,c);} 第四章选择结构

4.21 当a>0时,请将以下语句改写成switch语句。if(a

※程序如下※

main(){ int a;

printf(“Enter a:n”);scanf(“%d”,&a);switch(a/10){

case 0: case 1:

case 2: printf(“m=1”);break;case 3: printf(“m=2”);break;case 4: printf(“m=3”);break;case 5: printf(“m=4”);break;default: printf(“m=5”);} }

4.22 编写程序,输入一位学生的生日(年:y0、月:m0、日:d0);并输入当前的日

期(年:y1、月:m1、日:d1);输出该生的实足年龄。

※程序如下※ 这道题仅做参考!!系统不一样无法运行!

main(){

int y0,y1,m0,m1,d0,d1,age=0;printf(“Your Birthday(yyyy-mm-dd):n”);scanf(“%d-%d-%d”,&y0,&m0,&d0);printf(“Current Date(yyyy-mm-dd):n”);scanf(“%d-%d-%d”,&y1,&m1,&d1);if(d1

printf(“nAge=%d”,age);}

4.23 编写程序,输入一个整数,打印出它是奇数还是偶数。

※程序如下※

main(){ int i;

printf(“input a integer:n”);scanf(“%d”,&i);

if(i%2==0)/*条件判断*/ printf(“%d is a even”,i);else

printf(“%d is a odd”,i);}

—————————————————————————————————— 4.24 编写程序,输入a、b、c三个数,打印出最大者。

※程序如下※

main(){

int a,b,c,max = 0;

printf(“input(int)a b and c:n”);scanf(“%d%d%d”,&a,&b,&c);max = a;

if(max

—————————————————————————————————— 4.25 有一函数:

编写一程序,要求输入x的值,输出y的值。分别

(1)不嵌套的if语句(2)嵌套的if语句

(3)if_else语句(4)switch语句 ※程序如下※

源程序一:(1)不嵌套的if语句

main(){

float x;

printf(“input x:n”);scanf(“%f”,&x);if(x>-5&&x

printf(“y=%f”,x-1);if(x>0&&x=10)printf(“input error”);}

源程序二:(2)嵌套的if语句

main(){

float x;

printf(“input x:n”);scanf(“%f”,&x);if(x>-5&&x

if(x==0)printf(“y=%f”,x-1);if(x0)printf(“y=%f”,x+1);}

if(x=10)printf(“input error”);}

源程序三:(3)if_else语句

main(){

float x;

printf(“input x:n”);scanf(“%f”,&x);if(x>-5&&x

printf(“y=%f”,x-1);else if(x==0)printf(“y=%f”,x);else

printf(“y=%f”,x+1);else

printf(“input error”);}

源程序四:(4)switch语句 */ main(){

int flag;float x;

printf(“Enter x:n”);scanf(“%f”,&x);

if(x>-5 &&x

if(x>0 &&x

case-1: printf(“y=%f”,x);break;case 0: printf(“y=%f”,x-1);break;case 1: printf(“y=%f”,x+1);break;} }/* 第五章循环结构

三、编程题

5.17 编写程序,求1-3+5-7+...-99+101的值。※程序如下※ main(){

int i,sum=0,s=1;

for(i=1;i

sum=sum+i*s;

s=-s;/*控制符号交替变换*/ }

printf(“sum=%d”,sum);}

5.18 编写程序,求e的值,e=1+1/1!+1/2!+1/3!+1/4!+...+1/n!(1)用for循环,计算前50项(2)用while循环,要求直至最后一项的值小于1e-4。※程序如下※ 源程序一:(1)用for循环实现 main(){

int i,n;

double sum=1,t=1;printf(“input n:n”);scanf(“%d”,&n);for(i=1;i

t=t*i;/* 实现阶乘*/ sum=sum+1/t;}

printf(“e=%lf”,sum);}

源程序二:(2)用while循环实现 #include main(){ int i;

doubel sum=1,t=1;

while(fabs(1.0/t)>1e-4)/* fabs求浮点型数据的绝对值 */ { t=t*i;

sum=sum+1/t;i++;}

printf(“e=%lf”,sum);}

5.19 编写程序,输出从公元1000年至2000年所有闰年的年号 每输出3个年号换一行。

判断公元年是否闰年的条件是:

(1)公元年数如能被4整除,而不能被100整除,则是闰年。(2)公元年数能被400整除也是闰年。※程序如下※ main(){

int i,j=0;

for(i=1000;i

if((i%4==0)&&(i%100!=0)||(i%400==0))/* 判断是否是闰年的条件 */ {

printf(“&d ”,i);j++;

if(j%3==0)/* 控制换行 */ printf(“n”);} } }

5.20 编写程序,打印以下图形: * *** ***** ******* ***** *** * ※程序如下※ #include main(){

int i,j;

for(i=1;i

for(j=1;j

if((j7-fabs(4-i)))printf(“ ”);else

printf(“*”)}

printf(“n”);} } #include #include main(){ int i,j,k;

for(i=-3;i

{for(j=0;j

for(k=0;k

6.21 请编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII代码值,每行输出三队.※程序如下※

#include main(){

int i=0;char ch;

while((ch=getchar())!='n'){

printf(“%4c%4d”,ch,ch);i++;

if(i%3==0)printf(“n”);} } 6.21 请编写程序,输入一行数字字符(用EOF结束),每个数字字符的前后都有空格。

请编程,把这一行中的数字转换成一个整数。例如,若输入: 2 4 8 3(代表Enter键)

则输出整数:2483

※程序如下※

#include main(){

char ch;

while((ch=getchar())!=EOF){

if(ch==' ')continue;else

printf(“%c”,ch);} }

6.22 请编写程序统计输入的行数,输入用EOF结束输入。※程序如下※

#include main(){

char ch;int i=0;

while((ch=getchar())!=EOF){

if(ch=='n')i++;}

printf(“%d”,i);}

6.23 请编写程序统计输入的一行中小写字母的个数。

※程序如下※

#include main(){

int i=0;char ch;

while((ch=getchar())!='n'){

if((ch>='a')&&(ch

printf(“%d”,i);}

6.24 请编写输出以下图案的程序,图案的行数由输入的值确定。A BBB CCCCC DDDDDDD EEEEEEEEE

※程序如下※

#include main(){

int i,j,k,n;

printf(“Enter n(integer):n”);scanf(“%d”,&n);for(i=1;i

for(j=n;j>i;j--)printf(“ ”);

for(k=1;k

7.14 以下fun函数用以判断n是否是素数,fun函数中有逻辑错,请调试改正。fun(int n){

int k,yes;

for(k=2;k

※正确答案是:

fun(int n){

int k,yes=1;

for(k=2;k

main(){

int n,yes;

printf(“Enter n(int):n”);scanf(“%d”,&n);yes=fun(n);

if(yes==1)printf(“%d is a prime”,n);else printf(“%d is not a prime”,n);}

7.15 编写函数 int mymod(int a, int b)用以求a被b除之后的余数。

※程序如下※

#include int mymod(int a, int b){

int remainder;remainder=a%b;return remainder;}

main(){

int a,b;

printf(“Enter a b(int):n”);scanf(“%d%d”,&a,&b);

printf(“余数=%d”,mymod(a,b));}

7.16 编写程序求:1-1/2+1/3-1/4+1/5-1/6+1/7-...1/n

※程序如下※

main(){ int n;float a;

float sum(int n);scanf(“%d”,&n);a=sum(n);

printf(“%10.5f”,a);}

float sum(int n){

float s=0;int i,t=1;

for(i=1;i

s=s+1/i*t;t=-t;}

return s;}

7.17 编写函数,根据整型形参m的值,计算如下公式的值。t=1-1/(2 x 2)-1/(3 x 3)-...-1/(m x m)

例如:若m=5,则应输出0.536389。

※程序如下※

main(){

float t=1;float f2(int);int i,m;

scanf(“%d”,&m);for(i=2;i

printf(“t=%f”,t);}

float f2(int m){

float s;

s=1.0/(m*m);return s;}

7.18 编写函数用以求表达式x2-5x+4,x作为参数传给函数,调用此函数求: y1=22-5*2+4

y2=(x+15)2-5*(x+15)+4 y3=sin2x-5*sinx+4

※程序如下※

#include #include float fun(float x){

float y;

y=pow(x,2)-5*x+4;return y;}

main(){

float x,y1,y2,y3;clrscr();

printf(“Enter x:n”);scanf(“%f”,&x);

y1=fun(2);

y2=fun((x+15));y3=fun(sin(x));

printf(“y1=%fny2=%fny3=%fn”,y1,y2,y3);} 第八章地址和指针

8.17 请编写函数,其功能是对传送过来的两个浮点数求出和值与差值,并通过形参传

送回调用函数。

※程序如下※

#include sum_sub(float a,float b,float *sum, float *sub){

*sum=a+b;*sub=a-b;}

main(){

float a,b,sum,sub;/*定义变量sum求和,变量sub求差*/ printf(“Enter a b(float):n”);scanf(“%f%f”,&a,&b);

sum_sub(a,b,&sum,&sub);

printf(“sum=%f,sub=%f”,sum,sub);}

8.18 请编写函数,对传送过来的三个数选出最大和最小数,并通过形参传回调用函数。

※程序如下※

#include max_min(double a,double b,double c,double *max,double *min){

*max = a;/* 假定a的值为最大,把a值赋给指针变量*max */ if(*max

*min = a;/* 假定a的值为最小,把a值赋给指针变量*min */ if(*min>b)*min = b;if(*min>c)*min = c;}

main(){

double a,b,c,max,min;

printf(“Enter a b c(double):n”);scanf(“%lf%lf%lf”,&a,&b,&c);max_min(a,b,c,&max,&min);

printf(“max=%lf,min=%lf”,max,min);} 第九章函数

9.27 输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数.用下标为 0元素统计字符“1”的个数,下标为1的元素统计字符“2”的个数,...※程序如下※

#include void count(int a[]){ int i;char ch;

while((ch=getchar())!='n')for(i=0;i

main(){

int i,a[10]={0};count(a);

for(i=0;i

printf(“a[%d]=%dn”,i,a);}

9.28 编写函数,对具有10个整数的数组进行如下操作:从第n个元素开始直到最后一个元

素,依次向前移动一个位置.输出移动后的结果.※程序如下※ fun(int a[],int n){ int i;

for(i=n;i

main(){

int a[10]={0,1,2,3,4,5,6,7,8,9},n,i;scanf(“%d”,&n);fun(a,n);

for(i=0;i

9.29 编写函数把数组中所有奇数放在另一个数组中返回.※程序如下※

#include #include int fun(int a[],int b[]){

int i,j=0;for(i=0;i

main(){

int i,j,a[10],b[10];clrscr();

printf(“n****Enter 10 integer number:****n”);for(i=0;i

printf(“****Output the odd arrage***:n”);for(i=0;i

9.30 编写函数对字符数组中的输入字母,按由大到小的字母顺序进行排序。

※程序如下※

#include void alpha_sort(char a[],int n);void alpha_rout(char a[],int n);main(){

char a[20];int n;clrscr();

printf(“****The original alphabetic is****:n”);gets(a);n=strlen(a);alpha_sort(a,n);alpha_rout(a,n);}

void alpha_sort(char a[],int n){

int i,j,p,t;

for(j=0;j

for(i=j+1;i

t=a[j];a[j]=a[p];a[p]=t;} } }

void alpha_rout(char a[],int n){ int i;

printf(“n****The alphabetic of sorting is****:n”);for(i=0;i

9.31 输入若干有序数放在数组中。然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。请对以下三种情况运行你的程序,以便验证你的程序是否

正确。

(1)插在最前(2)插在最后(3)插在中间

※程序如下※

#include #define M 10

void sort(int a[M],int b[M+1],int n){ int i;

for(i=0;i

if(a[0]>a[M-1]){

if(n

else { if(n>a)b=a;else { b=n;break;} } }

if(i

for(;i

main(){

int i,n,a[M],b[M+1];clrscr();

printf(“Enter ten integer number(be sorted):n”);for(i=0;i

printf(“Enter a numbern”);scanf(“%d”,&n);sort(a,b,n);

printf(“Result of insertn”);for(i=0;i

9.32 编写函数把任意十进制整数转换成二进制数.提示:把十进制数不断除2除,余数放

在一个一维数组中,直到商数为零.在主函数中进行输出,要求不得按逆序输出.※程序如下※

#include int dec_bin(int a[],int decimal)/*变量decimal表示十进制数*/ {

int i=0,remainder;while(decimal>0){

remainder=decimal%2;decimal=decimal/2;a[i++]=remainder;if(decimal

a=decimal;break;} }

return(i);}

main(){

int i,j,decimal,a[64];

printf(“Enter decimal number:n”);scanf(“%d”,&decimal);j=dec_bin(a,decimal);for(i=j;i>=0;i--)printf(“%d”,a);}

9.33 编写函数调用随机函数产生0到19之间的随机数,在数组中存入15个互不重复的整

数。要求在主函数中输出结果。若已定义x为int类型,调用随机函数步骤如下:

#include “stdio.h”

.x=rand()%20 /*产生0到19的随机数*/

※程序如下※

#include void rand1(int a[]){

int i=0,j,x,flag;while(i

flag=1;

x=rand()%20;for(j=0;j

if(flag==1)a=x;i++;} }

main(){

int i,a[15];clrscr();rand1(a);

for(i=0;i

9.34 求任意方阵每行、每列、两对角线上元素之和。

※程序如下※

#include #define M 3

void line_sum(int a[M][M],int a1[]){

int i,j,k;

for(i=0,k=0;i

a1[k]=0;

for(j=0;j

void column_sum(int a[M][M],int a2[]){

int i,j,k;

for(i=0,k=0;i

a2[k]=0;

for(j=0;j

void diagonal_sum(int a[M][M],int a3[]){

int i,j;

for(i=0;i

a3[0]+=a[j];if(i+j==M-1)a3[1]+=a[j];} }

main(){

int i,j,a[M][M],a1[M],a2[M],a3[2]={0};clrscr();i=M;

printf(“****Enter %d x %d phalanx****n”,i,i);for(i=0;i

printf(“line%d=%dn”,i,a1);for(i=0;i

printf(“column%d=%dn”,i,a2);for(i=0;i

printf(“diagonal%d=%dn”,i,a3);}

9.35 求两个矩阵的和

#include #define M 4

void add(int a[M][M],int b[M][M],int c[M][M]){

int i,j;

for(i=0;i

for(j=0;j

main(){

int i,j,k,a[M][M],b[M][M],c[M][M]={0};i=M;printf(“****Enter NO.1 Matrix(%d x %d)****n”,i,i);for(i=0;i

printf(“****Enter NO.2 Matrix(%d x %d)****n”,i,i);for(i=0;i

printf(“****Output result Matrix(%d x %d)****n”,i,i);for(i=0;i

for(j=0;j

9.36 编写函数打印出以下形式的乘法九九表。** A MULTIPLICATION TABLE **(1)(2)(3)(4)(5)(6)(7)(8)(9)

---------------------------(1)1 2 3 4 5 6 7 8 9

(2)2 4 6 8 10 12 14 16 18(3)3 6 9 12 15 18 21 24 27(4)4 8 12 16 20 24 28 32 36(5)5 10 15 20 25 30 35 40 45(6)6 12 18 24 30 36 42 48 54(7)7 14 21 28 35 42 49 56 63(8)8 16 24 32 50 48 56 64 72(9)9 18 27 36 45 54 63 72 81

---------------------------

※程序如下※

#include main(){

int i,j;clrscr();

printf(“** A MULTIPLICATION TABLE **n”);printf(“(1)(2)(3)(4)(5)(6)(7)(8)(9)n”);

printf(“---------------------------n”);for(i=1;i

printf(“t(%d)”,i);for(j=1;j

printf(“---------------------------n”);}

9.37 调用随机函数为5 x 4的矩阵置100以内的整数,输出该矩阵,求出每行元素之和

并把和值最大的那一行与第一行上的元素对调。若已定义x为int类型,调用随机

函数步骤如下:

#include “stdio.h”

.x=rand()%100 /*产生0到100的随机数*/

※程序如下※ #include #include void rand1(int *p){

int i,j;

for(i=0;i

void exchange(int a[5][4]){

int i,j,max,temp,b[5]={0};for(i=0;i

for(i=0;i

if(b

temp=a[j];a[j]=a[max][j];a[max][j]=temp;} }

main(){ int i,j,a[5][4];clrscr();rand1(a);

printf(“****The origient Matrix****n”);for(i=0;i

for(j=0;j

exchange(a);

printf(“****The exchange Matrix****n”);for(i=0;i

for(j=0;j

9.38 调用随机函数为5 x 5 的矩阵置100以内的整数,输出该矩阵,然后逆置该矩阵。

即将第一列的元素放在第一行上、第二列的元素放在第二行上、其它依次类推。

※程序如下※

#include #include void Rand1(int *p){

int i,j;

for(i=0;i

void Reverse_Matrix(int a[5][5]){

int i,j,temp;for(i=0;i

temp=a[j];a[j]=a[j];a[j]=temp;} }

main(){

int i,j,a[5][5];clrscr();Rand1(a);

printf(“****The Result of rand()Function()****n”);for(i=0;i

for(j=0;j

Reverse_Matrix(a);

printf(“****The Result of Reverse Matrix Function()****n”);for(i=0;i

for(j=0;j

10.19 请编写函数mygets和myputs,其功能分别与gets和puts相同,函数中用getchar

和putchar读入和输出字符。

※程序如下※

#include void mygets(char *p){

char ch;

while((ch=getchar())!='n')*(p++)=ch;p[0]=0;}

void myputs(char *p){

char ch;

while(*p!='')putchar(*(p++));}

main(){

char *s;clrscr();mygets(s);myputs(s);}

10.20 请编写函数,判断一字符串是否是回文。若是回文函数返回值为1;否则返回值

为0。回文是顺读和倒读都一样的字符串。

※程序如下※ #include main(){

char a[200],*p;int i,j,flag=1;clrscr();

scanf(“%s”,a);p=a;

j=strlen(a);

for(i=0;i

flag=0;break;}

if(flag)

printf(“Yes”);else

printf(“No”);}

10.21 请编写函数,删除字符串中指定位置上的字符。删除成功函数返回被删字符;否

则返回空值。

※程序如下※

#include #include del(char *p,int n){ int i;char ch;

if(n

for(i=n-1;i

main(){ int n;char *s;clrscr();

printf(“****The string is ****n”);gets(s);

printf(“Enter n(0--%d)n”,strlen(s));scanf(“%d”,&n);

printf(“****The deleted char is****n”);printf(“%c”,del(s,n));getch();} 第十一章对函数的进一步讨论

11.11 编写程序outch,程序读入一行字符,根据命令行中的参数进行不同的输出。若

有以下命令行: outch-2

程序对读入的一行字符输出最后两个字符。若有以下命令行: outch +6

程序对所读入的一行字符输出开头6个字符。若命令行中没有参数,则隐含规定 输出最后10个字符。为简单起见,命令行中的参数中只包含一位数字。

※程序如下※ #include #include main(int argc,char *argv[]){ int i;

char s[64];

printf(“Enter a string:n”);gets(s);

while(argc>0){

if(argc==1){

for(i=strlen(s)-10;i

if(argv[1][0]=='-'){

for(i=strlen(s)-(argv[1][1]-'0');i

if(argv[1][0]=='+'){

for(i=0;i

11.12 请写递归函数,把输入的一个整数转换成二进制数输出。

※程序如下※

#include dec_bin(int n,int a[]){

static int i=0;if(n==0||n==1){ a=n;return i;} else {

a[i++]=n%2;

return dec_bin(n/2,a);} }

main(){

int i,j,n,a[64];

printf(“Enter n(integer)n”);scanf(“%d”,&n);j=dec_bin(n,a);for(i=j;i>=0;i--)printf(“%d”,a);}

11.13 请用递归算法,求1+2+3+...n,n由键盘输入。

※程序如下※

fun(int n){

int sum;if(n==1)return 1;else {

sum=n+fun(n-1);return sum;} }

main(){

int n,sum;clrscr();

printf(“Enter n(1+2+3+...+n):n”);scanf(“%d”,&n);sum=fun(n);

printf(“sum=%d”,sum);}

11.14 请用递归函数,求裴波拉契级数,求n阶裴波拉契级数的公式如下。

※程序如下※ #include fac(int n){

long t;

if(n==0||n==1)return 1;else {

t=fac(n-1)+fac(n-2);return t;} }

main(){ int n;

printf(“Enter n :n”);scanf(“%d”,&n);printf(“%ld”,fac(n));} 第十三章编译预处理和动态存储分配

13.10 编写出一个宏定义MYALPHA(C),用以判断C是否是字母字符,若是得1,否则得0。

※程序如下※

#include #include #define MYALPHA(C)isalpha(C)?1:0 main(){

char ch;clrscr();

ch=getchar();if(MYALPHA(ch))

printf(“%c is a alpha”,ch);else

printf(“%c is not a alpha”,ch);}

13.11 请写出一个宏定义swap(t,x,y)用以交换t类型的两个参数。提示:用复合语句的形式。

※程序如下※

#include #define swap(t,x,y){t=x;x=y;y=t;}

main(){

int a,b,t;clrscr();

printf(“Enter a and b:n”);scanf(“%d%d”,&a,&b);swap(t,a,b);

printf(“a=%dnb=%d”,a,b);}

13.12 请编写程序,利用malloc函数开辟动态存储单元,存放输入的三个整数。然后按

从小到大的顺序输出这三个数。

※程序如下※

#include #include

void main(){

int *pData =(int*)malloc(sizeof(int)*3);int t;

printf(“Please input three integral numbern”);scanf(“%d%d%d”,pData,pData+1,pData+2);

for(int i=0;i

if(*(pData+i)> *(pData+j)){

t = *(pData+j);

*(pData+j)= *(pData+i);*(pData+i)= t;}

printf(“%dt%dt%dn”,*pData,*(pData+1),*(pData+2));} 第十四章结构体、共用体和用户定义类型 14.12 设有以下结构类型说明:struct stud {

char num[5],name[10];int s[4];double ave;};

请编写:

(1)函数readrec把30名学生的学号、姓名、四项成绩以及平均分放在一个结构

体数组中,学生的学号、姓名和四项成绩由键盘输入,然后计算平均分放

在结构体对应的域中。

(2)函数writerec输出30名学生的记录。

(3)main函数调用readrec函数和writerec函数,实现全部程序功能(注:不允

许使用全局变量,函数之间的数据全部使用参数传递)。

※程序如下※

#include #define STUDNUM 30 struct stud { char num[5],name[10];int s[4];double ave;};

void readrec(struct stud *pStud, int num){ int i;

printf(“tNumtNametS1tS2tS3tS4n”);

for(i=0;i

printf(“%d:t”,i);

scanf(“%s%s%d%d%d%d”,pStud->num,pStud->name,&(pStud->s[0]), &(pStud->s[1]),&(pStud->s[2]),&(pStud->s[3]));

pStud->ave=(pStud->s[0]+pStud->s[1]+pStud->s[2]+pStud->s[3])/4.0;

pStud++;} }

void writerec(struct stud *pStud, int num){ int i;

printf(“tNumtNametS1tS2tS3tS4n”);

for(i=0;i

printf(“%d:”,i);

printf(“t%st%st%dt%dt%dt%dt%lfn”,pStud->num,pStud->name, pStud->s[0],pStud->s[1],pStud->s[2],pStud->s[3],pStud->ave);

pStud++;} }

void main(){

struct stud student[STUDNUM];readrec(student,STUDNUM);writerec(student,STUDNUM);}

14.13 已知head指向一个带头节点的单向链表,链表中每个节点包含数据区域(data)

和指针域(next),数据域为整型。请分别编写函数,在链表中查找数据域值 最大的节点。

※程序如下※

#include #include

struct node {

int data;

struct node *next;};

struct node *SearchMax(struct node *head){

int max;

struct node *pMaxNode,*pNode;

pNode = head;pMaxNode = NULL;while(pNode!= NULL){

if(pNode->data > max || pMaxNode == NULL){

max = pNode->data;pMaxNode = pNode;}

pNode = pNode->next;}

return pMaxNode;}

void main(){

struct node *head,*tail,*pNode;int data;

printf(“Please input datanEnter 'Exit' to quit.n”);

head = tail = NULL;

while(scanf(“%d”,&data)> 0){

pNode =(struct node*)malloc(sizeof(struct node));pNode->data = data;pNode->next = NULL;

if(head == NULL)head = tail = pNode;else {

tail->next = pNode;tail = pNode;} }

if(head!= NULL)

printf(“Maxnimum data is %dn”, SearchMax(head)->data);

while(head!= NULL){

pNode = head;head = head->next;free(pNode);} }*/

《高教c语言程序设计(版)课后编程题答案(材料).docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
高教c语言程序设计(版)课后编程题答案(材料)
点击下载文档
相关专题 c语言程序设计编程题 课后 高教 答案 c语言程序设计编程题 课后 高教 答案
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文