最大公约数:                                                                                                       最小公倍数: int a,b,t;                                                                                                                int a,b,t; s…
最大公约数与最小公倍数的求解是很多初学C的人所面临的一道问题.当然这道问题并不难解答,也有很多人已经写过相关的博客,我在此书写此篇博客,一是为了让自己能够夯实基础,另外就是希望能够帮到和我一样的初学者. 当然,在写这篇博客之前,我已经做过相关资料的调查,可能读者会发现此篇博客会与其他人的博客有所重复,但是,我保证绝未抄袭.好了,进入正题! 问题:请从键盘上输入两个数值 x,y,请用C语言求出这两个数值的最大公约数与最小公倍数. 首先,我们要想解决这道问题,就要了解什么是最大公约数与最小公倍数.…
在C语言中求字符串的长度,可以使用sizeof()函数和strlen()函数,后者需要引入string.h (#include <string.h>) 因为C语言字符串是以 \0 结尾表示结束的,如: char str1[] = {'h','e','l','l','o','\0'}; 使用sizeof(str1) 结果为:6,因为包括 \0; 使用strln(str1)结果为:5,不包括 \0, 所以只求字符串中内容的长度,就使用strlen()函数 另: sizeof()函数,既可以用来计算…
在此,首先向裘老师致敬! 裘宗燕:C/C++ 语言中的表达式求值 经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?” m = 1; n = m+++m++; 最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5: a = 4; cout << a++ << a; C++ 不是规定 << 操作左结合吗?是C++ 书上写错了,还是这个系统的实现有问题? 注:运行a = ; cout << a…
辗转相除法,一种求最大公约数的算法 已知:A / B = C ······ R  (A.B.C.R皆是整数) 假设:D是A的余数,D也是B的余数,那么D就是A和B的公约数 D是A和B的约数,则A和B是D的倍数,B * C也是D的倍数 既然A与B*C都是D的倍数,那么A与B*C的差也是D的倍数 A - B*C = R 所以R也是D的倍数 如果D是A或B的公约数,那么D也是B和R的公约数 故:(A,B)= (B,R) 由以上证明则可以求出最大的公约数 例如:求72和28的最大公约数 72 / 28…
之前看帖子,发现许多时候基本上大家都把求模和求余混为一谈了.但实际上二者的概念是有区别的   1. 求余 在C语言中,求余对应的操作符是%,且a%b求余的最后结果总是与a符号相同,最后的数值为|a|%|b|. 故而 12%256=12;         -12%256=-12;         -12%-256 = –12;         12%-256 =12;   2. 求模 在C语言中,对求模操作没有专门对应的运算符,一般用mod代替.且根据网上查阅资料,一般认为求模运算a mod b中…
求最大公约数和最小公倍数 假设有两个数a和b,求a,b的最大公约数和最小公倍数实际上是一个问题,得出这两个数的最大公约数就可以算出它们的最小公倍数. 最小公倍数的公式是 a*b/m m为最大公约数 因为 a=m*i; b=m*j; 最小公倍数为 m*i*j 计算a和b的最大公约数的方法: 方法一: 更相损减法: 反复把两数的最大者减去最小者,直至两数相等,这个数就是最大公约数 如 4 和 6 6-4=2 2个数变成了4和2 4-2=2 两个数变成了2和2 2=2 即2是两数的最大公约数 方法二:…
算法提高 求最大公约数   时间限制:1.0s   内存限制:512.0MB      编写一函数gcd,求两个正整数的最大公约数. 样例输入: 5 15样例输出:5 样例输入: 7 2样例输出:1 作者注释:常用两种方法:递归法,相减法. 递归法代码: #include<stdio.h> //递归求最大公约数 int gcd(int m,int n) { ?m:gcd(n,m%n); } int main(){ int m,n; scanf("%d%d",&m,&…
最大公约数(Greatest Common Divisor(GCD)) 基本概念 最大公因数,也称最大公约数.最大公因子,指两个或多个整数共有约数中最大的一个.a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号.求最大公约数有多种方法,常见的有质因数分解法.短除法.辗转相除法.更相减损法.与最大公约数相对应的概念是最小公倍数,a,b的最小公倍数记为[a,b]. 算法 辗转相除法 辗转相除法:辗转相除法是求两个自然数的最大公约数的…
求最大公约数和最小公倍数的经典算法--辗转相除法描述如下: 若要求a,b两数的最大公约数和最小公倍数,令a为a.b中较大数,b为较小数,算法进一步流程: while(b不为0) { temp=a%b: a=b: b=temp } 最后a即为两数的最大公约数,最大公倍数为: a*b/最大公约数 c语言代码: 01.int divisor (int a,int b) /*自定义函数求两数的最大公约数*/ 02.{ 03. int temp; /*定义整型变量*/ 04. if(a<b) /*通过比较…
1.auto 修饰局部变量,编译器默认所有局部变量都是用auto来修饰的,所以在程序中很少见到. 2.static 它作用可大了,除了可以修饰变量,还可以修饰函数,修饰变量,改变其作用域和生命周期,修饰函数,改变作用域. (1)修饰变量:如果该变量是局部变量,那么生命周期会变化,作用域限定在本文件中被使用,如果该变量是全局变量,生命周期没变化,作用域限定在本文件中被使用. (2)修饰函数:该函数只能在当前文件下被调用. 3.register (1)寄存器变量的处理速度是最快的,适合频繁使用的变量…
1. 在C语言中运算符包括:算术运算符.关系运算符.赋值运算符.逻辑运算符 2.用运算符把变量.常量连接起来的式子就是表达式 3.我们阅读一个表达式,从表达式的功能和表达式的值来看 4. 算术运算符和表达式 4.1 运算符包括:+ - * / % 4.2 一个整数和另外一个整数相除,结果是一个整数, 4/6 == 0,  6/4 == 1 4.3 求余操作%,余数的符号和被除数的符号一致  -6 % 4 == -2 4.4 数据类型较短的操作数和较长的操作数进行运算时,首先转换为较长的类型,再参…
今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不至于再在这上面浪费时间. 正文: 首先,我引用了谭浩强先生编著的<C程序设计>上面的一节原文,它简要介绍了如何将二维数组作为参数传递,原文如下(略有改变,请原谅): [原文开始] 可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如…
C语言中的指针数组是什么,像 char *a[]={"ddd","dsidd","lll"}; 这里讲一下注意如果我们使用了a也就是首元素的地址,那问题就来了我们可以直接传参a吗当然不行,a现在放到是a[0]的地址,并不是字符串的地址.我们加个*a此时他会间接寻址找到了a[0]的内容 也就是字符串地址 也就可以%s输出,也可以看出是二级指针. char [] 你使用a[0]无所谓了后面加个a[0]就可以求出数组的首地址因为%s就是传参地址…
原文地址不详 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0-255(有些机器把char型当做unsighed char型对待, 取值范围总是0-255).● 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,转换规则如下图所示.double ←── float 高↑long↑unsigned↑int ←── char…
在学习C语言中我们会发现这样一种情况: #include<stdio.h> Int main() { Int ar[10]; printf(“%p\n”,ar); printf(“%p\n”,&ar); Printf(“%p\n”,&ar[0]); } 运行上面这一段代码之后发现:三个运行结果都是一样的.对于以上的现象我把它称为C语言的三值合一. 虽然运行结果是一样的,但是其本质是不同的: ar访问的是数组名的值,而这个值恰好是首元素的地址 &ar[0]对数组的首元素求…
c语言中数组相关问题: 1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式.这些按序排列的同类数据元素的集合称为数组. 2.语法:  数据类型 + 数组名+[元素个数] 3.初始化:初始化方式: int  a[5]={1,…
c语言中函数的介绍: 函数,简单的说就是代码的打包.存放在一个地方,当需要的时候调用. 函数分类: 1.无参无返回值函数 void func() 2.无参有返回值函数  int func() 3.有参无返回值函数  void func(int num) 4.有参有返回值函数  int func(int num ) 此处讲解有参函数和无参函数的定义: 无参函数的定义: 无参函数定义的一般形式如下:     类型标识符  函数名(){         声明部分         语句     } 其中…
C语言中结构体对齐问题 收藏 关于C语言中的结构体对齐问题 1,比如: struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B;sizeof( A)=6, sizeof( B)=8,为什么?注:sizeof(short)=2,sizeof(long)=4 因为:“成员对齐有一个重要的条件,即每个成员按自己的方式对齐.其对齐的规则是,每个成员按其类型的对齐参数(通常是这个类型的大小)和指定对齐参数(这里默认是8字节)中较小的一…
目录(?)[-] 简单宏定义 带参数的宏 运算符 运算符 宏的通用属性 宏定义中圆括号 创建较长的宏 较长的宏中的逗号运算符 宏定义中的do-while循环do 空操作的定义 预定义宏 C语言中常用的宏 1. 简单宏定义 简单的宏定义有如下格式: [#define指令(简单的宏)] #define  标识符 替换列表 替换列表是一系列的C语言记号,包括标识符.关键字.数.字符常量.字符串字面量.运算符和标点符号.当预处理器遇到一个宏定义时,会做一个 “标识符”代表“替换列表”的记录.在文件后面的…
本节主要讲C语言中的各种符号,包括注释符.单引号双信号以及逻辑运算符等. 一.注释符 注释符号和注释在程序的预编译期就已经被解决了,在预编译期间,编译器会将注释符号和注释符号之间的部分简单的替换成为空格. 1.在程序中使用注释符号有以下几点需要注意 (1)如果注释符号在数据类型和变量之间,那么将不会影响程序的正常运行. int/*...*/i; (2)如果注释符号位于数据类型之间,那么程序将不会正常运行,因为一个数据类型关键字中间出现一个空格,那么数据类型关键字也就不再是关键字了. /*不能正常…
下面是四种用java语言编程实现的求最大公约数的方法: package gcd; import java.util.ArrayList; import java.util.List; public class gcd { public static void main(String[] args) { long startTime; long endTime; long durationTime; int[] testArray1 = new int[]{784, 988, 460, 732,…
原文:C语言中关键字auto.static.register.const.volatile.extern的作用 关键字auto.static.register.const.volatile.extern这些关键词都是c++基础知识,我整理了一下,希望对新学的朋友们有用:(1)auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类.结构.枚举.联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量.这个关键字不怎么多写,因为所有的变量默认就是auto的.(2)regist…
原文:c语言中逗号运算符和逗号表达式 C语言提供一种特殊的运算符——逗号运算符.用它将两个表达式连接起来.如: 3+5,6+8称为逗号表达式,又称为“顺序求值运算符”.逗号表达式的一般形式为 表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2.整个逗号表达式的值是表达式2的值.例如,上面的逗号表达式“3+5,6+8”的值为14.又如,逗号表达式 a=3*5,a*4对此表达式的求解,读者可能会有两种不同的理解:一种认为“3*5,a*4” 是一个逗号表达式,先求出此逗号表达式的…
这个函数是我无意中看到的很不错,很给力,我喜欢 是用于求最小公约数的 简单的描述就是,记gcd(a,b)表示非负整数a,b的最大公因数,那么:gcd(a,b)=gcd(b,a%b)或者gcd(a,0)=gcd(0,a)=a 请看代码 int gcd(int a,int b){ if(a==0) return b; if(b==0) return a; return gcd(b,a%b);} 例题 链接 http://acm.hdu.edu.cn/showproblem.php?pid=1108…
Go 语言函数 函数是基本的代码块,用于执行一个任务. Go 语言最少有个 main() 函数. 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务. 函数声明告诉了编译器函数的名称,返回类型,和参数. Go 语言标准库提供了多种可动用的内置的函数.例如,len() 函数可以接受不同类型参数并返回该类型的长度.如果我们传入的是字符串则返回字符串的长度,如果传入的是数组,则返回数组中包含的函数个数. 函数定义 Go 语言函数定义格式如下: func function_name( [pa…
这篇文章来自:http://blog.csdn.net/qp120291570/article/details/8708286 位运算 C语言中的位运算包括与(&),或(|),亦或(^),非(~). 下面的代码包扩了这些基本运算,还有一个两个数的交换(不用第三个数). #include<stdio.h> #include<stdlib.h> //print a int in binary void bit_print(int a) { int i; int n=16; in…
C语言中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选项. 一.类型 我们用一定的字符用以表示输出数据的类型,其格式符和意义下表所示: 字符                                    意义 a                 浮点数.十六进制数字和p-计数法(C99) A                 浮点数.十六进制数字和p-计数法(C99) c                 输出单个字符 d      …
1. 数组与指针: 对于数组,需要注意两点:1, C语言中只有一维数组, 而且数组的大小必须在编译期就作为一个常数确定下来: 2. 对于一个数组,我们只能做两件事:确定数组的大小 和 获得指向该数组下标为0的元素的指针: 实际上,对于数组下标的运算,实际上都是通过指针进行的: 如: int a[10]            ,数组名 a 实际上为指向数组第0个元素的指针: 所以, a[i] 可以表示为  *(a+i), 即对指针求值: int b[10][31]            表示了b…
C语言中的按位移动及其简单应用 在C语言中按位左移用”<<”表示,按位右移用”>>”表示. 按位左移和按位右移运算经常被用来替换乘二和除二运算,但是要注意,这两者之间并不完全等价.下面就分析一下: 首先明确,按位移动分为逻辑移动和算术移动,具体就是:逻辑左移.算术左移:逻辑右移.算术右移. 算术左移.算术右移.逻辑左移.逻辑右移的操作如下图: 可以看到,逻辑左移=算术左移:都是左移然后右边补零 算术右移和逻辑右移有所区别:逻辑右移是右移并且左边补0,而算术左移是右移并且左边补1(也…