读书人

[C语言]初学者的一些理解-选择结构

发布时间: 2013-09-05 16:02:06 作者: rapoo

[C语言]菜鸟的一些理解-选择结构
顺序结构:由上往下,执行程序。
比如:我们阅读文章一样,从开始到结尾。
代码:
#include<stdio.h>

int main(void)
{
int i = 9;
int j = 1;
int k = 0;
k = i + j;
printf("%d + %d = %d\n",i,j,k);
return 0;
}

选择结构也叫分支结构

if是C语言中实现选择结构最常用的方式

if语句的基本形式
if(判断表达式)
{
操作1;
操作2;
}
其顺序是判断是否为真,是则执行,否则退出。

if语言经常与else语言组合使用。

我的理解:把if 看成 “是” else 看成 “否”

if和else的搭配使用的形式如下:

if(判断表达式)
{
操作1;
}
else
{
操作2;
}
如果判断表达式为真,则执行操作1,否 则执行操作2。
例:
#include<stdio.h>

int main(void)
{
int i = 9;
if(i < 10)
printf("YES!\n");
else
printf("NO!\n");
return 0;
}

else if 的使用:

if(判断表达式1)
操作1;
else if(判断表达式2)
操作2;
else if(判断表达式3)
操作3;
else
操作n;

例1:
/*
计算工资税额。有一种工资纳税制度的规定为:
如果工资超过50000元交税的税额为工资的50%;
如果工资超过10000元交税的税额为工资的30%;
如果工资超过7000元交税的税额为工资的20%;
如果工资超过5000元,纳税比例为10%;
如果工资少于等于5000,不需纳税;
试设计一个程序,按照资数额算出需要缴税的税额。
*/

#include<stdio.h>

int main(void)
{
int salary = 0;//工资
float ratio = 0.0;//比例

printf("请输入工资:");
scanf("%d",&salary);

if(salary > 50000)
ratio = 0.5;
else if(salary > 10000)
ratio = 0.3;
else if(salary > 7000)
ratio = 0.2;
else if(salary > 5000)
ratio = 0.1;
else
ratio = 0.0;
printf("所需缴税:%0.2f\n",salary * ratio);//输出结果保留两个小数点 %0.2 或 %.2
return 0;
}

例2:
/*
根据分数的输入,输出分数段。
*/
#include<stdio.h>

int main(void)
{
float score = 0.0;
printf("请输入分数1~100:");
scanf("%f",&score);

if(score < 60)
printf("C\n");
else if(score < 85)
printf("B\n");
else if(score <= 100)
printf("A\n");
else
printf("你输入错误!\n");
return 0;
}


else if和 if else 配对使用会使程序变的复杂,若不细心,就有可能出现一些错误,我们可以利用{}来配对。


switch语言的使用:

switch(判断表达式)
{
case 常量1:操作1;
case 常量2:操作2;
defaule:操作n;//异常情况
}
例1:
/*
根据输入的月份,输出该月份的天数。
*/

#include<stdio.h>



int main(void)
{
int month = 0;
printf("请输入你要查询的月份1~12:");
scanf("%d",&month);

switch(month)
{
case 2:
printf("该月有28天或29天。\n");
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("该月有31天。\n");
break;
case 4:
case 6:
case 9:
case 11:
printf("该月有30天。\n");
break;
default:printf("你输入错误!\n");
}
return 0;
}


break的重要性:

#include<stdio.h>

int main(void)
{
int i = 0;
printf("请输入你的选择1~3:");
scanf("%d",&i);
printf("以下没有使用break\n");
printf("******************************\n");
switch(i)
{
case 1:
printf("你选择的是 1 \n");
case 2:
printf("你选择的是 2 \n");
case 3:
printf("你选择的是 3 \n");
default:
printf("你输入错误!\n");
}
printf("******************************\n");
printf("以下使用了break\n");
switch(i)
{
case 1:
printf("你选择的是 1 \n");
break;
case 2:
printf("你选择的是 2 \n");
break;
case 3:
printf("你选择的是 3 \n");
break;
default:
printf("你输入错误!\n");
}
return 0;
}

如果我没有理解到的或理解错误的请指出,谢谢!! C 编程语言
[解决办法]
没有问题,你可以通过多编程实践来提高你的理解
[解决办法]
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?

不要写连自己也预测不了结果的代码!

读书人网 >C语言

热点推荐