4.1.程序结构概述
(1)C语言中共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构。
(2)顺序结构:按照实物本身特性,必须一步接着一步顺序完成。
(3)选择结构:到某个节点后,会根据一次判断结构来决定之后走哪一个分支。
(4)循环结构:关键在于根据判断结果决定循环体执行多少次。循环体是一段代码,是循环结构中的主体部分。
(5)顺序结构不需要判断,因为下一句指令就是要执行的;选择结构和循环结构都需要进行判断,然后根据判断结果决定怎么办。
(6)逻辑有一种类型,叫bool类型,该类型只有两个值,逻辑真和逻辑假。C语言中通过判断运算符可以写出判断表达式,判断表达式的最终的值就是bool类型,该判断表达式的bool值就决定了选择结构如何选择、循环结构如何循环。
4.2.选择结构详解
(1)C语言中的选择结构有if else和switch case两种。
(2)if else选择结构:涉及到if、else、else if三个关键字。
(3)switch case选择结构:涉及到switch、case、break、default四个关键字。
(4)if else和switch case比较:
if else适用于条件判断比较复杂但分支数较少的情况,switch case适用于条件判断较简单但分支数较多的情况;if case可实现所有的选择结构,switch case只能实现部分选择结构;在适合使用switch case的情况下优先使用switch case,否则就不得不使用if else。
4.3.循环结构详解
(1)C语言中的循环结构有for循环、while循环、do while循环三种。
(2)for循环:涉及到for关键字。
(3)while循环:涉及到while关键字。
(4)do while循环:涉及到do关键字。
(4)循环结构中最基本的要素为循环控制变量初始化、循环终止条件、循环控制变量增量、循环体;while循环是先判断后执行,do while循环是先执行后判断。
4.4.基础知识
(1)当我们定义了一个局部变量,但没有初始化的时候,该局部变量的值的随机不可预料的。
(2)理解和记忆是相互促进的,如果看不懂,就去记忆,记住了自然就明白了;如果记不住,就去理解,理解了自然就记住了。
4.5.练习题目
(1)给三个数,打印出其中最大的数。
(2)规则:90分及以上为优,80分及以上为良,60分及以上为及格,以下为不及格,然后输入一个学生分数,然后printf打印“you” “liang” “jige” “bujige”。
(3)计算100以内所有奇数的和。
(4)算一下10!(10*9*8*7*····1)。
(5)打印一张ASCII码表(提示:数字用%d,字符用%c打印)。
4.if
/*
* 公司:XXXX
* 作者:Rston
* 博客:http://blog.csdn.net/rston
* GitHub:https://github.com/rston
* 项目:结构化程序设计
* 功能:演示if else if程序结构的基本使用。
*/
#include <stdio.h>
int main(int argc, char **argv)
{
int a = 333, b = 33, max = 0;
if (a > b)
{
max = a;
printf("ture.\n");
}
else if (a == b)
{
max = a;
printf("a==b.\n");
}
else
{
max = b;
printf("false.\n");
}
printf("max=%d.\n", max);
return 0;
}
4.switch
/*
* 公司:XXXX
* 作者:Rston
* 博客:http://blog.csdn.net/rston
* GitHub:https://github.com/rston
* 项目:结构化程序设计
* 功能:演示switch case程序结构的基本使用。
*/
#include <stdio.h>
int main(int argc, char **argv)
{
int num = 3;
switch (num)
{
case 1: printf("A\n"); break;
case 2: printf("B\n"); break;
case 3: printf("C\n"); break;
case 4: printf("D\n"); break;
case 5: printf("E\n"); break;
default: break;
}
return 0;
}
4.for
/*
* 公司:XXXX
* 作者:Rston
* 博客:http://blog.csdn.net/rston
* GitHub:https://github.com/rston
* 项目:结构化程序设计
* 功能:演示for程序结构的基本使用。
*/
#include <stdio.h>
int main(int argc, char **argv)
{
int i, sum; // 变量i和变量sum的值随机不确定。
for (i=0, sum=0; i<10; i++) // 共执行10次循环体
{
printf("i = %d.\n", i);
sum += i;
}
return 0;
}
4.while
/*
* 公司:XXXX
* 作者:Rston
* 博客:http://blog.csdn.net/rston
* GitHub:https://github.com/rston
* 项目:结构化程序设计
* 功能:演示while程序结构的基本使用。
*/
#include <stdio.h>
int main(int argc, char **argv)
{
int i = 1, sum = 0;
while (i < 100)
{
printf("i = %d.\n", i);
sum += i;
i += 2;
}
printf("sum = %d.\n", sum);
return 0;
}
4.dowhile
/*
* 公司:XXXX
* 作者:Rston
* 博客:http://blog.csdn.net/rston
* GitHub:https://github.com/rston
* 项目:结构化程序设计
* 功能:演示do while程序结构的基本使用。
*/
#include <stdio.h>
int main(int argc, char **argv)
{
int i = 1, sum = 0;
do
{
printf("i = %d.\n", i);
sum += i;
i += 2;
}while (i < 100); // 特别注意这里需要加上分号
printf("sum = %d.\n", sum);
return 0;
}
4.test1
/*
* 公司:XXXX
* 作者:Rston
* 博客:http://blog.csdn.net/rston
* GitHub:https://github.com/rston
* 项目:结构化程序设计
* 功能:给三个数,打印其中最大的数。
*/
#include <stdio.h>
int main(int argc, char **argv)
{
int a = 5, b = 3, c = 8, max = 0;
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("a = %d b = %d c = %d max = %d.\n", a, b, c, max);
return 0;
}
4.test2
/*
* 公司:XXXX
* 作者:Rston
* 博客:http://blog.csdn.net/rston
* GitHub:https://github.com/rston
* 项目:结构化程序设计
* 功能:规则:90分及以上为优,80分及以上为良,60分及以上为及格,以下为不及格。
* 然后输入一个学生分数,然后printf打印“you” “liang” “jige” “bujige”。
*/
#include <stdio.h>
int main(int argc, char **argv)
{
int grade = 78;
if (grade >= 90)
{
printf("you\n");
}
else if (grade >= 80)
{
printf("liang\n");
}
else if (grade >= 60)
{
printf("jige\n");
}
else
{
printf("bujige\n");
}
return 0;
}
4.test3
/*
* 公司:XXXX
* 作者:Rston
* 博客:http://blog.csdn.net/rston
* GitHub:https://github.com/rston
* 项目:结构化程序设计
* 功能:计算100以内所有奇数的和。
*/
#include <stdio.h>
int main(int argc, char **argv)
{
int i, sum;
for (i=1, sum=0; i<100; i+=2)
{
printf("i = %d.\n", i);
sum += i;
}
printf("sum = %d.\n", sum);
return 0;
}
4.test4
/*
* 公司:XXXX
* 作者:Rston
* 博客:http://blog.csdn.net/rston
* GitHub:https://github.com/rston
* 项目:结构化程序设计
* 功能:算一下10!(10*9*8*7*····1)。
*/
#include <stdio.h>
int main(int argc, char **argv)
{
int i, val;
for (i=1, val=1; i<11; i++)
{
printf("i = %d.\n", i);
val *= i;
}
printf("val = %d.\n", val);
return 0;
}
4.test5
/*
* 公司:XXXX
* 作者:Rston
* 博客:http://blog.csdn.net/rston
* GitHub:https://github.com/rston
* 项目:结构化程序设计
* 功能:打印一张ASCII码表(提示:数字用%d,字符用%c打印)。
*/
#include <stdio.h>
int main(int argc, char **argv)
{
int i;
printf("----ASCII----\n");
for (i=0; i<128; i++) // ASCII数值0到127分别对应的字符
{
printf("\t%d \t%c\n", i, i); // \t制表符用于格式对齐
}
printf("----ASCII----\n");
return 0;
}