C03程序逻辑

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C03程序逻辑
程序逻辑
运算符
顺序结构
选择结构
循环结构
运算符
赋值运算符:=
⽐较运算符:>、<、==、 >=、<=、!=
逻辑运算符:&&、||、!
顺序结构
在C语⾔中,赋值语句、字符数据的输⼊输出语句、格式输⼊输出语句这⼏种语句在执⾏的时候,程序不会发⽣流程控制的转移。

赋值语句
赋值符号:=,在C语⾔中是运算符,运算顺序是从右到左。

例如:赋值表达式 a=b+c+d;
字符输⼊输出语句
putchar()输出单个字符。

例如putchar(‘a’)。

getchar()从终端输⼊⼀个字符。

例如:char c; c=getchar();
⽰例代码:
格式输⼊输出语句
printf(格式控制,输出列表)
scanf(格式控制,地址列表)
常⽤的格式控制字符:d,c,s,f。

上机练习
需求:要求从键盘输⼊⼀个⼤写字母,改⽤⼩写字符输出?
备注:⼤写字母+32=⼩写字母。

使⽤getchar()和printf()函数完成。

选择结构
单分⽀选择结构
流程图如图所⽰:
表达式:
if(表达式) 语句
⽰例:
该单分⽀选择结构在解决该问题时有何缺陷?
双分⽀选择结构
流程图:
表达式:
if(表达式) 语句1
else 语句2
⽰例:
上机练习
需求描述:张三C语⾔成绩⼤于98分,⽽且软件⼯程成绩⼤于80分,奖励Pad;或者C语⾔成绩等于100分,软件⼯程成绩⼤于70分,也可以奖励Pad。

提⽰:复杂条件下的if选择结构
多分⽀选择结构
流程图如图:
表达式:
if(表达式1) 语句1
else if(表达式2) 语句2
else if(表达式3) 语句3

else if(表达式n-1) 语句n-1
else 语句n
上机练习
需求描述:成绩的转换,控制台输⼊⼀成绩,要求输出:
90~100分输出A
80~90分输出B
70~80分输出C
60~70分输出D
50~60分输出E
switch选择结构
流程图:同多分⽀选择结构
表达式:
switch(表达式){
case 常量表达式1:语句1 ; break ;
case 常量表达式2:语句2; break ;
case 常量表达式3:语句3; break ;
… …
case 常量表达式n:语句n; break ;
default:语句n+1; ; break ;
}
⽰例:根据成绩等级,输出对应分数范围
上机练习
练习1:修改⽰例,使之正确输出。

练习2:每周⼀三五吃⾷堂,⼆四六吃法国⼤餐。

练习3:学⽣信息管理系统菜单的制作,使⽤switch选择结构。

循环结构
循环结构⽤来处理重复的操作。

循环结构特点:包括循环操作、循环条件,以及循环结构。

while循环结构
流程图:
特点:先判断,再循环
语法格式:
while ( 循环条件 ) {
循环操作
}
⽰例:
输⼊年龄,如果错误,重新进⾏输⼊。

如果正确,则提⽰输⼊正确,退出程序。

上机练习
练习:修改学⽣信息管理系统菜单,使之可以实现菜单的循环操作,选择退出将退出学⽣信息管理系统。

提⽰:使⽤while循环三步骤
1、确定循环条件和循环操作
2、套⽤while循环格式写出代码
3、确定循环结束条件
程序调试
如果程序出错,我们可以进⼊调试模式:
调试步骤(Dev-Cpp):
1. 设置断点
2. 单步运⾏
3. 观察变量(添加查看,输⼊变量名)
调试步骤(vc6.0):
1. 选择代码⾏,alt+f9或者通过编辑菜单进⼊断点设置.
2. 单步运⾏:使⽤F5或则Go图⽚单步运⾏。

3.观察变量(添加查看,输⼊变量名)
调试⽰例
do…while循环结构
流程图:
特点:先执⾏循环操作,在判断循环条件
语法格式:
do {
循环操作
} while ( 循环条件 );
⽰例:
问题:⽼师需要检查张三上机考试是否合格,如果不合格,则继续考试。

否则提⽰考试通过。

上机练习
练习:使⽤do……while循环结构修改学⽣信息管理系统菜单。

for循环结构
语法格式和执⾏顺序:
⽰例:循环输⼊某同学S1结业考试的5门课成绩,并计算平均分。

参考代码:
char name[20];//姓名
int sum=0;//总成绩
int avg;//平均分
int m=5;//⼀共5门功课
printf("请输⼊姓名:");
scanf("%s",name);//name为数组,不需要使⽤取地址符号&
for(int i=1;i<=m;i++){
int score;
printf("请输⼊第%d门课程成绩:",i);
scanf("%d",&score);
printf("score:%d\n",score);
sum+=score;//累加成绩
printf("sum:%d\n",sum);
}
avg=sum/m;//计算平均成绩
printf("%s同学的平均成绩为:%d\n",name,avg);
循环的嵌套
⽰例:输出乘法⼝诀表
参考代码:
for(int i=1;i<10;i++){//控制⾏
for(int j=1;j<=i;j++){//控制列
printf("%dx%d=%d ",j,i,j*i);
}
printf("\n");//换⾏
}
⼀维数组
数组是⼀个固定⼤⼩的相同类型元素的顺序集合。

数组⼀般⽤来存储⼀系列相同类型的数据。

数组是声明⼀个数组变量,⽐如 numbers,然后使⽤ numbers[0]、numbers[1]、...、numbers[99] 来代表⼀个个单独的变量。

数组中的特定元素可以通过索引访问。

所有的数组都是由连续的内存位置组成。

最低的地址对应第⼀个元素,最⾼的地址对应最后⼀个元素。

数组的定义
定义⼀个10个整数的⼀维数组:
int nums[10]={11,14,-8,6,22,99,107,4,3,2,};
或者
int nums[]={11,14,-8,6,22,99,107,4,3,2,};
问题:如何输出数组中的所有元素?
参考代码:
#include <stdio.h>
int main()
{
int nums[10]={11,14,-8,6,22,99,107,4,3,2,};
for(int i=0;i<10;i++){
printf("%d ",nums[i]);
}
printf("\n");
return 0;
}
上机练习
⼆重循环练习
需求:定义⼀个10个数字的数组,实现冒泡法排序。

提⽰:
参考代码:
#include <stdio.h>
int main()
{
int nums[10]={11,14,-8,6,22,99,107,4,3,2,};
printf("排序前的数组:");
for(int i=0;i<10;i++){
printf("%d ",nums[i]);
}
//冒泡排序
for(int j=0;j<10-1;j++){
for(int k=0;k<10-1-j;k++){
int temp=0;
if(nums[k]>nums[k+1]){
temp=nums[k];
nums[k]=nums[k+1];
nums[k+1]=temp;
}
}
}
printf("\n排序后的数组:");
for(int m=0;m<10;m++){
printf("%d ",nums[m]);
}
printf("\n\n");
return 0;
}
运⾏结果:
控制台密码掩码形式输⼊#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
printf("请输⼊密码:");
char pass[20];
int i;
for(i=0;i<20;i++){
pass[i]=getch();
if(pass[i]=='\r')
break;
putch('*');
}
printf("\n密码是:%s",pass);
return 0;
}。

相关文档
最新文档