与人共享,望高手批改……永远处于不断更新中……
1、 输入数组,使最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。(要求用指针实现)
作答如下:
#include <stdio.h>
#define N 100
void max_min(char *p);
void main()
{
char *p,c='Y';
int a[N];
do
{
system("cls");
printf("Please input a string:");
scanf("%s",a);
p=a;
system("cls");
printf("your string is:%s/n",p);
max_min(p);
printf("continue?(Y/N)");
fflush(stdin);
c=getchar();
}while((c!='N')&&(c!='n'));
fflush(stdin);
getchar();
}
void max_min(char *p)
{
char *q,*qmax,*qmin,t,*t1;
q=p;
qmax=p;
qmin=p;
while(*q!='/0')
{
if(*q>*qmax)
{
qmax=q;
q++;
}
else
q++;
}
printf("max=%c/n",*qmax);
q=p;
t=*q;
*q=*qmax;
*qmax=t;
q=p;
while(*q!='/0')
{
if(*q<*qmin)
{
qmin=q;
q++;
}
else
q++;
}
printf("min=%c/n",*qmin);
q--;
t=*q;
*q=*qmin;
*qmin=t;
printf("switched:%s/n",p);
}
*********************
2、编写一个程序,输入两个正整数m,n(m>n),计算从m个元素中任取n个元素的组合数。
#include <stdio.h>
long fun(int x)
{
int i;
long f=1;
for(i=2;i<=x;i++)
f=f*i;
return f;
}
main()
{
int m,n;
long c;
do
{
printf("m,n:");
scanf("%d,%d",&m,&n);
}while(m<=n);
c=fun(m)/(fun(n)*fun(m-n));
printf("c=%ld/n",c);
}