1、斐波那契数列 -----1 1 2 3 5 8 13
用常见的两种方式实现(非递归 和 递归):
#include<stdio.h>
/*递归实现*/
int Fibonacci_recursion(int num)
{
if(num <= 2)
{
return 1;
}
return Fibonacci_recursion(num-1) + Fibonacci_recursion(num-2);
}/*非递归实现*/
int Fibonacci(int num)
{
int ret = 0;
int i = 0;
int t1 = 1, t2 = 1, result = 0;if(num <= 2)
{
ret = 1;
i++;
goto EXIT;
}
else
{
while(i < num - 2)
{
result = t1 + t2;
t1 = t2;
t2 = result;
i++;
}
ret = result;
}
EXIT:
return ret;
}int main(int argc, char* argv[])
{
int count = 0;
int i = 0;
if(argc != 2)
{
printf("usage :./a.out num\n");
goto EXIT;
}
count = atoi(argv[1]);for(i = 1; i <= count; i++)
{
//printf("%4d", Fibonacci(i));
printf("%4d", Fibonacci_recursion(i));
}
printf("\n");
EXIT:
return 0;
}
2、回文检查-----asdfgfdsa 123321 12321 是回文 tyuioiuj不是回文
#include<stdio.h>
#include<string.h>#define MAXSIZE 64
int huiWenCheck(char *str)
{
int ret = 0;
int i = 0;
int len = 0;
len = strlen(str);while(i < len/2)
{
if(str[i] == str[len - 1 -i])
{
i++;
continue;
}
else
{
ret = 0;
goto EXIT;
}
}ret = 1;
EXIT:
return ret;
}int main()
{
char buf[MAXSIZE] = {0};
int flag = 0;
printf("please input a string:\n");
scanf("%s", buf);flag = huiWenCheck(buf);
if(flag)
{
printf("%s Yes!!!\n", buf);
}
else
{
printf("%s No!!!\n",buf);
}
EXIT:
return 0;
}
除了上述算法,还有一种思路是,将输入的字符串颠倒,判断两个字符串是否相等。
3、质数检查-----一个大于1 并且 只能被1 和 自身整除的数为质数
#include<stdio.h>
int primeCheck(int num)
{
int ret = 1;
int i = 2;
if(num <= 1)
{
ret = 0;
goto EXIT;
}
while(i < num)
{
if(num%i == 0)
{
ret = 0;
goto EXIT;
}
i++;
}EXIT:
return ret;
}int main(int argc, char* argv[])
{
int ret = 0;
int num = 0;
int flag = 0;if(argc != 2)
{
printf("usage:./a.out num\n");
goto EXIT;
}num = atoi(argv[1]);
flag = primeCheck(num);
if(flag)
{
printf("%d is prime number!!!\n", num);
}
else
{
printf("%d is not prime number!!!\n", num);
}EXIT:
return ret;
}
4、金字塔(虽不想整理,就当回忆大学时光了~~~)
*
***
*****
*******
*********
#include<stdio.h>
int main(int argc, char *argv[])
{
int ret = 0;
int i=1,j=0, k=0;
int num = 0;
if(argc != 2)
{
printf("usage:./a.out num\n");
goto EXIT;
}num = atoi(argv[1]);
for(i = 1; i <= num; i++)
{
for(k = 1; k <= num - i; k++)
{
printf(" ");
}
for(j = 1; j <= (2*i)-1; j++)
{
printf("*");
}
printf("\n");
}EXIT:
return ret;
}