2023.08.01
输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。
int max2(int a,int b)
{
int k;
k=a>b?a:b;
return k;
}
int max4(int a,int b,int c,int d)
{
int m,n,i;
m=max2(a,b);
n=max2(c,d);
i=m>n?m:n;
return(i);
}
int main()
{
int a,b,c,d,e;
printf("输入四个整数");
scanf("%d %d %d %d",&a,&b,&c,&d);
e=max4(a,b,c,d);
printf("max=%d",e);
return 0;
}
先写主函数部分,在写调用函数部分,主函数部分书写无问题,主要出现在函数调用部分。函数嵌套调用,我是两数两数字先比较,再进行比较,将最大值返回主函数,所以第一层调用就设置两两比较,再比较,因为两数比较这个流程要进行两次,我就写成第二层调用函数供比较使用。关于变量定义的部分,我尝试使用了好几个不同的max做为变量名称,发现运行起来总数在定义处报错,于是我经过更换,没有再报了。
int max2(int a,int b)
{
if(a<b) return b;
else return a;
}
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 main()
{
int max4(int a,int b,int c,int d);
int a,b,c,d,max;
printf("输入4个数");
scanf("%d %d %d %d",&a,&b,&c,&d);
max=max4(a,b,c,d);
printf("max=%d\n",max);
return 0;
}
书本上的程序在比较大小方法上略有不同,且写的很简洁,值得借鉴。
程序改进:
//max2函数的返回值
int max2(int a,int b)
{
return(a>=b?a:b);
}
//max4函数中最大值m的赋值
//原
m=max2(a,b);
m=max2(m,c);
m=max2(m,d);
//改
m=max2(max2(max2(a,b),c),d);
求组合数,Cmn。
关键:对于函数的定义,输入m,n为整型数据,输出的组合数为double。
int main()
{
int m, n;
void change(int x, int y);
double cmn, facto(int x);
printf("Input m and n=");
scanf("%d %d",&m,&n);
cmn = facto(m) / (facto(n) * facto(m - n));
printf("The combination is %lf\n", cmn);
return 0;
}
double facto(int x)
{
int y;
for (y = 1; x > 0; --x) y *= x;
return y;
}
写一个函数,计算x的n次方。
关键:运用pow函数求幂次方的运算。引用头文件<math.h>中,声明了一个函数pow(x, n),用于求x的n次方。
#include <math.h>
double power(double x, double n)
{
double p;
p = pow(x, n);
return p;
}
int main()
{
double x, n;
printf("输入x和n,计算x^n:");
scanf("%lf %lf", &x, &n);
printf("x^n=%lf", power(x, n));
return 0;
}
输出正六边形。编写程序输出边长为n的空心正六边形,其边由*组成。
调试练习
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i;
for (i = 0; i < 10; i++ )
{
arr[i] = -1;
}
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
使用断点,条件断点,逐语句,逐过程这些快捷键对上面的代码进行调试。