当前位置: 代码迷 >> 综合 >> C语言基础学习------5、程序结构
  详细解决方案

C语言基础学习------5、程序结构

热度:25   发布时间:2024-01-31 18:15:46.0

Author: 想文艺一点的程序员
自动化专业 工科男
再坚持一点,再自律一点
CSDN@想文艺一点的程序员
来自朱老师学习笔记

程序结构

在C语言程序里,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构

顺序结构:按照实物本身特性,必须一个接着一个来完成。
选择结构:到某个节点后,会根据一次判断结果来决定之后走哪一个分支。
循环结构:循环结构有一个循环体,循环体是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次。

总结:对于顺序结构来说,不需判断,因为下一句指令就是你要执行的。对与循环与选择结构来说,都需要进行判断。然后根据判断结果来决定怎么办。

逻辑上有一种类型,叫bool类型(又写作boolean类型,中文叫布尔类型)。布尔类型只有两个值,真和假

C语言中有以下一些判断运算符

==	等于
!=	不等于
>	大于
<	小于
>=	大于等于
<=	小于等于
使用这些判断运算符,可以写出一个判断表达式,这个判断表达式最终的值就是一个bool类型。这个判断表达式的bool值就决定了选择结构如何选择,循环结构如何循环。

1、选择结构详解:
C语言中选择结构一共有两种:
第一种:if else

引入关键字:if else else if

if (bool值)				// 如果bool值为真,则执行代码段1,否则执行代码段2
{代码段1
}
else
{代码段2
}if (bool值1)				// 如果bool值1为真,则执行代码段1
{							// 否则则判断bool值2是否为真,若为真则执行代码段2代码段1					// 否则直接执行代码段3
}
else if (bool值2)			// 开头的if和结尾的else都只能有一个,但是中间的
{							// else if可以有好多个。代码段2
}
else
{代码段3
}

第二种:switch case

涉及到的C语言关键字: switch  case  break  defaultswitch (变量)				执行到这一句时,变量的值已经知道了
{							switch case语句执行时,会用该变量的值一次与各个case后的常数去对比,试图找到第一个匹配项。case 常数1:				 代码段1;			     找到匹配的项目后,就去执行该case对应的代码段break;				 如果没找到则继续下一个case,直到defaultcase 常数2:				 如果前面的case都未匹配,则default匹配。代码段2;break;.....default:代码段n;break;
}注意:
1case中必须是常数,而且必须是整形(不能是float double,可以是int char2、一般来说,每个case中代码段后都必须有一个break;如果没有,结果可能会让你大吃一惊
3case之后一般都会有default。语法上允许没有default,但是建议写代码时一定要写。

2、C语言中的循环结构
C语言中常用的循环结构有三个:for循环、while循环、do while循环
1、for循环

for (循环控制变量初始化; 循环终止条件; 循环控制变量增量)
{循环体
}

for循环的执行步骤:
1、先进行循环控制变量初始化
2、执行循环终止条件,如果判断结果为真,则进入第3步;如果为假则循环终止,退出。
3、执行循环体。
4、执行循环控制变量增量,转入第2步。

注意:
1、for循环中()中三部分可不可以省略?
标准的for循环,应该把循环控制变量的初始化,增量都放在()当中,并且在循环体中绝对不应该更改循环控制变量(可以引用它的值,但不应该改变它)。 (另外定义一个变量来进行引用)

2、while循环

i = 1;
sum = 0;					循环初始化
while (i < 100)				终止条件
{printf("i = %d.\n", i);sum += i;				循环体i += 2;					循环控制增量,属于循环体的一部分
}while循环的执行步骤:
0、首先是循环初始化。这一部分其实不属于while循环本身。
1、先判断终止条件是否满足。如果是真,则进入第2步;否则直接退出。
2、执行循环体,然后转入第1步。

3、do while循环

i = 1;
sum = 0;					 初始化条件
do
{printf("i = %d.\n", i);sum += i;i += 2;					 增量,循环体的一部分
}while (i < 100);			 终止条件do while循环的执行步骤:
0、首先是循环初始化。这一部分其实不属于do while循环本身。
1、执行循环体(循环控制变量的增量是循环体的一部分)
2、判断终止条件。若成立,则转入1;若不成立则退出

基础知识:
当我们定义了一个局部变量,但是没有初始化的时候,这个值是随机的。

题目:
1、给三个数,打印出其中最大的数
2、规则:90分及以上为优,80分及以上为良,60分及以上为及格,以下为不及格,然后输入一个学生分数,然后printf打印“you” “liang” “jige” “bujige”
3、计算100以内所有奇数的和
4、算一下10!(10987····1)
5、打印一张ASCII码表(提示:数字用%d,字符用%c打印)

#include <stdio.h>// 使用了选择结构的嵌套
int main(int argc, char **argv)
{int a, b, c, max;a = 12;b = 45;c = 23;if (a > b){// a和b中,a较大if (a > c){max = a;}else{max = c;}}else{// a和b比,b较大if (b > c){max = b;}else{max = c;}}printf("max = %d.\n", max);return 0;
}
/** 题目:规则:90分及以上为优,80分及以上为良,60分及以上为及格,以下为不及格,然后输入一个学生分数,然后printf打印“you” "liang" "jige" "bujige"*/
#include <stdio.h>int main(void)
{int grade;grade = 97;if (grade >= 90)		{printf("you.\n");}else if (grade >= 80)	// ((grade >= 80) && (grade < 90)){printf("liang.\n");}else if (grade >= 60)	{printf("ji ge.\n");}else{printf("bu ji ge.\n");}return 0;
}

if (100 >= grade >= 90) // C语言不支持,应该写成下面一行的样子
if ((grade >= 90) && (grade <= 100))
&& 逻辑与运算符,它连接的两边都是真的时候,最后的结果才是真。只要两边
有一边为假,最终的结果就为假。

/** 题目:计算100以内所有奇数的和*/#include <stdio.h>int main(void)
{int i, sum;for (i=1,sum=0; i<100; i+=2){sum += i;//printf("i = %d.\n", i); // 使用printf进行调试}printf("sum = %d.\n", sum);return 0;
}
 /** 题目:算一下10!(10*9*8*7*····1)*/#include <stdio.h>int main(void)
{int i, val;/*for (i=1,val=1; i<=10; i++){val *= i;printf("i = %d.\n", i); // 使用printf进行调试}*//*for (i=1,val=1; i<11; i++){val *= i; // 这种写法更普遍// val = val * i; // 这种写法也可以,但是一般除了新手不采用printf("i = %d.\n", i); // 使用printf进行调试}*/for (i=10,val=1; i>=1; i--){val *= i;printf("i = %d.\n", i);		// 使用printf进行调试}printf("val = %d.\n", val);return 0;
}
  /** 打印一张ASCII码表(提示:数字用%d,字符用%c打印)*/     
#include <stdio.h>int main(void)
{int i;printf("-----ASCII-----\n");for (i=0; i<128; i++){printf("\t%d %c\n", i, i);}printf("-----ASCII-----\n");return 0;
}