小白必看,C语言基本语句总结 收藏

1.C语言中空语句一般有哪些用途?

(1).纯粹消耗cpu时间,起到延时的作用

(2).为了程序的结构清楚,可读性好,以后扩充新功能方便。有些公司的编码规范要求,对于if/else语句等,如果分支不配对的话,需要用空语句进行配对,一些日企这么要求的比较多。

如    if(xxxx)

      {

        xxxx

      }

       else

       {

        ;

       }

2.在if语句中,使用布尔变量应注意什么?

不可将布尔变量直接与TRUE、FALSE或者1、0进行比较,根据定义,零值为假(FALSE),任何非零值都是真(TRUE),假设布尔变量名字为flag,它与零值比较的标准if语句为

if(flag)或者if(!flag)

小编推荐一个学C语言/C++的学习裙【 六二六,八七一,九一六  】邀请码凌云,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

3.if语句中,指针变量使用时该注意什么?

指针变量应用==或!=与NULL进行比较,指针变量的零值是空(NULL),假设指针变量名字是p,则应使用:

if(p==NULL)或if(p!=NULL)。

有时我们会看到if(NULL==p),这样的古怪形式,这是为了防止将其写成if(p=NULL),而有意将其颠倒,编译器认为if(p=NULL)是合法的,但会指出if(NULL=p)是错误的,因为NULL不能被赋值。

4.C语言中goto语句的使用以及需要注意的地方

goto语句是一种无条件转移语句,由于goto语句可以灵活跳转,如果不加限制,会破坏结构化设计风格,其次共同语句经常带来错误和隐患,它可能跳过了某些对象的构造,变量的初始化,重要的计算等语句。

void main(){

int a=2,b=3;

if(a

goto aa;

printf("hello");

aa:printf("s");

return 0;

}

改程序的执行结果为s

所有在goto aa这句之后直接跳转到aa:printf("s");

aa:为标记行。冒号切记不可省略。

反之如果代码这样子

void main(){

int a=2,b=3;

if(a>b)

goto aa;

printf("hello");

aa:printf("s");

return 0;

}

那么执行结果就是hellos

可以看到执行了 printf("hello");    aa:printf("s");

aa:将没有意义。

5.while语句与do-while语句的使用规则及区别

1). while语句

语法:

while(表达式)

{

循环体;

}

循环过程:

1.先判断表达式,是否为真,如果为真跳转到2,否则跳转到3

2.执行循环体,执行完毕,跳转到1

3.跳出循环

2). do-while语句

语法:

do{

循环体;

}while(表达式);

注意:这个while后面的小括号必须接;

循环过程:

1.先执行循环体,执行完毕跳转到2

2.判断表达式的结果是否为真,如果为真,跳转到1,否则跳转到3

3.跳出循环

3). do-while和while最大的区别:

do-while至少能执行1次循环体,但是while可能一次都不执行

二 while的注意事项

  1.避免让循环的条件变成永真或者永假,不然的话可能没意义

  2.千万不要在while后面加;

  3.while循环后面的大括号可以省略,如果省略,只能影响离它最近的那句代码,并且,这句代码不可以是声明变量的

  4.while语句块里面定义的变量,外面不能

tips:代码例子如下

#include

int main(int argc, const char * argv[]) {

  //while

int i = 1,sum = 0;

while(i

{

  sum += i;

  i++;

}

printf("从1加到100的和为:%d\n",sum);

// do-while

char answer;

do{

  printf("表演\n");

  printf("满意吗?\n");

  scanf("%c",&answer);

}while(answer != 'y');

return 0;

}

6.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

它的执行相当于

i=1;

while(i

sum=sum+i;

i++;

}

显然,用for语句更简单、方便。

说明:

(1)for语句的一般形式中的"表达式1"可以省略,此时应在for语句之前给循环变量赋初值.注意省略表达式1时,其后的分号不能省略.如for(;i

(2)如果表达式2省略 即不判断循环条件,循环无终止地循环下去,也就是认为表达式2始终为真.

例如:for(i=1;;i++){.....};

相当于

i=1;

while(1)

{sum=sum+1;

i++;

}

(3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束.如:

for(i=1;i

{sum=sum+1;

i++;

}

这个例子的循环增量没有放在表达式三的位置 而是作为循环体的一部分 其效果是一样的.

(4)可以省略表达式1和表达式3,只有表达式2 即只给循环条件.

for(;i

{

sum=sum+i;

i++;

}

这个相当于

whlie(i

{

sum=sum+i;

i++;

}

(5)三个表达式都可以省略,如:

for(;;)语句

相当于

while(1)语句

即不设初值 不判断条件(认为表达式2为真值)循环变量不增值,无终止的执行循环体.

(6)表达式1也可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式.如:

for(sum=0;i

{

sum=sum+i;

}

for(sum=0,i=0;i

{

sum=sum+i;

}

7.C语言的循环语句的效率问题

C语言中,for语句的使用频率最高,while其次 ,do语句很少用,在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少cpu跨切循环层的次数

低效率:长循环在最外层

高效率:长循环在最内层

注意,如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。

8.c语言中break和continue的用法和区别

1.当它们用在循环语句的循环体时,break用于立即退出本层循环,而continue仅仅结束本次循环(本次循环体内不执行

continue语句后的其它语句,但下一次循环还会继续执行。

2. 如果有多层循环时,break只会跳出本层循环,不会跳出其他层的循环

3. break可用于switch语句,表示跳出整个switch语句块,而continue则不能单独的用于switch语句。但是continue可以用于循环内部的switch语句。

4. break和continue语句在循环内的switch语句中使用时,是有区别的。在这种情况下的break是指跳出switch语句块(switch语句块的代码仍然执行)。而这种情况下的continue是指结束本次循环(不在执行switch后面的代码),进行下一次循环

*/

/*

test1()的打印结果是 i = 0  i = 1  已经跳出循环

是因为break语句直接结束了本层的循环, 直接执行循环后边的语句

printf("已经跳出循环\n");

*/

void test1()

{

int i = 0;

for (i = 0; i < 5; i++)

{

if (i == 2)

{

break;

printf("我没有被打印出来!\n");

}

printf("i = %d\n", i);

}

printf("已经跳出循环\n");

}

/*

test2()的打印结果是 i = 0 i = 1  i = 3  i = 4

i = 2没有被打印,是因为continue 结束了那一次循环,继续了下一次循环

*/

void test2()

{

int i = 0;

for (i = 0; i < 5; i++)

{

if (i == 2)

{

continue;

printf("我没有被打印出来!\n");

}

printf("i = %d\n", i);

}

}

/*

test3()是一个两层for循环,break语句只会跳出最近的一层循环,

第二层for循环继续执行

*/

void test3()

{

int i = 0;

int j = 0;

for (i = 0; i < 5; i++)

{

for (j = 0; j < 5; j++)

{

if (j == 2)

{

break;

}

printf("Hello: %d\n", j);

}

printf("World: %d\n", i);

}

}

/*

在test4()中,break的作用只会跳出

switch()语句块,执行swith语句块后面的程序printf("Hello World!\n");

而不是跳出循环。

与test5()进行对比,continue是结束本次循环,进行下一次循环,

switch()语句块后边的内容不会被打印

*/

void test4()

{

int i = 0;

for (i = 0; i < 2; i++)

{

int j = 5;

switch (j)

{

case 4:

printf("你好 %d !!!\n", 4);

break;

case 5:

printf("你好 %d !!!\n", 5);

break;

case 6:

printf("你好 %d!!!\n", 6);

break;

}

printf("Hello World!\n");

}

}

/*

test5()中循环内部的switch语句中的continue是直接结束本次循环,

switch语句块后面的printf("Hello World!\n");将不会被执行。

9.switch语句的使用规则

C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况。例如,输入一个整数,输出该整数对应的星期几的英文表示:

#include

int main(){

int a;

printf("Input integer number:");

scanf("%d",&a);

if(a==1){

  printf("Monday\n");

}else if(a==2){

  printf("Tuesday\n");

}else if(a==3){

  printf("Wednesday\n");

}else if(a==4){

  printf("Thursday\n");

}else if(a==5){

  printf("Friday\n");

}else if(a==6){

  printf("Saturday\n");

}else if(a==7){

  printf("Sunday\n");

}else{

  printf("error\n");

}

return 0;

}

运行结果:

Input integer number:3

Wednesday

C语言还提供了另外一种多分支选择的语句——switch 语句,它的基本语法格式如下:

switch(表达式){

   case 常量表达式1: 语句 1;

   case 常量表达式2: 语句 2;

   ......

   case 常量表达式n: 语句 n;

   default: 语句 n+1;

}

小编推荐一个学C语言/C++的学习裙【 六二六,八七一,九一六  】邀请码凌云,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

它的执行过程是:首先计算“表达式”的值,然后从第一个 case 开始,与“常量表达式x”进行比较,如果与当前常量表达式的值不相等,那么就不执行冒号后边的语句 x,一旦发现和某个常量表达式的值相等了,那么它会执行之后所有的语句,如果直到最后一个“常量表达式 n”都没有找到相等的值,那么就执行 default 后的“语句 n+1”。

需要注意的是,当找到一个相等的 case 分支后,会执行该分支以及之后所有分支的语句。例如:

#include

int main(){

int a;

printf("Input integer number:");

scanf("%d",&a);

switch(a){

  case 1: printf("Monday\n");

  case 2: printf("Tuesday\n");

  case 3: printf("Wednesday\n");

  case 4: printf("Thursday\n");

  case 5: printf("Friday\n");

  case 6: printf("Saturday\n");

  case 7: printf("Sunday\n");

  default:printf("error\n");

}

return 0;

}

运行结果:

Input integer number:4

Thursday

Friday

Saturday

Sunday

error

输入4,发现和第四个分支匹配,于是就执行第四个分支以及后面的所有分支。这显然不是我们想要的结果,我们希望只执行第四个分支,跳过后面的所有分支。

为了避免这种情况,C语言还提供了一个关键字 break,专门用于跳出switch语句。

switch 的分支语句一共有 n+1 种,而我们通常希望的都是选择其中的一个分支来执行,执行完后就结束整个 switch 语句,而继续执行 switch后面的语句,此时就可以通过在每个分支后加上 break 语句来实现了。如下:

switch (表达式){

   case 常量表达式1: 语句1; break;

   case 常量表达式2: 语句2; break;

   ......

   case 常量表达式n: 语句n; break;

   default: 语句n+1; break;

}

加了这个 break 语句后,一旦“常量表达式 x”与“表达式”的值相等了,那么就执行“语句 x”,执行完毕后,由于有了 break 则直接跳出 switch 语句,继续执行 switch 语句后面的程序了,这样就可以避免执行不必要的语句。

使用switch语句修改上面的代码:

#include

int main(){

int a;

printf("Input integer number:");

scanf("%d",&a);

switch(a){

  case 1: printf("Monday\n"); break;

  case 2: printf("Tuesday\n"); break;

  case 3: printf("Wednesday\n"); break;

  case 4: printf("Thursday\n"); break;

  case 5: printf("Friday\n"); break;

  case 6: printf("Saturday\n"); break;

  case 7: printf("Sunday\n"); break;

  default:printf("error\n"); break;

}

return 0;

}

运行结果:

Input integer number:4

Thursday

10.for语句括号内省略各部分会出现的现象是什么

1.省略表达式1,即循环变量赋初值,表示不对其进行赋值,系统自动赋初值为0或\0

2.省略表达式2,循环条件,则不做其他处理便成为死循环

3.省略表达式3,不对循环变量进行操作,这时可在循环体中加入修改循环控制变量的语句

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容