博文

[置顶] for循环使用详解(c语言版)[转载](2006-07-26 01:23:00)

摘要:说明:c语言的很多语法部分都和JAVA,AS等相同 特别是for的用法. c语言中的for循环语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句.for(表达式 1;表达式 2;表达式 3)语句它的执行过程如下:(1)先求表达式 1.(2)求表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下面第三步 做若为 假(值为0),则结束循环,转到第5步.(3)求解表达式3(4)转回上面第(2)步骤继续执行;(5)结束循环,执行for语句下面的一个语句;for(循环变量赋初值;循环条件;循环变量增值)语句如 for(i=1;i<=100;i++)sum=sum+i; 它的执行相当于 i=1; while(i<=100){ sum=sum+i; i++; } 显然,用for语句更简单、方便。说明:(1)for语句的一般形式中的"表达式1"可以省略,此时应在for语句之前给循环变量赋初值.注意省略表达式1时,其后的分号不能省略.如for(;i<=100;i++){....};(2)如果表达式2省略 即不判断循环条件,循环无终止地循环下去,也就是认为表达式2始终为真.例如:for(i=1;;i++){.....};相当于 i=1; while(1) {sum=sum+1; i++; } (3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束.如: for(i=1;i<=100;) {sum=sum+1; i++; } 这个例子的循环增量没有放在表达式三的位置 而是作为循环体的一部分 其效果是一样的.(4)可以省略表达式1和表达式3,只有表达式2 即只给循环条件.如 for(;i<=100;) { sum=sum+i; i++; } 这个相当于 whlie(i<=100) { sum=sum+i; i++; } (5)三个表达式都可以省略,如:for(;;)语句相当于while(1)语句即不设初值 不判断条件(认为表达式2为真值)循环变量不增值,无终止的执行循环体.(6)表达式1也可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式.如: for(sum=0;i<=......

阅读全文(2157) | 评论:0

[置顶] C语言编程易犯毛病集合[转载](2006-07-26 00:55:00)

摘要:C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,本人通过对C的学习,积累了一些C编程时常犯的错误,写给各位学员以供参考。1.书写标识符时,忽略了大小写字母的区别。main(){int a=5;printf("%d",A);}编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。[C语言规定所有的关键字必须小写,而标识符中的字母则既可以大写,也可以小写,标识符不能与关键字相同,并区分大小写字母。例如,else是关键字,不能作为标识符使用,而ELSE可以作为标识符使用。]2.忽略了变量的类型,进行了不合法的运算。main(){float a,b;printf("%d",a%b);}%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。3.将字符常量与字符串常量混淆。char c;c="a";在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。4.忽略了“=”与“==”的区别。在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写if (a=3) then …但C语言中,“=”是赋值运算符,“==”是关系运算符。如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。5.忘记加分号。分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1b=2编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。{ z=x+y;t=z/100;printf("%f",t);}对于......

阅读全文(2310) | 评论:1

[置顶] c语言的编程风格[转载]     (2006-07-26 00:50:00)

摘要:c语言的编程风格 第一章:缩进格式  Tab是8个字符,于是缩进也是8个字符.有很多怪异的风格,他们将缩进格式定义为4个字符(设置为2个字符!)的深度,这就象试图将PI定义为3一样让人难以接受.   理由是:缩进的大小是为了清楚的定义一个块的开始和结束.特别是当你已经在计算机前面呆了20多个小时了以后,你会发现一个大的缩进格式使得你对程序的理解更容易.   现在,有一些人说,使用8个字符的缩进使得代码离右边很近,在80个字符宽度的终端屏幕上看程序很难受.回答是,但你的程序有3个以上的缩进的时候,你就应该修改你的程序.   总之,8个字符的缩进使得程序易读,还有一个附加的好处,就是它能在你将程序变得嵌套层数太多的时候给你警告.这个时候,你应该修改你的程序. 第二章:大符号的位置  另外一个C程序编程风格的问题是对大括号的处理.同缩进大小不同,几乎没有什么理由去选择一种而不选择另外一种风格,但有一种推荐的风格,它是Kernighan和Ritchie的经典的那本书带来的,它将开始的大括号放在一行的最后,而将结束大括号放在一行的第一位,如下所示:   if (x is true) { we do y }     然而,还有一种特殊的情况:命名函数:开始的括号是放在下一行的第一位,如下:int function(int x) { body of function }     所有非正统的人会非难这种不一致性,但是,所有思维正常的人明白: (第一) K&R是___对___的,(第二)如果K&R不对,请参见第一条. (:-))......另外,函数也是特殊的,不一定非得一致.   需要注意的是结束的括号在它所占的那一行是空的,__除了__它跟随着同一条语句的继续符号.如"while"在do-while循环中,或者"else"在if语句中.如下:   do { body of do-loop } while (condition);   以及  if (x == y) { .. } else if (x > y) { ... } else { .... }   理由: K&R.     另外,注意到这种大括号的放置方法减小了空行的数量,但却没有减少可读性.于是,在屏幕大小受到限制的时候,你就可以有更多的空行来写些注释了. ......

阅读全文(1916) | 评论:0

[置顶] c语言学习新手必看 power by vcok.com[转载](2006-07-26 00:47:00)

摘要:本人也是刚学C不久算是老菜鸟。把我遇到的问题写出来,希望对初学者有点帮助。 一、分号,大括号 分号。分号是表达式结束的标志,一般表达式后面都要有。 写“;”的时候一定要注意:是否要结束前面的语句 。注意:if,switch,for,while语句,数据类型定义,函数定义。 if(a>b) /*if语句,没有分号*/ {...} while(i+=10,i!=100); /*while语句循环体为空,依靠逗号语句实现循环*/ struct a /*结构体数据定义,没有分号*/ {...}b; /*结构体变量,要有分号*/ int sum(...) /*函数定义,没有分号*/ {....} 大括号。大括号是一个语句段的标志。 写大括号时最好一次写一对,然后把光标移到大括号里写 。避免遗漏。 二、运算符号 “=”与“==” “=”用于赋值,注意“=”左边必须是变量,右边可以是常量也可以是变量。“==”用于判断两个量的大小,左右两边可以是常量也可以是变量( 尽量把常量写在左边,这样“==”误写成“=”时编译器就会报错 )。 运算表达式有它本身的值 。“=”语句值为“=”右边的量的大小;“==”语句值为判断结果,无外乎两种,0(表示“==”两边不等)1(“==”两边相等)。 (i=1)==(3==4); /*i值为1,整个表达式值为0*/ “,” 逗号语句是从左到右计算,整个逗号语句的值为最后一个语句的值 i=(j=2,j+8,j++); /*先计算j=2,值为2,j+8不是运算表达式,跳过,计算j++得到整个括号内的值3*/ “/” “/”两边都是整型变量的时候结果也是整型,而且结果遵循向0靠拢的原则 。 运算符的优先级及结合方向 不多说了,表格一定要背牢。 三、变量 命名 不要吝惜,能说明白性质尽量在变量的名字上说明。 避免老是使用一个字母,或者难以理解的变量名 。对于较长的变量命名可以使用宏定义、类型定义。 #deine UP 0x4800 /*键码的宏定义*/ typedef struct {....}MEM; /*结构体变量的类型定义*/ 类型 注意变量的使用范围。 当不确定变量的范围的时候尽量选用值域宽的类型。双目运算符两边的变量一般类型要一致。不一致......

阅读全文(2952) | 评论:1