91.编一个子函数GCD,求两个正整数的最大公约数,主程序输入n个自然数,调GCD,求出这n个数的最大公约数。
#include
int GCD(int,int);
void main()
{
 int a[100],i,n,k;
 printf("请输入数组元素的个数:\n");
 scanf("%d",&n);
 printf("请输入%d个正整数:\n",n);
 for(i=0;i
  scanf("%d",&a);
    k=GCD(a[0],a[1]);
 for(i=2;i
  k=GCD(k,a);
 printf("输入的%d个正整数的最大公约数是:%d\n",n,k);
}
int GCD(int x,int y)
{
 int i,min,p,q,gcd;
 if(x<=y)
  min=x;
 else
  min=y;
 for(i=1;i<=min;i++)
 {
  p=x%i;
  q=y%i;
  if(p==0&&q==0)
   gcd=i;
 }
 return gcd;
}
92.写函数求sin(x)的值。计算公式为:Sin(x)=X-X3/3!+X5/5!-X7/7!+ …+(-1)n-1X2n-1/(2n-1)!。
#include
float fun(float,int);
float sin(int,float);
float term(int);
void main()
{
 int n;
    float x;
 printf("请输入n,x值:\n");
 scanf("%d",&n);
 scanf("%f",&x);
 printf("sin(%f)=%f",x,sin(n,x));
}
float sin(int n,float x)
{
 int i;
    float s=0.0;
    for(i=1;i<=n;i++)
 s+=fun(-1.0,i-1)*fun(x,2*i-1)*term(2*i-1);
 return s;
}
float fun(float x,int n)
{
 int i;
 float p=1.0;
 for(i=0;i
  p=p*x;
 return p;
}
float term(int n)
{
 int i;
 float q=1.0;
 for(i=1;i<=n;i++)
  q/=i;
 return q;
}
93.编一函数使用冒泡法对若干个整数按从小到大的顺序排序,主函数中输入若干个整数到一个一维数组中,调用排序函数,将其排序,最后将原数组和排好序的数组输出。
#include
#define N 10
void main()
{
 int a[N],i,j,temp;
 printf("请输入10个整数:\n");
 for(i=0;i
  scanf("%d",&a);
 printf("\n");
 printf("原始数据为:\n");
 for(i=0;i
  printf("%d",a);
 for(i=1;i<=N-1;i++)
 {
  for(j=0;j<=N-i-1;j++)
   if(a[j]>a[j+1])
   {
    temp=a[j];
    a[j]=a[j+1];
    a[j+1]=temp;
   }
 }
 printf("\n排序后的数据为:\n");
 for(i=0;i
  printf("%d",a);
 printf("\n");
}
94.求一个m行n列的二维数组中的这样一个原素;它在它所在的行为最大,在它所在的列为最小。
#include
#define N 4
#define M 5
void main()
{
 int i,j,k,a[N][M],max,maxj,flag;
 printf("please input matrix:\n");
 for(i=0;i
  for(j=0;j
   scanf("%d",&a[j]);
  for(i=0;i
  {
   max=a[0];
   maxj=0;
   for(j=0;j
    if(a[j]>max)
    {
     max=a[j];
     maxj=j;
    }
    flag=1;
    for(k=0;k
     if(max>a[k][maxj])
     {
      flag=0;
      continue;
     }
    if(flag)
    {
     printf("a[%d][%d]=%d\n",i,maxj,max);
     break;
    }
  }
  if(! flag)
   printf("It is not exist!\n");
}
95.编写一个函数求给定字符串长度,主函数中输入一个字符串,调用该子函数,求出该字符串的长度,输出。
#include
void main()
{
 int length(char*p);
 int len;
 char str[20];
 printf("input string:");
 scanf("%s",str);
 len=length(str);
 printf("The length of string is %d.\n",len);
}
int length(char*p)
{
 int n;
 n=0;
 while(*p!='\0')
 {
  n++;
  p++;
 }
 return(n);
}
96.编写一个函数将给定字符串复制到另一个字符串中去,主函数中输入一个字符串,调用该子函数,复制出另一字符串,将两个串输出。
#include
#include
void main()
{
 void copystr(char*,char*,int);
 int m;
 char str1[20],str2[20];
 printf("\ninput string:");
 gets(str1);
 printf("which character that begin to copy?");
 scanf("%d",&m);
 if(strlen(str1)
  printf("input error!");
 else
 {
  copystr(str1,str2,m);
  printf("result:%s\n",str2);
 }
}
void copystr(char*p1,char*p2,int m)
{
 int n;
 n=0;
 while(n
 {
  n++;
  p1++;
 }
 while(*p1!='\0')
 {
  *p2=*p1;
  p1++;
  p2++;
 }
 *p2='\0';
}
97.写函数求Cos(x)=1+X2/2!-X4/4!+X6/6!- …+(-1)nX2n/(2n)!。
#include
float fun(float,int);
float cos(int,float);
float term(int);
void main()
{
 int n;
    float x;
 printf("请输入n,x值:\n");
 scanf("%d",&n);
 scanf("%f",&x);
 printf("cos(%f)=%f",x,cos(n,x));
}
float cos(int n,float x)
{
 int i;
    float s=-1.0;
    for(i=1;i<=n;i++)
 s+=fun(-1.0,i-1)*fun(x,2*i)*term(2*i);
 return s;
}
float fun(float x,int n)
{
 int i;
 float p=1.0;
 for(i=0;i
  p=p*x;
 return p;
}
float term(int n)
{
 int i;
 float q=1.0;
 for(i=1;i<=n;i++)
  q/=i;
 return q;
}
98.编写一个函数将给定字符串中的大写字母转换成小写字母,主函数中输入一个字符串,调用该子函数,进行转换,将原字符串及转换后的字符串输出。
#include
void main()
{
 int i;
 char a[11];
 gets(a);
 puts(a);
 for(i=0;i<10;i++)
  if(a>=65&&a<=90)
   a=a+32;
 
 puts(a);
}
99.编写一个函数将给定的两个字符串连接成一个字符串:
  格式为:strcat(ch1,ch2);
  功能:将ch2复制到ch1的后面;
  主函数中输入两个字符串,调用该子函数,求出连接之后的字符串,将两个原字符串及连接之后的结果串输出。
#include
#include
void main()
{
 char str1[20],str2[8];
 gets(str1);
 gets(str2);
 strcat(str1,str2);
 printf("%s\n",str1);
}
 
100.用40元钱买苹果、西瓜和梨共100个,且三种水果都有。已知苹果0.4元一个,西瓜4元一个,梨0.2元一个。问可以买多少个?编程输出所有购买方案。
#include
void main()
{int i=1,j,k;
  double r;
  printf("苹果  西瓜   梨\n");
  while (i<=100)
  {
   j=1;
   while(j<=(10-i))
   {
    k=100-i-j;
    r=2*i/5+4*j+i/5;
    if(r<=40)
  printf("%d%7d%7d\n",i,j,k);
    j++;
   }
   i++;
  }
}
101.编程:建立一个3×3的二维整数数组,求两条对角线上元素值得和,并将结果输出。(用函数调用方式编程)
102.编程计算:1*2*3+3*4*5+……+99*100*101的值。
#include
void main()
{
 int i,j,k,sum=0;
 for(i=1,j=2,k=3;i<100,j<101,k<102;i+=2,j+=2,k+=2)
 sum=sum+i*j*k;
 printf("%d\n",sum);
}
103.有一个5×4的矩阵,编程实现:找出该矩阵中每行元素的最大值,并使该值成为该行的首列元素。
#include
void main ()
{
 int a[5][4]={6,7,8,9,2,7,8,7,4,8,9,5,2,4,6,7,2,4,1,2},b[5][4]={6,7,8,9,2,7,8,7,4,8,9,5,2,4,6,7,2,4,1,2},t,i,j,k,p;
 int max[5]={6,2,4,2,2};
 for(i=0;i<5;i++)
 {for(j=1;j<4;j++)
    if(a[j]>max)
   {  
    max=a[j];
   }
 }
   for(k=0;k<5;k++)
   {for(p=1;p<4;p++)
    if(max[k]!=b[k][p])
       {b[k][p]=b[k][p];}
    else
    {   t=b[k][0];
     b[k][0]=b[k][p];
     b[k][p]=t;
    }
   }
      for(k=0;k<5;k++)
      for(p=0;p<4;p++)
   printf("\nb[%d][%d]=%d",k,p,b[k][p]);
   printf("\n");
}
104.编写一个程序,使输入的一个字符串按反序存放在一字符数组中,然后输出。要求:
  (1)在主调函数中输入字符串;
  (2)写函数完成由主调函数传递来的字符串按反序存放;
  (3)在主调函数中输出结果。
#include
#include
void main()
{
 void inverse(char str[]);
 char str[100];
 printf("输入字符串:\n");
 gets(str);
 inverse(str);
 printf("%s\n",str);
}
   void inverse(char str[])
   {char t;
     int i,j;
  for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j--)
  {t=str;
   str=str[j-1];
   str[j-1]=t;
  }
   }
105.从键盘输入五个字符串,分别求出字符串中长度最长和最短的字符串,请编程。(要求:不要使用strlen(_)函数编程)
106.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请编程实现。
#include
#define N 10
void main()
{
 int a[N],b[N],i,j,min,max,p,t;
 printf("请输入数据\n");
 for(i=0;i
 scanf("%d",&a);
 for(i=0,j=0;i
 b[j]=a;
 for(j=0;j
 printf("%3d",b[j]);
 printf("\n");
    for(i=1;i
 {
  if(a[0]>a)
  {a[0]=a;
  min=a[0];}
 }
    for(i=0;i
 {
  if(a[N-1]
  {a[N-1]=a;
   max=a[N-1];}
 }
 for(j=0;j
 {
  if(min!=b[j])
  {b[j]=b[j];}
   else
   {t=b[0];
    b[0]=b[j];
    b[j]=t;
   }
 }
    for(j=0;j
 {if(max!=b[j])
 {b[j]=b[j];}
 else
 {p=b[N-1];
  b[N-1]=b[j];
  b[j]=p;
 }
 }
    for(j=0;j
 printf("%3d",b[j]);
    printf("\n");
}
107.写一个判断素数的函数,在主函数中调用素数的判断函数,求出2到1000之间的素数的累加和,将结果输出,请编程。
#include
#include
int isprime(int);
void main()
{
 int i,sum=0;
 for (i=2;i<=1000;i++)
 if (isprime(i))
    sum=sum+i;
 printf("%d\n",sum);
}
   int isprime(int a)
   {
    int j;
    for(j=2;j<=sqrt(a);j++)
      if(a%j==0) return 0;
   return 1;
   }
108.编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
#include
int letter,digit,space,others;
void main()
{
 void count(char[]);
 char text[80];
 printf("输入字符串:\n");
 gets(text);
 printf("字符串是:");
 puts(text);
 letter=0;
 digit=0;
 space=0;
 others=0;
 count(text);
 printf("letter:%d,digit:%d,space:%d,others:%d\n",letter,digit,space,others);
}
   void count(char str[])
   {int i;
    
  for(i=0;str!='\0';i++)
   if((str>='a'&&str<='z')||(str>='A'&&str<='Z'))
     letter++;
   else if(str>='0'&&str<='9')
   digit++;
   else if(str==32)
   space++;
   else
   others++;
   }
109.请编程实现:将两个字符串s1和s2比较,如果s1>s2,输出一个正数;s1
    要求:不要用strcpy函数,两个串用gets函数读入,输出的正数或负数的绝对值应是相比较的两个字符串相应字符的ASCⅡ码的差值。
#include
void main()
{
 int i,resu;
 char str1[100],str2[200];
 printf("请输入str1:\n");
 gets(str1);
 printf("请输入str2:\n");
        gets(str2);
 i=0;
 while((str1==str2)&&(str1!='\0')) i++;
 if(str1=='\0'&&str2=='\0') resu=0;
 else
  resu=str1-str2;
         printf("%d\n",resu);
}
110.编写一个函数,由实参传来一个字符串,把串中所有大写字母变成相应的小写字母;原串中所有的小写字母变成相应的大写字母,在主函数中输入原字符串和输出变换后的字符串,请编程。
#include
void strupr(char str[]);
void main()
{
 char text[20];
    printf("请输入字符串:\n");
    gets(text);
 printf("%s\n",text);
    strupr(text);
 printf("%s\n",text);
}
  void strupr(char str[])
  {
   int i;
   for(i=0;str!='\0';i++)
   if(str>='a'&&str<='z')
   str=str+'A'-'a';
     else if(str>='A'&&str<='Z')
      str=str-'A'+'a';
  }
111.编程实现:由键盘输入的任意一组字符中统计出大写字母的个m和小写字母的个数n,并输出m、n中的较大者。
#include
int fmax(int x,int y);
void main()
{
  char str[80];
  int m=0,n=0,i=0,k=0,c;
  printf("请输入一个字符串\n");
  gets(str);
  for(i=0;str!='\0';i++)
  if('A'<=str&&str<='Z')
   ++m;
  else if('a'<=str&&str<='z')
   ++n;
  else
   ++k;
  printf("有%d个大写字母,有%d个小写字母:\n",m,n);
  c=fmax(m,n);
  printf("max=%d\n",c);
}
int fmax(int x,int y)
  {
   int z;
   z=x>y?x:y;
   return z;
  }
112.定义一个含有30个整形元素的数组,按顺序分别赋予从2开始的偶数,然后按顺序每五个数求出一个平均值,放在另一个数组中并输出,请编程。
#include
void main()
{
 int a[30] ,i,j=0,b[6][5],p,k;
 int c[6];
 for(i=0;i<30;i++)
  a=2*(i+1);
    for(i=0;i<30;i++)
    
 {
   printf("%3d",a);
          j++;
          if(j%5==0) printf("\n");}
 for(p=0;p<5;p++)
        for(k=0;k<6;k++)
 b[k][p]=a[5*k+p];
        for(k=0;k<6;k++)
 c[k]=(b[k][0]+b[k][1]+b[k][2]+b[k][3]+b[k][4])/5;
        for(k=0;k<6;k++)
 {printf("%3d",c[k]);}   
 printf("\n");
}
113.输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一:
  (1)能同时被3,5,7整除;
  (2)能被其中两数(要指出哪两个数)整除;
  (3)能被其中一个数(要指出哪个数)整除。
#include
void main()
{
 int a;
 printf("请输入一个整数\n");
 scanf("%d",&a);
 if(a%3==0&&a%5==0&&a%7==0)
  printf("%d能同时被3,5,7整除\n",a);
 else if(a%3!=0&&a%5==0&&a%7==0)
     printf("%d能同时被5,7整除\n",a);
    else if(a%3==0&&a%5!=0&&a%7==0)
  printf("%d能同时被3,7整除\n",a);
     else if(a%3==0&&a%5==0&&a%7!=0)
  printf("%d能同时被3,5整除\n",a);
     else if(a%3==0&&a%5!=0&&a%7!=0)
  printf("%d能被3整除\n",&a);
     else if(a%3!=0&&a%5==0&&a%7!=0)
       printf("%d能被5整除\n",a);
     else if(a%3!=0&&a%5!=0&&a%7==0)
     printf("%d能被7整除\n",a);
  else printf("%d不能被3,5,7整除\n",a);
}