最小公倍数和最大公约数

C语言小笔记(内容偏向个人,不具大众化,简述):

不怎么理解的算法:
#include
int main()
{
	int n,m,s1,s2;
	int t,s,d;
	printf("请输入两个数:\n");
	scanf("%d%d",&s1,&s2);
	d=s1*s2;//为输出最小公倍数做准备两数之积除最大公约数
	m=s1;n=s2;
	if(n<m)//两数大除小,小大做对换。
	{
		t=n;
		n=m;
		m=t;
	}
    s=n%m;//这里一般对两数的辗转相除作预处理写在while循环体外
	while(s)
	{
		n=m;
		m=s;
		s=n%m;
	}
	printf("%d与%d的最大公约数为%d\n",s1,s2,m);//受循环体内n=m;m=s;的影响,定义s1,s2便于输出。下同
	printf("%d与%d的最小公倍数为%d\n",s1,s2,d/m);
}

关于变量,常量:
习惯上符号常量的标识符用大写字母。
变量标识符用小写字母。

教材书上边缘内容:
平时码代码用到的输出格式常为%d,除此之外:
%O %o ,%x %X,
unsigned int %u;
long int %ld;
unsigned long int %lu;
%g %e 的指数形式输出;
数字之前加0x表示该数为十六进制;
ASCll打印字符(特殊记忆):
A——Z:65到90; 65=41H=‘A’;
a——z:97到122; 97=61H=‘a’;
对应大小写字母之差32;
转义字符""
“\ooo” 八进制数所代表的字符;
"\t"水平制表;
printf(“1\t2\t3\n”); 作用结果如图:
最小公倍数和最大公约数_第1张图片
一个小细节
码代码时及输出框的编辑时要特别注意中文输入法和英文输入法转换!
关系运算符和关系表达式
=赋值 ==做判断;
a%=2——a=a%2;
if()也是判断语句,非0即执行;
特别简易的判断两数大小的关系表达式:
(表达式1)?(表达式2):(表达式3)
1真则输出值为表达式2;假则输出值为表达式3;
switch(x)
{
case 1:
break;

default:
break;
}
其中continue和break仅用于循环结构;
100数累加:(两种表达式)
涉及符号优先级;
i++<100;(所得i的值与100比较后再与100比较之后再+1)
++i<100;(+优先于<先+1再赋值和100比较)
对于for循环的强调:
for(表达式1;表达式2;表达式3)
{
循环体语句
}
先做一次表达式1(只做一次)在判断表达式2的逻辑值是否为真,真则执行循环体语句后再做表达式3,以此再次进行到表达式2时判断真假(是否跳出循环)。
函数调用
一: 对于srqt();只对某个数进行开方不是把目标数带入进行海伦公式的计算。
头文件: #include
例:a=5;b=sqrt(a);//对5开方
二: 用好递归函数,斐波那契数列是个不错的案例;
三:主、子函数外定义的全局变量的拿捏

数组 细节部分

  1. 习惯以下标为0开始看待一对数组(数字或字符);便于输入输出;
  2. #define N 5宏定义;
  3. a[size];数组未初始化,需给出size具体值(不管一维还是二维甚至多维)
    4.字符数组:
    常用字符串处理函数:strlen strcmp strcpy strcat
    #include
    此类处理函数针对于字符串使用,并不是单个字符;
    在字符排序时定义了t为单个字符,
    以下的运用是错误的:
char a[5];
char t;
int i;
gets(a);
for(i=0;i<5;i++)
{
	if(strcmp(a[i],a[i+1])>0)
	{
	strcpy(t,a[i]);
	strcpy(a[i],a[i+1]);
    strcpy(a[i+1],t);
	}
}

此为正确的换位:

char a[5];
char t;
int i;
gets(a);
for(i=0;i<5;i++)
{
	if(a[i]>a[i+1])
	{
	t=a[i];
	a[i]=a[i+1];
    a[i+1]=t;
	}
}

此外记得在数组末尾加’\0’

最后:
目前学到数组,假期会把后半部分学完(也会有相应学习笔记),笔记较零散,不足之处,多加指正。
后续还会分享学习中遇到的有意思东西及相应的坑
此笔记以个人情况所著,拣好避坏。嘻嘻嘻

你可能感兴趣的:(初学分享,c语言,字符串)