在QQ群里回答过的问题(集锦)

来源:互联网 发布:无间道网络剧粤语 编辑:程序博客网 时间:2024/07/17 20:36

与人共享,望高手批改……永远处于不断更新中……

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);

}

 

原创粉丝点击