1.有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13... 求出这个数列的前 20 项之和。
#include <stdio.h>
int main(int argc,const char* argv[])
{
float result;
float a = 1,b =2;
for(int i =0;i < 20;i++){
result += b/a;
b = a+b;
a = b-a;
}
printf("结果为:%g\n",result);
return 0;
}

2.输入一个整数,求该整数的二进制中有几个1
#include <stdio.h>
int main(int argc,const char* argv[])
{
int num,i = 0;
scanf("%d",&num);
while(1){
if(num % 2 == 1)
i++;
num /= 2;
if(num == 1)
{
i++;
break;
}
}
printf("有%d个1\n",i);
return 0;
}

3.从终端输入一个整数,要求将该整数进行翻转。例如输入123,要求输出321(三百二十一) 输入-123,要求输出-321. 不考虑翻转后溢出的情况
#include <stdio.h>
#include <math.h>
int main(int argc,const char* argv[])
{
int number,num2,num1,n=0,result=0;
int flag = 1;
scanf("%d",&number);
if(number < 0)
{
flag = -1;
num1 = number * -1;
}
else
num1 = number;
num2 = num1;
while(num1 != 0)
{
num1 /= 10;
n++;
}
for(int i = 0;i < n;i++)
{
result += (num2 % 10)*pow(10,n-i-1);
num2 /= 10;
}
printf("输入%d 输出:%d\n",number,result*flag);
return 0;
}

4.99乘法表
#include <stdio.h>
int main(int argc,const char* argv[])
{
for(int i = 1; i < 10;i++)
{
for(int j =1;j <= i;j++)
{
printf("%dx%d=%d ",j,i,j*i);
}
puts("");
}
return 0;
}

5.循环打印以下图案:矩形、平行四边形、直角三角形、等腰三角形、菱形、如下英文排序:
#include <stdio.h>
int main(int argc,const char* argv[])
{
// 矩形
for(int i = 0;i < 4;i++)
{
for(int j = 0;j < 8;j++)
printf("*");
printf("\n");
}
printf("\n\n");
// 平行四边形
for(int i = 0;i < 4;i++)
{
for(int k =0;k<=i;k++)
printf(" ");
for(int j = 0;j < 8;j++)
printf("*");
printf("\n");
}
printf("\n\n");
// 直角三角形
for(int i = 1;i < 5;i++)
{
for(int j = 0;j < 2*i-1;j++)
printf("*");
printf("\n");
}
printf("\n\n");
// 等腰三角形
for(int i = 1;i < 6;i++)
{
for(int k =0;k< 5-i;k++)
printf(" ");
for(int j = 0;j < 2*i-1;j++)
printf("*");
printf("\n");
}
printf("\n\n");
// 菱形
for(int i = 1;i < 6;i++)
{
for(int k =0;k< 5-i;k++)
printf(" ");
for(int j = 0;j < 2*i-1;j++)
printf("*");
printf("\n");
}
for(int i = 1;i < 5;i++)
{
for(int k =0;k<i;k++)
printf(" ");
for(int j = 0;j < 9-2*i;j++)
printf("*");
printf("\n");
}
printf("\n\n");
// 英文序列
char s[] = "FEDCBA";
for(int i = 1;i < 7;i++)
{
for(int j = 1;j<i;j++)
printf(" ");
for(int k = 0;k <i;k++)
printf("%c",s[k]);
printf("\n");
}
return 0;
}


6. 定义一个整型数组,要求从终端输入5个数字。再输入一个数字n。判断n是否存在于那5个数字中。
#include <stdio.h>
void get_num();
int main(int argc,const char* argv[])
{
get_num();
return 0;
}
void get_num(){
int number[5],n,j;
for(int i =0;i<5;i++)
scanf("%d",&number[i]);
printf("\n请输入n:");
scanf("%d",&n);
for(j=0;j< 5;j++){
if(n == number[j]){
printf("%d在这五个数中\n",n);
break;
}
}
if(j == 5)
printf("%d不在这五个数当中\n",n);
}

7. 从终端获取字符串,统计出大写字母,小写字母及空格的个数
#include <stdio.h>
#include <string.h>
int main(int argc,const char* argv[])
{
char str[30];
int big=0,small=0,space=0;
gets(str);
for(int i=0;i<strlen(str);i++)
{
if('A' <= str[i] && 'Z' >= str[i])
{
big++;
continue;
}
if('a' <= str[i] && 'z' >= str[i])
{
small++;
continue;
}
if(' ' == str[i])
space++;
}
printf("big = %d,small = %d, space = %d\n",big,small,space);
return 0;
}

8. 从终端获取字符串,删除字符串中的空格。
#include <stdio.h>
#include <string.h>
int main(int argc,const char* argv[])
{
char str[40];
gets(str);
for(int i =0;i < strlen(str);i++)
A: if(str[i] == ' ')
{
for(int j = i;;j++)
{
str[j] = str[j+1];
if(str[j+1] == '\0')
break;
}
goto A;
}
printf("%s\n",str);
return 0;
}

9. 求二维数组的最大值 , 定义一个二维数组,求二维数组中的最大值及最大值的行号和列号。(附加题,求第二大值)
#include <stdio.h>
int main(int argc,const char* argv[])
{
int arr[3][3]={
{5,6,4},
{12,10,7},
{2,18,9}
};
int row,col,temp=0;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(temp <= arr[i][j])
{
temp = arr[i][j];
row = i;
col = j;
}
printf("最大值为:%d,行号为:%d,列号为:%d\n",temp,row,col);
return 0;
}

附加:求第二大
#include <stdio.h>
int main(int argc,const char* argv[])
{
int arr[3][3]={
{5,6,4},
{12,10,7},
{2,18,9}
};
int row,col,temp = 0;
int row2,col2,max2 = 0;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
if(temp <= arr[i][j])
{
max2 = temp;
row2 = row;
col2 = col;
row = i;
col = j;
temp = arr[i][j];
continue;
}
if(max2 <= arr[i][j])
{
max2 = arr[i][j];
row2 = i;
col2 = j;
}
}
printf("最大值为:%d,行号为:%d,列号为:%d\n",temp,row,col);
printf("第二大值为:%d,行号为:%d,列号为:%d\n",max2,row2,col2);
return 0;
}

10.求斐波那契数列的第n项。(用数组和递归的方式分别实现一遍)
10.1递归:
#include <stdio.h>
int fei(int);
int main(int argc,const char* argv[])
{
int n =5;
for(int i=1;i<10;i++)
printf("%d,",fei(i));
printf("\n");
return 0;
}
int fei(int n)
{
if(n == 1 || n==2)
return 1;
return fei(n-1)+fei(n-2);
}

10.2数组
#include <stdio.h>
int fei(int);
int main(int argc,const char* argv[])
{
int n;
printf("请输入n:");
scanf("%d",&n);
int arr[30];
arr[1] = 1;
arr[0] = 1;
for(int i=2;i <n;i++)
arr[i] = arr[i-1]+arr[i-2];
for(int i=0;i<n;i++)
printf("%d,",arr[i]);
printf("\n");
return 0;
}
