C/C++ Primer Plus读书与VsCode实践笔记(简单程序设计)

前言

正所谓不动手等于白学,所以在有了前面几章的基础后,开始了一些简单的程序设计,本来觉得这种代码没必要保存,直到下午用了个很蠢的方法踩了个坑,觉得还是有必要记录一下自己写的程序,便于回顾也可以当做一种以后可以调用的函数来用。(真实原因:不想保存在本地占目录)

编程题1 输出五位数的各位数数字及逆序输出

在这里插入图片描述

#include <stdio.h>

int main(){
    int number;
    int figure;
    int output[5];
    scanf("%d",&number);
    if(number>=10000){
        figure=5;
    }else if(number>=1000 && number<10000){
        figure=4;
    }else if(number>=100 && number<1000){
        figure=3;
    }else if(number>=10||number<100){
        figure=2;
    }else if(number>=0||number<10){
        figure=1;
    }
    printf("%d\n",figure);
    output[4]=number%10;
    output[0]=(number-(number%10000))/10000;
    output[1]=(number-output[0]*10000-(number%1000))/1000;
    output[2]=(number-output[0]*10000-output[1]*1000-(number%100))/100;
    output[3]=(number-output[0]*10000-output[1]*1000-output[2]*100-(number%10))/10;
    for(int i=0;i<=3;i++){
        printf("%d ",output[i]);
    }
    printf("%d\n",output[4]);
     for(int i=4;i>=0;i--){
        printf("%d",output[i]);
    }
} 

最大公约数最小公倍数

在这里插入图片描述

#include<stdio.h>

int main(){
    int m,n,output,k;
    scanf("%d %d",&m,&n);
    if(m>n){
      output=m%n;
        while(output!=0){
          k=output;
          output=m%k;
            if (output==0){
              break;
            }
        }   
      output=k*(m/k)*(n/k);
    } 
    if(m<n){
      output=n%m;
        while(output!=0){
          k=output;
          output=n%k;
            if (output==0){
              break;
          }     
        }   
        output=k*(m/k)*(n/k);
    }else
    {   
        k=m;
        output=m;
    }
    printf("%d ",k);
    
    printf("%d",output);
}

核心是找出最大的公因数求法(取余至为0),以及知道两个数字m,n它们的最小公倍数H可以通过MN的乘积除以最大公因数K的平方求得,即H=MN/K2。
我这里采用的是while循环,可能递归会更好点。

有规律的数列求和

在这里插入图片描述

#include<stdio.h>

int main(){
    int n;
    int k=2;
    int l=1;
    float sum, number;
    scanf("%d",&n);
    for(float i=1;i<=n;i++){
        number=(float)k/l;
        sum+=number;
        k+=l;
        l=k-l;
    }
    printf("%0.2f",sum);
}

找出数列表达式就好求了,这里要小心,分母的值不要给错。

自由下落的距离计算

在这里插入图片描述

#include<stdio.h>

int main(){
    int M,N;
    float SL,L;
    scanf("%d %d",&M,&N);
    SL=(float)M/2;
    L=SL;
    for(int i=1;i<N;i++){ 
        
        SL/=2;
        L+=(float)2*SL;
    }
    L=2*L;
    printf("%0.2f %0.2f",SL,L);
}

比较难的地方是建模。

筛选N以内的素数

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>

int main(){
    int n;
    int j=0,k=0;
    scanf("%d",&n);
    int a[n];
    a[0]=2;  
    for(int i=3;i<n;i++){
       while(i%a[j]!=0){
          if(j==k){
              a[j+1]=i;
              k++;
          }
          j++;
       }
       j=0;
   }
    
   for(int i=0;i<=k;i++){
       printf("%d\n",a[i]);
   }
}


思路是用数组a【】存储素数,用J记录每次用来除以当前数 I 的当前除数数组下标,用 k 来记录数组长度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值