您的位置:首页 > 编程语言 > C语言/C++

C语言初步;简单的算法及程序;

2014-04-01 23:06 926 查看
打算重新学一遍C语言,并在这个博客上分享每天的成果。看见一个说法,写得比做的更靠谱;另外对于IT行业,博客似乎总是显得很重要,能够衡量一个程序员的功底;我既不是程序员,也没有扎实的功底。但我真的想坚持,今天是个开头,看能坚持多久。根据基本的了解,归纳了下C的一些特点:丰富的数据类型及运算符;可移植性;能够直接接触底层硬件(可以对地址的访问)。

第一题是说,输出2000年到2500年之间的所有闰年。程序十分简单,只有一点容易搞错----何为闰年?百度百科给出了定义及设置闰年的原因四年一闰,百年不闰,四百年再闰。之所以设置闰年,是因为按每天24小时、每年365天计算的话,每四年会多出一天(比一天略小),因此四年一闰;而四年一闰的每四百年会多出三日,因此又规定百年不闰,四百年再闰。算法流程图如下:



对应的C程序过于简单,不在赘述;

第二题;求m,n的最大公约数,同样算法是很重要的(我之前一直拿短除法之类的计算的,没见过这种算法,这种算法的收敛速度更快)


(算法叫欧几里得或辗转相除法,具体的证明方法参见经典问题—欧几里得求最大公约数)源代码也略去了;都是简单的运算符的应用。另外补充一点;如何计算最小公倍数,例如给出的数是m,n,由上述算法求得的最大公约数为p,则最小公倍数数为mn/p;

字符数据的输入和输出:putchar()和getchar()均只能输出和输入一个字符;如何输入一个字符串呢?利用循环

while((c=getchar())!=‘/n’).或者定义字符串数组,用gets()实现;关于这点可以从题目“输出给定的字符串的所有子串(http://blog.csdn.net/ns_code/article/details/21043665#comments)”一题中得以应用。我关于此题写的代码如下:

#include<stdio.h>
void main()
{
char a[100];
int num,i,j,k;
num=0;
/*while((a[num]=getchar())!='\n')
{
num=num+1;
}*/
for(num=0;(a[num]=getchar())!='\n';num++)

printf("aaa%d\n",num);
for(i=0;i<num;i++)
for(j=i;j<num;j++)
{
k=i;
while(k<=j)
{
printf("%c",a[k]);
k=k+1;
}
printf("\n");
}

}


格式输入与输出:7.2f%指七列二位小数;

运算符优先级:赋值<关系<算术;

swith语句;一旦执行完一个case,自动进行下一个case,除非加了break;

在循环语句及cwith语句中用break跳出当前语句;

在循环语句中,continue跳出当前循环

fabs(t)指求t的绝对值;

字符串处理函数:puts;gets;strcat(str1,str2)将字符串2接到字符串1后面;strcpy(str1,str2)将字符串3复制到1中去,字符串不能通过简单的str1=str2赋值;与之对应的strncpy(str1,str2,n)将2中最前面的n个字符复制到1中去;strcmp(str1,str2),如str1>str2,函数值为一个正数;小于为负数;等于为零。strlen测试字符串的长度;strlwr和strupr互相对应,分别将字符串变成小写或大写;

函数的单向值传递形式,形参值的变化不能使实参的值发生改变;而用指针变量作为函数参数,可以很容易的完成多多个变量的修改;

指针的理解:指针好比是地址,通过地址能够找到他所指的对象;我们可以应用指针修改指针所指的对象。指针和数组名有关联之处,比如定义数组:int a【10】,则a代表数组元素的首地址;我们定义指针变量int*p,则p=&a【0】和p=a是等价的;也就是说a也是指针,但是是个常量指针,不能在程序里继续赋值了。另外,*(p+i)和a【i】是无条件等价的

多维数组与指针的关系:对于a【i】【j】:

a 含义:0行首地址

a[0],*(a+0),*a 含义:0行0列地址

a+1,&a[1] ,*(a+1) 1行首地址;

a[1]+2,*(a+1)+2 1行2列元素的地址

*(a[1]+2),*(*(a+1)+2 ) 1行2列元素的值

sizeof()和strlen()的关系:

1、sizeof()是运算法,strlen()是函数;

2、sizeof()求变量所占的byte值;strlen一般求的是字符串的长度(不包括结尾的’\0‘,但包'\n' 't'等,另外注意'\\' '\ddd' '\xhh'等字符的用法)

以下是几个简单的程序,可以看出他们之间的关系















                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: