c语言switch数组
时间: 2023-09-15 20:15:24 浏览: 226
在 C 语言中,可以使用 switch 语句来根据一个变量的值,执行不同的代码块。如果这个变量只有一些固定的取值,我们可以使用数组来代替这个变量。
举个例子,假设我们有一个数字数组,每个数字代表一个星期几(1 表示星期一,2 表示星期二,以此类推)。我们想根据这个数字来输出对应的星期几的英文名称。我们可以这样写:
```c
#include <stdio.h>
int main() {
int week_day = 3; // 假设今天是星期三
char* week_days[] = {"", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
printf("Today is %s.\n", week_days[week_day]);
return 0;
}
```
这里我们定义了一个 `week_days` 数组,其中下标对应的是数字,数组元素对应的是星期几的英文名称。在程序中,我们使用 switch 语句来处理用户输入的数字,然后使用数组来输出对应的英文名称。
需要注意的是,数组下标从 0 开始,所以我们在定义数组时需要把第一个元素留空(或者用一个无意义的字符串占位)。
相关问题
C语言数组和switch
C语言数组和switch的用法如下:
1. 数组
数组是一种存储相同类型数据的集合。在C语言中,数组的声明方式为:类型 数组名[元素个数]。例如,声明一个长度为5的整型数组可以写成int arr。数组的下标从0开始,可以通过下标访问数组中的元素。例如,访问arr数组中的第3个元素可以写成arr。
2. switch
switch语句是一种多分支选择结构,用于根据不同的条件执行不同的代码块。switch语句的基本语法如下:
```
switch (表达式) {
case 常量1:
代码块1;
break;
case 常量2:
代码块2;
break;
...
default:
代码块n;
break;
}
```
switch语句中的表达式的值会依次与每个case后面的常量进行比较,如果匹配成功,则执行对应的代码块。如果没有匹配成功,则执行default后面的代码块。在每个case后面必须加上break语句,否则会继续执行下一个case中的代码块。
c语言永数组编程万年历
以下是使用C语言编写万年历的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 打印星号函数
void printStar() {
printf("******************************\n");
}
// 打印日历抬头函数
void printBegin() {
printf(" 日 一 二 三 四 五 六\n");
}
// 判断闰年平年函数
int isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1;
} else {
return 0;
}
}
// 计算总天数函数
int daySum(int year, int month) {
int sum = 0;
int i;
for (i = 1; i < month; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
sum += 31;
break;
case 4:
case 6:
case 9:
case 11:
sum += 30;
break;
case 2:
if (isLeapYear(year)) {
sum += 29;
} else {
sum += 28;
}
break;
}
}
return sum;
}
// 打印日历函数
void printResult(int sum, int year, int month) {
int i;
for (i = 1; i <= sum % 7; i++) {
printf(" ");
}
for (i = 1; i <= 31; i++) {
if (i <= 28 && month == 2 && !isLeapYear(year)) {
printf(" ");
continue;
}
if (i <= 29 && month == 2 && isLeapYear(year)) {
printf("%2d ", i);
}
if (i <= 30 && (month == 4 || month == 6 || month == 9 || month == 11)) {
printf("%2d ", i);
}
if (i <= 31 && (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)) {
printf("%2d ", i);
}
if ((sum + i) % 7 == 0) {
printf("\n");
}
}
printf("\n");
}
// 主函数
int main() {
int year, month;
printf("请输入年-月:");
scanf("%d-%d", &year, &month);
printBegin();
int sum = daySum(year, month);
printResult(sum, year, month);
printStar();
system("pause"); // 防止闪屏
return 0;
}
```