c语言中函数max在第几章,C语言例题 第七章 用函数实现模块化程序设计

本文通过一系列C语言程序实例,涵盖了函数调用、数值计算、数组操作、递归、字符串处理等基本编程概念,展示了如何利用C语言进行模块化程序设计。包括求最大值、求和、排序、矩阵运算等功能的实现,并探讨了局部变量、外部变量及静态局部变量的作用。
摘要由CSDN通过智能技术生成

第七章 用函数实现模块化程序设计

例7.1 调用函数输出结果

例7.2 输入两个整数,要求输出其中的最大值

例7.3 将7.2稍微改动,将在max函数中定义的变量z改为float

例 7.4 输入两个整数求二者之和

例7.5 输入四个整数 ,用嵌套函数求最大值

例7.6 有5个同学坐在一起,问第5个学生多少岁,他说比第四个同学大2岁。问第四个同学多少岁,他说比第三个同学大2岁,问第三个同学,又说比第二个同学大两岁。问第二个同学,说比第一个大两岁,第一个同学10岁。问第五个同学多少岁。

例7.7 用递归法求n!

例7.8Hanoi(汉诺)塔问题

例7.9 输入10个数 要求输出其中最大值以及他是第几个数

例7.10 有一个一维数组,内放10个同学的成绩,求平均成绩

例7.11 有两个班级,分别有35名和30名学生,调用一个average函数,分别求这两个班级的平均成绩。

例7.12 用选择法对数组10个整数有小到大排列

例7.13有一个3*4矩阵求出元素中最大值

例7.14 用一个一维数组存放10个学生的成绩,写一个函数计算平均分 最高分 和最低分

例7.15 若外部变量与局部变量同名效果如何

例7.16 静态局部变量的研究

例7.17 输出1~5的阶乘值

例7.18调用函数求三者中的最大数

例7.19 给定b的值,输入a和m 求a*b和a的m次方的值。

例7.20 有一个字符串,内有若干个字符,现输入一个字符要求程序删除字符串中的该字符

例7.1 调用函数输出结果

# include

int main()

{

void print_message();

void print_star();

print_star();

print_message();

print_star();

return 0;

}

void print_message()

{printf("How do you do!\n");}

void print_star()

{printf("******************\n");}

运行结果如下:

e2984046ed8574b153f2f1c7ca56a855.png

例7.2 输入两个整数,要求输出其中的最大值

# include

int main()

{

int max(int x,int y);

int a,b,c;

printf("please enter two integer number:");

scanf("%d,%d",&a,&b);

c=max(a,b);

printf("max=%d\n",c);

return 0;

}

int max(int x,int y)

{

int z;

if(x>y)

z=x;

else

z=y;

return (z);

}

运行结果如下:

cc8ce6905a014359641514e0c401cfe2.png

例7.3 将7.2稍微改动,将在max函数中定义的变量z改为float

# include

int main()

{

int max(float x,float y);

float a,b;

int c;

printf("please enter two integer number:");

scanf("%f%f",&a,&b);

c=max(a,b);

printf("max=%d\n",c);

return 0;

}

int max(float x,float y)

{

float z;

z=x>y?x:y;

return (z);

}

运行结果如下:

69fdba6298194786fbe75834e183a635.png

例 7.4 输入两个整数求二者之和

# include

int main()

{

float sum(float x,float y);

float a,b,c;

printf("please enter two integer number:");

scanf("%f%f",&a,&b);

c=sum(a,b);

printf("sum=%f\n",c);

return 0;

}

float sum(float x,float y)

{

float z;

z=x+y;

return (z);

}

运行结果如下:

995dff415e45d2f5a557eb77af3a7f61.png

例7.5 输入四个整数 ,用嵌套函数求最大值

# include

int main()

{

int max4(int a,int b,int c,int d);

int a,b,c,d,f;

printf("Please enter 4 interger number :");

scanf("%d%d%d%d",&a,&b,&c,&d);

f=max4(a,b,c,d);

printf("max=%d\n",f);

return 0;

}

int max4(int a,int b,int c,int d)

{

int max2(int a,int b);

int m;

m=max2(a,b);

m=max2(m,c);

m=max2(m,d);

return (m);

}

int max2(int a,int b)

{

int q;

q=a>b?a:b;

return (q);

}

运行结果如下:

82d821177e3233592c37ca958e0de86d.png

例7.6 有5个同学坐在一起,问第5个学生多少岁,他说比第四个同学大2岁。问第四个同学多少岁,他说比第三个同学大2岁,问第三个同学,又说比第二个同学大两岁。问第二个同学,说比第一个大两岁,第一个同学10岁。问第五个同学多少岁。

# include

int main()

{

int age(int n);

printf("No.5,age:%d\n",age(5));

return 0;

}

int age (int n)

{

int c;

if(n==1)

c=10;

else

c=age(n-1)+2;

return (c);

}

# include

int main()

{

int age(int n);

printf("No.5,age:%d\n",age(5));

return 0;

}

int age (int n)

{

int c=10;

for(n=5;n>1;n--)

c=c+2;

return (c);

}

运行结果如下:

38505b0610e86ae822f042ce25e8def3.png

例7.7 用递归法求n!

# include

int main()

{

int fac(int n);

int n;

int y;

printf("intput an integer number :");

scanf("%d",&n);

y=fac(n);

printf("%d!=%d",n,y);

return 0;

}

int fac(int n)

{

int a;

if(n==0||n==1)

a=1;

else

a=fac(n-1)*n;

return (a);

}

运行结果如下:

91cd599a87242538db336d93965e435b.png

例7.8Hanoi(汉诺)塔问题

# include

int main()

{

void hanoi(int n,char one,char two,char three);

int m;

printf("intput the number of diskes:");

scanf("%d",&m);

printf("The step to move %d diskes:\n",m);

hanoi(m,'A','B','C');

}

void hanoi(int n,char one,char two,char three)

{

void move(char x,char y);

if(n==1)

move(one,three);

else

{

hanoi(n-1,one,three,two);

move(one,three);

hanoi(n-1,two,one,three);

}

}

void move(char x,char y)

{

printf("%c-->%c\n",x,y);

}

运行结果如下:

b8dec571bb7a1090bb689d1f87927eb5.png

例7.9 输入10个数 要求输出其中最大值以及他是第几个数

# include

int main()

{

int max(int x,int y);

int a[10],m,n,i;

printf("enter 10 integer number:");

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

scanf("%d",&a[i]);

printf("\n");

for(i=1,m=a[0],n=0;i<10;i++)

{

if(max(m,a[i])>m)

{m=max(m,a[i]);

n=i;}

}

printf("The largest number is %d\nit is the %dth number.\n",m,n+1);

}

int max(int x,int y)

{

return (x>y?x:y);

}

运行结果如下:

3f1f4ff76055bf489b17f3232c4513a6.png

例7.10 有一个一维数组,内放10个同学的成绩,求平均成绩

# include

int main()

{

float average(float array[10]);

float score[10],aver;

int i;

printf("intput 10 score:\n");

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

scanf("%f",&score[i]);

aver=average(score);

printf("average score is %5.2f\n",aver);

return 0;

}

float average(float array[10])

{

int i;

float sum=0,aver;

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

sum=sum+array[i];

aver=sum/10;

return (aver);

}

运行结果如下:

5a663bb7e20bc304b62d43c18ff7b854.png

例7.11 有两个班级,分别有35名和30名学生,调用一个average函数,分别求这两个班级的平均成绩。

# include

int main()

{

float average(float array[],int n);

float score1[5]={98.5,97,91.5,60,55};

float score2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5};

printf("The average of class A is %6.2f\n",average(score1,5));

printf("The average of class B is %6.2f\n",average(score2,10));

return 0;

}

float average(float array[],int n)

{

int i;

float sum=0,aver;

for(i=0;i

sum=sum+array[i];

aver=sum/n;

return (aver);

}

运行结果如下:

a47062a4d37bc6d19586e9109773d732.png

例7.12 用选择法对数组10个整数有小到大排列

# include

int main()

{

void sort(int array[],int n);

int i;

int a[10];

printf("enter array:\n");

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

scanf("%d",&a[i]);

sort(a,10);

printf("The sorted array:\n");

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

printf("%d ",a[i]);

printf("\n");

return 0;

}

void sort(int array[],int n)

{

int i,t,j,k;

for(i=0;i

{

k=i;

for(j=i+1;j

if(array[j]

k=j;

t=array[k];array[k]=array[i];array[i]=t;

}

}

运行结果如下:

29912cd86d586796f2a44521806f8d08.png

例7.13有一个3*4矩阵求出元素中最大值

# include

int main()

{

int max_value(int array[][4]);

int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};

printf("Max value is %d\n",max_value(a));

return 0;

}

int max_value(int array[][4])

{

int i,j,max;

max=array[0][0];

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

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

if(max

max=array[i][j];

return (max);

}

运行结果如下:

feb1d1e663861a1e213849d8389a07a2.png

例7.14 用一个一维数组存放10个学生的成绩,写一个函数计算平均分 最高分 和最低分

# include

int main()

{

float min(float array[],int n);

float max(float array[],int n);

float average(float array[],int n);

float ave,score[10];

int i;

float Max,Min;

printf("Please enter 10 score:");

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

scanf("%f",&score[i]);

ave=average(score,10);

Max=max(score,10);

Min=min(score,10);

printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",Max,Min,ave);

return 0;

}

float average(float array[],int n)

{

int i;

float aver,sum=array[0];

for(i=1;i

{

sum=sum+array[i];

}

aver=sum/n;

return (aver);

}

float max(float array[],int n)

{

int i;

float max=array[0];

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

if(max

max=array[i];

return (max);

}

float min(float array[],int n)

{

int i;

float min=array[0];

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

if(min>array[i])

min=array[i];

return (min);

}

运行结果如下:

af3071a04199ce9d8c66af6a50003a52.png

例7.15 若外部变量与局部变量同名效果如何

# include

int a=3,b=5;

int main()

{

int max(int a,int b);

int a=8;

printf("max=%d\n",max(a,b));

return 0;

}

int max(int a,int b)

{

int c;

c=a>b?a:b;

return (c);

}

运行结果如下:

6e0fe7705697616a4f06fe26f9dd7d99.png

例7.16 静态局部变量的研究

# include

int main()

{

int f(int a);

int a=2,i;

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

printf("%d\n",f(a));

return 0;

}

int f(int a)

{

auto int b=0;

static int c=3;

b=b+1;

c=c+1;

return (a+b+c);

}

运行结果如下:

3da449ac48c7fa64ff1cc15815b0bdb3.png

例7.17 输出1~5的阶乘值

include

# include

int main()

{

int fac(int b);

int i;

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

printf("%d!=%d\n",i,fac(i));

return 0;

}

int fac(int b)

{

staticint f=1;

f=f*b;

return (f);

}

运行结果如下:

889403e682c1ee21b4d128bd6d192aeb.png

例7.18调用函数求三者中的最大数

# include

int main()

{

int max();

extern int A,B,C;

printf("Please enter three integer number:");

scanf("%d%d%d",&A,&B,&C);

printf("max=%d\n",max());

return 0;

}

int A,B,C;

int max()

{

int m;

m=A>B?A:B;

if(m

m=C;

return (m);

}

运行结果如下:

685bf380fa0d9a027b8a3802a7211e10.png

例7.19 给定b的值,输入a和m 求a*b和a的m次方的值。

# include

int A;

int main()

{

int power(int);

int b=3,c,d,m;

printf("enter the number a and its power m:\n");

scanf("%d%d",&A,&m);

c=A*b;

printf("%d*%d=%d\n",A,b,c);

d=power(m);

printf("%d**%d=%d\n",A,m,d);

return 0;

}

文2

extern A;

int power(int n)

{

int i,y=1;

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

y*=A;

return (y);

}

运行结果如下:

48db6bbd189958167e88011a3053240e.png

例7.20 有一个字符串,内有若干个字符,现输入一个字符要求程序删除字符串中的该字符

# include

int main()

{

extern void enter_string(char str[]);

extern void delete_string(char str[],char ch);

extern void print_string(char str[]);

char c,str[80];

enter_string(str);

scanf("%c",&c);

delete_string(str,c);

print_string(str);

return 0;

}

文2

void delete_string(char str[],char ch)

{

int i,j;

for(i=j=0;str[i]!='\0';i++)

{if(str[i]!=ch)

str[j++]=str[i];}

str[j]='\0';

}

文3

void print_string(char str[])

{

printf("%s\n",str);

}

文4

void enter_string(char str[80])

{

gets(str);

}

运行结果如下:

6611e56ad143cb60241d5088a0026aa4.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值