浙大C语言Week3 and Week4 and Week5

week3

这一周主要讲了分支,还是比较基础的内容,来看两点。

  • switch

switch适合多分支的情形,但是注意switch后的参数必须为整数以及只有碰到break才会跳出switch。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>

int main()
{
printf("请输入月份:");
int month;
scanf("%d", &month);
switch ( month )
{
case 1: printf("January\n"); break;
case 2: printf("February\n"); break;
case 3: printf("March\n"); break;
case 4: printf("April\n"); break;
case 5: printf("May\n"); break;
case 6: printf("June\n"); break;
case 7: printf("July\n"); break;
case 8: printf("August\n"); break;
case 9: printf("September\n"); break;
case 10:printf("October\n"); break;
case 11:printf("November\n"); break;
case 12:printf("December\n"); break;
}

return 0;
}

  • ?表达式

(表达式) ? x : y ;
首先计算表达式的值,若为ture,则返回x;否则返回y.

week4&week5

这两周的课程都是讲循环,有for循环,while循环,do_while循环,其中for(;条件;)等价于while(条件)。
三中循环使用情形如下:

  • 如果有固定次数,用for
  • 如果必须执行一次,用do_while
  • 其他情况用while

还有一个比较重要的点就是goto语句,因为break只能跳出一层循环,如果要跳出多层循环,则使用goto语句,用法如下所示。但是一般不建议使用goto,因为这样会破坏程序的结构性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>

int main()
{
int x;
int one,two,five;

scanf("%d",&x);
for(one=1;one<x*10;one++){
for(two=1;two<x*10/2;two++){
for(five=1;five<x*10/5;five++){
if(one+two*2+five*5==x*10){
printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n",
one, two, five, x);
//break;
goto out;
}
}
}
}
out:
return 0;
}