C基础-day7

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值