文章目录
- 前言
- 1、float和double
- 2、求最大公约数
- 3、输出
- 4、字符串
- 5、 a b a^b ab求最后一位的处理办法
- 6、整型数组合二为一
- 7、加减乘原理
- 8、交换两个数
- 9、威尔逊定理和孪生素数
前言
大一在学习C语言时整理的笔记。到现在,好长时间没看了,复习回顾一下。
1、float和double
float(0.01)
double(0.001)
两者的区别:double精度高
double s=1.34;
printf("%7.2fn",s); //右对齐
printf("%-7.2fn",s); //左对齐
本来输出就是左对齐的
2、求最大公约数
求m和n的最大公约数:
第一种方法:c++中的:__gcd(a,b)函数
scanf("%d %d",&n,&m);
printf("%dn",__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("%dn",x,y);
return 0;
}
三种丢小数的情况:
int a=1.6;
(int)a; //强制类型转化
1/2、3/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-->%dnb-->%dn",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
最后
以上就是大气河马最近收集整理的关于C语言易错点整理前言1、float和double2、求最大公约数3、输出4、字符串5、 a b a^b ab求最后一位的处理办法6、整型数组合二为一7、加减乘原理8、交换两个数9、威尔逊定理和孪生素数的全部内容,更多相关C语言易错点整理前言1、float和double2、求最大公约数3、输出4、字符串5、 内容请搜索靠谱客的其他文章。
发表评论 取消回复