学习内容:
3、结构化程序设计
学习时间:
2020年10月4日15:30-16:30学习产出:
/*
结构化程序设计
算法-程序设计的灵魂
算法的概念
操作步骤即是算法
程序=数据结构+算法
流程图
描述问题处理步骤的一种常用图形工具
C语言的基本语句
表达式语句
运算符表达式语句
赋值语句
函数调用语句
空语句
块语句
流程控制语句
结构化语句
条件语句
if语句
switch语句
循环语句
while语句
do while语句
for语句
非结构化语句
限定转向语句
break语句
continue语句
return语句
非限定转向语句(goto)语句
顺序结构语句
程序中的所有语句都是从上到下逐条执行
选择结构语句
if条件语句
单分支结构
语法格式:
if(判断条件)
{
代码块
}
双分支节后
语法格式:
if(判断条件)
{
代码块
}
else
{
代码块
}
多分支结构
语法格式:
if(判断条件)
{
代码块
}
else if(判断条件)
{
代码块
}
else if(判断条件)
{
代码块
}
else
{
代码块
}
if语句的嵌套
语法格式:
if(判断条件)
{
if(判断条件)
{
代码块
}
else
{
代码块
}
}
else
{
if(判断条件)
{
代码块
}
else
{
代码块
}
}
switch条件语句
只能针对某个表达式的值做出判断,从而决定程序执行哪一段代码
语法格式:
switch(表达式)
{
case 目标值1:
执行语句1
break;
case 目标值2:
执行语句2
break;
case 目标值3:
执行语句3
break;
....
default:
执行语句
break;
}
if语句与switch语句的异同
switch结构语句只进行相等与否的判断;而if结构语句还可以进行大小范围上的判断
switch无法处理浮点数,只能进行整数的判断,case标签值,必须是常量;而if语句则可以对浮点型进行判断
如果纯粹式数字或字符的判断,最好式使用switch
循环结构语句
while循环语句
先判断循环条件,然后根据判断结果来决定是否执行相应的代码块
语法格式:
while (循环条件)
{
代码块
}
do....while循环语句
先执行一次代码,在判断循环条件
语法格式:
do
{
代码块
}while(循环条件)
for循环语句
语法格式:
for(初始化表达式;循环条件;操作表达式)
{
代码块
}
循环的嵌套
跳转语句
break
switch中终止某个case并跳出switch结构,
循环语句中跳出当前循环,执行后面的代码
continue语句
立即终止本次循环,并执行下一次循环
break与continue的区别
break终止当前循环,执行循环体外的第一条语句;而continue式终止本次循环,继续执行下一次循环
break语句可以用于switch语句,而continue不可以
goto语句
如果想要跳出外层循环,则需要对外层循环添加标记,然后使用goto语句
进阶案例-打印水仙花数
进阶案例-查找100以内的素数
*/
//相关练习
/*
1、编程输入整数a和b,若这两个数(或一个数)大于100,则输出这a+b。如果两个数都小于100,输出a-b。
*/
#include<stdio.h>
int main()
{
int a,b;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
if (a>=100||b>=100)
printf("a+b=%d",a+b);
else
printf("a-b=%d",a-b);
return 0;
}
/*
2、编写程序,要求用户输入一个一位数,然后显示该数的中文大写金额数字。请用swith完成
*/
#include<stdio.h>
int main()
{
int a;
printf("请输入一个整数:");
scanf("%d",&a);
switch (a)
{
case 0:
printf("零\n ");
break;
case 1:
printf("壹\n ");
break;
case 2:
printf("贰\n ");
break;
case 3:
printf("叁\n ");
break;
case 4:
printf("肆\n ");
break;
case 5:
printf("伍\n ");
break;
case 6:
printf("陆\n ");
break;
case 7:
printf("柒\n");
break;
case 8:
printf("捌\n");
break;
case 9:
printf("玖\n");
break;
}
return 0;
}
/*
3、编写一个程序求出1+1/2+1/3+1/4+...+1/100的和。
*/
#include<stdio.h>
int main()
{
double i,sum=0;
for(i=1;i<=100;i++)
{
sum=sum+1/i;
}
printf("1+1/2+1/3+1/4+...+1/100的和为:%f\n",sum);
return 0;
}
/*
4、鸡兔共30只,脚共有90个。编写一个程序,求鸡、兔各多少只。 (do-while实现)
*/
#include<stdio.h>
int main()
{
int j=1;
do
{
if(j*2+(30-j)*4==90)
printf("鸡:%d 兔:%d\n",j,30-j);
j++;
}while(j<=30);
return 0;
}
/*
5、打印出一个金字塔图像
*/
#include<stdio.h>
int main()
{
int a,b,c;
for(a=1;a<=10;a++){
for(b=1;b<=10-a;b++){
printf(" ");
}
for(c=1;c<=2*a-1;c++){
printf("*");
}
printf("\n");
}
return 0;
}
/*
进阶案例-打印水仙花数(100-1000中)
*/
#include<stdio.h>
int main()
{
int num;
int a,b,c;
for (num=100;num<1000;num++)
{
a=num%10;
b=num/10%10;
c=num/100;
if(num==(a*a*a+b*b*b+c*c*c))
printf("%d\n",num);
}
}
/*
进阶案例-查找100以内的素数
*/
#include<stdio.h>
int main()
{
int num=2;
int i,j=1,count=0;
while(num<100)
{
for(i=2;i<num;i++)
{
if(num%i==0)
break;
}
if(num==i)
{
printf("%d\t",num);
count++;
if(count%5==0)
printf("\n");
}
num++;
}
printf("1-100之间的素数一共右%d个",count);
}