C语言面试的10个经典基础算法及代码.docx
《C语言面试的10个经典基础算法及代码.docx》由会员分享,可在线阅读,更多相关《C语言面试的10个经典基础算法及代码.docx(9页珍藏版)》请在冰豆网上搜索。
C语言面试的10个经典基础算法及代码
C语言面试的10个经典基础算法及代码
C语言面试的10个经典基础算法及代码
1、计算Fibonacci数列
Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:
1、1、2、3、5、8、13、21。
C语言实现的代码如下:
/*DisplayingFibonaccisequenceuptonthtermwherenisenteredbyuser.*/
#include
intmain()
{
intcount,n,t1=0,t2=1,display=0;
printf("Enternumberofterms:
");
scanf("%d",&n);
printf("FibonacciSeries:
%d+%d+",t1,t2);/*Displayingfirsttwoterms*/
count=2;/*count=2becausefirsttwotermsarealreadydisplayed.*/
while(count
{
display=t1+t2;
t1=t2;
t2=display;
++count;
printf("%d+",display);
}
return0;
}
结果输出:
Enternumberofterms:
10
FibonacciSeries:
0+1+1+2+3+5+8+13+21+34+
也可以使用下面的.源代码:
/*DisplayingFibonacciseriesuptocertainnumberenteredbyuser.*/
#include
intmain()
{
intt1=0,t2=1,display=0,num;
printf("Enteraninteger:
");
scanf("%d",&num);
printf("FibonacciSeries:
%d+%d+",t1,t2);/*Displayingfirsttwoterms*/
display=t1+t2;
while(display
{
printf("%d+",display);
t1=t2;
t2=display;
display=t1+t2;
}
return0;
}
结果输出:
Enteraninteger:
200
FibonacciSeries:
0+1+1+2+3+5+8+13+21+34+55+89+144+
2、回文检查
源代码:
/*Cprogramtocheckwhetheranumberispalindromeornot*/
#include
intmain()
{
intn,reverse=0,rem,temp;
printf("Enteraninteger:
");
scanf("%d",&n);
temp=n;
while(temp!
=0)
{
rem=temp%10;
reverse=reverse*10+rem;
temp/=10;
}
/*Checkingifnumberenteredbyuserandit'sreversenumberisequal.*/
if(reverse==n)
printf("%disapalindrome.",n);
else
printf("%disnotapalindrome.",n);
return0;
}
结果输出:
Enteraninteger:
12321
12321isapalindrome.
3、质数检查
注:
1既不是质数也不是合数。
源代码:
/*Cprogramtocheckwhetheranumberisprimeornot.*/
#include
intmain()
{
intn,i,flag=0;
printf("Enterapositiveinteger:
");
scanf("%d",&n);
for(i=2;i<=n/2;++i)
{
if(n%i==0)
{
flag=1;
break;
}
}
if(flag==0)
printf("%disaprimenumber.",n);
else
printf("%disnotaprimenumber.",n);
return0;
}
结果输出:
Enterapositiveinteger:
29
29isaprimenumber.
4、打印金字塔和三角形
使用*建立三角形
*
**
***
****
*****
源代码:
#include
intmain()
{
inti,j,rows;
printf("Enterthenumberofrows:
");
scanf("%d",&rows);
for(i=1;i<=rows;++i)
{
for(j=1;j<=i;++j)
{
printf("*");
}
printf("\n");
}
return0;
}
如下图所示使用数字打印半金字塔。
1
12
123
1234
12345
源代码:
#include
intmain()
{
inti,j,rows;
printf("Enterthenumberofrows:
");
scanf("%d",&rows);
for(i=1;i<=rows;++i)
{
for(j=1;j<=i;++j)
{
printf("%d",j);
}
printf("\n");
}
return0;
}
用*打印半金字塔
*****
****
***
**
*
源代码:
#include
intmain()
{
inti,j,rows;
printf("Enterthenumberofrows:
");
scanf("%d",&rows);
for(i=rows;i>=1;--i)
{
for(j=1;j<=i;++j)
{
printf("*");
}
printf("\n");
}
return0;
}
用*打印金字塔
*
***
*****
*******
*********
源代码:
#include
intmain()
{
inti,space,rows,k=0;
printf("Enterthenumberofrows:
");
scanf("%d",&rows);
for(i=1;i<=rows;++i)
{
for(space=1;space<=rows-i;++space)
{
printf("");
}
while(k!
=2*i-1)
{
printf("*");
++k;
}
k=0;
printf("\n");
}
return0;
}
用*打印倒金字塔
*********
*******
*****
***
*
源代码:
#include
intmain()
{
introws,i,j,space;
printf("Enternumberofrows:
");
scanf("%d",&rows);
for(i=rows;i>=1;--i)
{
for(space=0;space
printf("");
for(j=i;j<=2*i-1;++j)
printf("*");
for(j=0;j
printf("*");
printf("\n");
}
return0;
}