C语言易错点整理

这篇博客整理了C语言学习中关于float和double的区别,最大公约数的三种计算方法,字符串操作如strcpy、strcat等,以及整型数组合并和加减乘原理。还探讨了大数处理和交换两个数的技巧,涉及威尔逊定理和孪生素数的概念。
摘要由CSDN通过智能技术生成

前言

大一在学习C语言时整理的笔记。到现在,好长时间没看了,复习回顾一下。

1、float和double

float(0.01)
double(0.001)

两者的区别:double精度高

    double s=1.34;
    printf("%7.2f\n",s);   //右对齐
    printf("%-7.2f\n",s);  //左对齐

在这里插入图片描述
本来输出就是左对齐的

2、求最大公约数

求m和n的最大公约数:

第一种方法:c++中的:__gcd(a,b)函数

    scanf("%d %d",&n,&m);
    printf("%d\n",__gcd(n,m));

第二种方法:递归

形式1
    int gcd(int a,int b){
        if(b==0)
            return a;
        return gcd(b,a%b);
    }
    
形式2
int gcd(int a,int b){
    if(a%b==0)
        return b;
    return gcd(b,a%b);

}

第三种方法:非递归

int solve(int a,int b)
{
    int temp;
    if(a<b)
    {
        temp=a;
        a=b;
        b=temp;
    }
    int r;
    while((r=a%b)!=0)
    {
        a=b;
        b=r;
    }
    return b;
}

3、输出

一个格式说明,两个输出变量。后面的不输出。

int main()
{
    int x=12,y=34;
    printf("%d\n",x,y);
    return 0;
}

在这里插入图片描述

三种丢小数的情况:

   int a=1.6;
   (int)a;  //强制类型转化
   1/23/2

4、字符串

字符串的基本操作:

    strcpy:赋值字符串
    strcat:连接两个字符串
    strcmp:比较两个字符串的大小
    strlen:检测字符串的长度
    strlwr:字符串改为小写
    strupr:字符串改为大写

字符串可以当成字符一个一个输入:
(1):

    char c;
    c=getchar();
    while(c!='\n')
    {
        printf("%c",c);
        c=getchar();
    }

(2):

   char c;
   while((c=getchar())!='\n')
   {
       printf("%c",c);
   }

5、 a b a^b ab求最后一位的处理办法

若a超级大,超范围的处理方法:

  a=a%10;
  e=a*a%10;
  f=a*a*a%10;
  g=a*a*a*a%10;

6、整型数组合二为一

两个整型数组连在一起:

 int A[1000],B[1000];
 int l=strlen(A);
 int x=strlen(B);
 for(int i=0;i<x;i++)
    A[l++]=B[i];

7、加减乘原理

    加法取余:(a+b)%mod=(a%mod+b%mod)%mod;
    乘法取余:(a%mod*b%mod)%mod;
    减法取余:(a-b)%mod=(a-b+mod)%mod;
    A|B:A、B都转化为二进制,每一位相对应,如果有一位是1,则为1

8、交换两个数

不借助中间变量交换两个数:

    int a=3,b=5;
    a=a^b;
    b=a^b;
    a=a^b;
    printf("a-->%d\nb-->%d\n",a,b);

在这里插入图片描述

9、威尔逊定理和孪生素数

P ( 1 0 9 < = p < = 1 0 14 ) P(10^9<=p<=10^ {14}) P(109<=p<=1014)为素数


找出小于P的最大素数Q。求Q!%P
思路:
威尔逊定理:(P-2)!%P=1(P为任意素数)
孪生素数:(P、P-2都是素数)

分析:Q<=P-2

1 2 .....Q|Q+1、Q+2..... P-2

令:x=1 2 .....Q
y=Q+1、Q+2..... P-2
x*y%P=1   =>x=1/y%p
再求y在P下的逆元

趁现在还有期待,加油!-2021.4.16
第二次修改。-2022.11.10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zaiyang遇见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值