1、编写函数midfind:功能为用二分查找法在n个数中查找指定数字的位置。
编程实现:在任意6个升序排列的数中查找指定数字的位置。
#include<stdio.h>
int midfind(int ch[],int n)
{
int i,mid,s=0,e=5;
while(s<=e)
{
mid=(s+e)/2;
if(ch[mid]==n) break;
if(ch[mid]>n) e=mid-1;
if(ch[mid]<n) s=mid+1;
}
if(s>e) return -1;
else return mid;
}
void main()
{
int ch[6],n,re,i;
printf("请输入一组数字:");
for(i=0;i<6;i++)
scanf("%d",&ch[i]);
printf("请输入要查找的数字:");
scanf("%d",&n);
re=midfind(ch,n);
if(n==-1)
printf("找不到%d",n);
else
printf("找到了,%d在%d位置\n",n,re);
}
2、编写函数trans:功能为4行4列的矩阵转置
编程实现:对任意4行4列的矩阵转置输出
#include <stdio.h>
void trans(int x[4][4])
{
int i,j,t;
for(i=0;i<4;i++)
{
for(j=i;j<4;j++)
{
if(i!=j)
{
t=x[i][j];
x[i][j]=x[j][i];
x[j][i]=t;
}
}
}
}
void main()
{
int a[4][4],n,m;
printf("请输入一个矩阵数据:");
for(n=0;n<4;n++)
{
for(m=0;m<4;m++)
{
scanf("%d",&a[n][m]);
printf("%3d ",a[n][m]);
}
printf("\n");
}
printf("转置后的矩阵为:\n");
trans(a);
for(n=0;n<4;n++)
{
for(m=0;m<4;m++)
{
printf("%3d ",a[n][m]);
}
printf("\n");
}
}
3、编写函数insert:功能为在一个字符串中指定位置插入指定字符,若指定位置大于等于字符串长度则是把字符追加到字符串最后。编程实现:对任意输入的字符串中指定位置插入指定字符。
#include <stdio.h>
#include <string.h>
char insert(char ch[],char c,int p)
{
int i,len=strlen(ch);
if(p<len)
{
for(i=len;i>p;i--)
{
ch[i]=ch[i-1];
}
ch[p]=c;
}
else
{
ch[len]=c;
}
}
void main ()
{
char x[]={"0"};
int i,j,p,c,len;
printf("请输入字符串:");
gets (x);
printf("请输入需插入的字符和位置:");
scanf("%c%d",&c,&p);
printf("插入后的字符串:");
insert(x,c,p);
puts(x);
}
4、编程实现:输出第n天的桃子数。猴子第一天摘下若干个桃子,立即吃了一半,还不过瘾又多吃了一个,第二天将第一天剩下的桃子吃了一半又多吃了一个,以后每天以这个规律吃下去,到第十天再去吃时发现只剩下一个桃子。
编写递归函数peach:功能为第n天的桃子数
#include <stdio.h>
int peach(int day)
{
if(day==10)
return 1;
else
return 2*(peach(day+1)+1);
}
int main()
{
int n;
printf("你想知道第几天的桃子数量吗?:");
scanf("%d",&n);
if(n>0 && n<=10)
{
printf("第%d天有%d个桃子\n",n,peach(n));
}
else
printf("没有桃子!");
}
5、编程实现:求组的值。m个的元素中取出n个元素的不同取法个数。,当n=m或者m=0时值是1。
方法1编写递归函数fun:功能为求任意一个正整数或者0的阶乘。
#include <stdio.h>
#include <stdlib.h>
long int fun(int x)
{
if(x==0||x==1) return 1;
else return fun(x-1)*x;
}
int main( )
{
int m, n;
printf("请输入元素个数和抽取的个数:");
scanf("%d %d",&m, &n);
if(m>=n)
printf("%d个元素中抽取%d个的组合有%d",m,n,fun(m)/(fun(m-n)*fun(n)));
else
printf("个数输入错误!");
}
方法2编写递归函数zhuhe:功能为求组的值。
#include <stdio.h>
#include <stdlib.h>
long int zhuhe(int n,int m)
{
if(m>n) return 0;
else if(m==n || m==0)
return 1;
else
return zhuhe(n-1,m)+zhuhe(n-1,m-1);
}
int main( )
{
int m, n;
printf("请输入元素个数和抽取的个数:");
scanf("%d %d",&m, &n);
if(m>=n)
printf("%d个元素中抽取%d个的组合有%d",m,n,zhuhe(m,n));
else
printf("个数输入错误!");
}