文章目录
前言
所有程序都已经经过调试
一、斐波那契数列
输出数列前20项
#include<stdio.h>
int main()
{
int i,f[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<20;i++)
{
if(i%5==0)
printf("\n");
printf("%-8d",f[i]);}
return 0;}
二、输入两个字符串,把他们连接起来,不使用函数strcat
代码如下:
#include<stdio.h>
int main()
{
char s1[80],s2[80];
int j,i;
gets(s1);
gets(s2);
for(i=0;s1[i]!='\0';i++);
for(j=0;s2[j]!='\0';i++,j++)
s1[i]=s2[j];
s1[i]='\0';
puts(s1);
return 0;}
for(i=0;s1[i]!='\0';i++);此处用的是空循环
三、十进制正整数转换成m进制的数
#include<stdio.h>
int main()
{
int a[60],x,m,i=0,j=0;
char s[60];
scanf("%d%d",&x,&m);
do
{
a[i]=x%m;
x=x/m;
i++;}
while(x!=0);
for(i--;i>=0;i--,j++)
if(a[i]>=0&&a[i]<=9)
s[j]=a[i]+'0';
else s[j]=a[i]-10+'A';
s[j]='\0';
puts(s);
return 0;}
每次得到的余数,放在a【i】内,当余数为0,停止循环
余数逆序,为所转换的进制的结果
大于等于10的数用大写字母表示
s【j】即为所求结果
四、杨辉三角(输出10行)
#include<stdio.h>
#define N 10
int main()
{
int a[N][N],i,j;
for(i=0;i<N;i++)
for(j=0;j<=i;j++)
if(j==0||j==i)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<N;i++)
{
for(j=0;j<=i;j++)
printf("%-5d",a[i][j]);
printf("\n");}
return 0;
}
for(i=0;i<N;i++)
for(j=0;j<=i;j++)第二层循环循环条件 j=0;j<=i;用if判断结构来控制输出杨辉三角的数
五、输入整数x,在一组整数中查找x
1.顺序查找
#include<stdio.h>
#define N 13
int main()
{
int a[N]={2,3,5,6,12,15,23,46,50,70,74,80,90},x,i;
scanf("%d",&x);
for(i=0;i<N;i++)
if(x==a[i])
{printf("a[%d]=%d\n",i,x);break;}
if(i>=N) printf("not found!\n");
return 0;}
与判断是否为羊村人的思想相似
2.折半查找
#define N 13
#include<stdio.h>
int main()
{
int a[N]={2,3,5,6,12,15,23,46,50,70,74,80,90},x,high,low,mid;
scanf("%d",&x);
low=0;high=N-1;
while(low<=high)
{
mid=low+(high-low)/2;
if(x==a[mid])
{printf("a[%d]=%d\n",mid,x);
break;}
else if(x<a[mid])
high=mid-1;
else low=mid+1;}
if(low>high)
printf("not found!");
return 0;}
mid=low+(high-low)/2避免数组很大时发生数值溢出
如果(x<a[mid]),则high向下移high=mid-1;
如果(x》a[mid]),则low向上移low=mid+1;