摘要:本文主要向大家介绍了C/C++知识点之C语言基础之流程控制,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之C语言基础之流程控制,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
一.流程结构包括:
* 顺序结构 : 默认的流程结构.按照代码编写顺序执行语句
* 分支结构 : 对给定的条件进行判断,再根据判断结果执行相应的代码
* 循环结构 : 在给定条件成立的条件下,反复执行某段代码
1) 顺序结构:
代码默认的执行顺序,按照代码由上到下的顺序执行;
2) 分支结构:
if语句:
1.if语句的三种形式
*1
if (conditon) {
statements;
}
*2
if (condition) {
statements;
} else {
statements;
}
*3
if (condition) {
statements;
} else if (conditon) {
statements;
} else {
statements;
}
注意: 这里的conditon是相当于一个bool类型的变量;
2.switch..case 语句
switch (expression){
case 1:
statements;
case 2:
statements;
...
default:
break;
}
这里分享一个if 和 switch相结合解决实际问题的小例子:
1 #define adultAge 18 // 18周岁
2 #define entranceFee 100 // 网吧最低消费金额,即入场费
3 int isVip = 0; //vip 至尊码是999
4 int isCafeOwner = 0; // boss 验证码是888
5
6 printf("Please choose the number of your ID information \n");
7 printf("0:Nomal 1:Vip 2:Super \n");
8
9 int c = 0;
10 scanf("%d" , &c);
11
12 int i = 0;
13 // 输入合理性判断
14 while(c < 0 || c >2)
15 {
16 printf("Error,please enter again \n");
17 printf("%d \n" , i);
18 scanf("%d" , &c);
19 i++;
20 }
21 //printf("%d %d" , c , i);
22
23 int age = 0; // 年龄
24 int money = 0; // 金额
25
26 switch (c){
27 case 0:
28
29 printf("Please enter your age and money, and divided with a blank \n");
30 scanf("%d %d" , &age, &money);
31 break;
32
33 case 1:
34
35 printf("Please enter your vip card number \n");
36 scanf("%d" , &isVip); // 是vip
37 break;
38
39 case 2:
40
41 printf("Please enter your super number \n");
42 scanf("%d" , &isCafeOwner); // 是网吧的所有者
43 break;
44
45 default:
46 break;
47 }
48
49
50 // 判断是否有资格进入网吧消费
51 if (age >= adultAge && money >= entranceFee){
52 printf("Welcome to our Internet cafe \n");
53 }else if (isVip == 999) { // Vip至尊码是999
54 printf("Welcome back, our Vip \n");
55 }else if (isCafeOwner == 888) {// Super boss码是888
56 printf("Welcome back, our boss \n");
57 }else {
58 printf("Sorry,we can not provide the service \n");
59 }
60
61
62
63 }
64
65 return 0;
这段代码,对网吧消费的问题进行了一定的定义解释。
3)循环结构
// 循环 :在满足某种特定的条件下,重复的做某件事情。
1 while (条件表达式) {
2 循环体
3 }
当条件表达式为真时,就执行循环体,一旦条件表达式为假,循环停止。
这里提下两个常用的小知识:
1.关于计算取位的问题
解决c简单函数算法问题时,我们常会遇到关于取出一个数十位、个位、百位,甚至是千位等这样的问题,那么小伙伴们不禁会好奇了,这该怎么办呢?
so here ,we could get it!
for axample :
对于 m = 12345,怎么取出它的各位数呢?
// 先看比较容易理解的2个
// single
single = m % 10; // mol 10得到个位数
// 最高位max
max = m / 10000; // 最高位
decade = m / 10 % 10;
hundred = m / 100 % 10 ;
thound = m / 1000 % 10;
怎么样?有没有发现什么共性?
除了最高位和个位数的提取,其他位的提取都可以写作
x位数 = m / pow(10,x) % 10;
其实,个位数和最高位数只是如上表达式的特殊情况罢了。
2.arc4random问题
for example :how to get a random from [30,50]
ok,let us get it fllowingly:
int temp = arc4random() % (50 - 30 + 1) + 30;
arc4random 函数的实质是取余的函数转换,[30,50]可以看做 [0,20] +30 的函数区间变动;而对于[0,20]这个区间我们通过对21做mol运算得到。那么,它有什么用呢?
首先,我们一起来看下这个,
”用户从控制台 输入一个n ,用while打印n个随机数,范围是[30,70],并找出n的最大值“
printf("please input a random number \n");
int n = 0;
scanf("%d" , &n);
int max = 0;
while (n--) {
int temp = arc4random() % (70 - 30 + 1) + 30;
printf("%d " , temp);
max = max > temp ? max : temp;
}
printf("\nthe max random number is %d \n" , max);
那么这个功能有什么用呢?做彩票?dream on,彩票站的算法,hehe,中国的故事你懂的,嘎啦,我只是随便说,千万不要当真的说,那么我们看点贴近生活的,如这个:
// 关于上面随机程序的一点联想 ,结合指针数组
char *name[5] = {"Jack" ,"Bob" ,"Lucy" ,"lol" ,"Tom"};
int random = arc4random() % 5;
printf("%s \n" , *(name +random));
做个名字的随机抽取功能总还是可以的吧,哈哈~
————————————————
书归正传,继续来看循环结构:
// do{
// // 语句
// } while (条件表达式);
// do while ,先执行一次循环语句,再判断条件是否成立,至少会走一次循环体
// int i = 0;
// do {
// i++;
// printf("%d " , i);
// } while (i < 10);
这个和while语句比较像,也没有什么特别需要强调的,只要注意转换是condition的判断区间就好~
重点还是for循环的使用,
for (initialization; conditon; increment){
statements;
}
执行顺序,
first -> initialization;
second -> conditon judgement;
third -> run statements;
fourth -> increment;
一个例子:
//打印菱形
//思路 : 分析了下,感觉还是要加强点用户的互动性,但是具体开放哪个接口给用户,也没有太好的想法,感觉还是通过 菱形对角线的星星数 来定义一个菱形的形状会好一点吧
// 所以接口数据 选择了星星的个数,如果星星的个数是n,两个*的间距是d,对象线长度是 (n - 1)*d ,则菱形的边长是 (n - 1) * d / sqr(2); ------- 说明
printf("Please input an odd number of the stars on the diagonal \n"); // diagonal 星星
int n = 0;
scanf("%d" ,&n); // 对角线行的星星个数是n ,那么对角线所在行数是i = (n + 1) / 2;
// 输入上半部分
for (int i = 1; i <= ((n + 1) / 2); i++ ) { // 行数i
for (int j = 1; j <= (( (n + 1) /2) - i ); j++) { // 空格 j
printf(" ");
}
for (int k = 1; k <= (2 * i - 1); k++) { // 星星 k
printf("*");
}
printf("\n");
}
//输入下半部分
for (int i = 1; i < ((n + 1) / 2); i++) {
for (int j = 1; j <= i; j++) {
printf(" ");
}
for (int k = 1; k <= (n - 2 * i); k++) {
printf("*");
}
printf("\n");
}
ok,fighting ,today is today.
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号