上一篇介紹了兩個小題目,稍微帶過解題的思路,以及多重迴圈(巢狀迴圈)的概念。
現在我們來試著把所學的東西組合起來看看吧!
#include <stdio.h>
int main()
{
for(int i = 2; i<=9; i++){
for(int j = 1; j<=9; j++){
printf("%d x %d = %d\n", i, j, i*j);
}
printf("\n");
}
return 0;
}
大家應該有學過if條件式了,基本上是一個需要判斷式為true才執行的條件式,不曉得大家在寫等同多個不同數值時,要執行不同結果的if條件式,有沒有感覺到疲累感。
如同以下的if條件式:
#include <stdio.h>
int main()
{
char data;
printf("plz input a char: ");
scanf("%c", &data);
if (data == 'a'){
printf("mode 1.\n");
}
else if (data == 'b'){
printf("mode 2.\n");
}
else if (data == 'c'){
printf("mode 3.\n");
}
else{
printf("mode default.\n");
}
return 0;
}
如果是漫長的判斷等同某個數值的if條件式,也可以轉換為這種的switch條件式,雖然這個語法並不是必要學的,但有興趣的話,跑出來的結果也會是一樣的:
#include <stdio.h>
int main()
{
char data;
printf("plz input a char: ");
scanf("%c", &data);
switch (data){
case 'a':
printf("mode 1.\n");
break;
case 'b':
printf("mode 2.\n");
break;
case 'c':
printf("mode 3.\n");
break;
default:
printf("mode default.\n");
}
return 0;
}
(1)基本格式
switch (data){
case 'a':
printf("mode 1.\n");
break;
case 'b':
printf("mode 2.\n");
break;
case 'c':
printf("mode 3.\n");
break;
default:
printf("mode default.\n");
}
(2) case的body結尾需補上break用以跳出switch,否則會出現問題。
a. break只會跳出switch條件式,而不執行剩下的。
b. 出現錯誤的範例(未加break)
#include <stdio.h>
int main()
{
char data;
printf("plz input a char: ");
scanf("%c", &data);
switch (data){
case 'a':
printf("mode 1.\n");
case 'b':
printf("mode 2.\n");
case 'c':
printf("mode 3.\n");
default:
printf("mode default.\n");
}
return 0;
}
#include <stdio.h>
int main()
{
int data;
for(int i = 0; i<3; i++){
printf("plz input a int: ");
scanf("%d", &data);
printf("Case %d: ", i+1);
switch (data/10){
case 10:
printf("A++\n");
break;
case 9:
printf("A\n");
break;
case 8:
printf("B\n");
break;
case 7:
printf("C\n");
break;
case 6:
printf("D\n");
break;
default:
printf("F\n");
}
}
return 0;
}