大一C语言求解switch语法和if语法有什么区别 最好。举个例子吧

2025-03-25 02:31:29
推荐回答(3个)
回答1:

//使用if else 语句
#include 
#include 

int main()
{
int command[4] = {0,1,2,3}; /*定义一个数组*/
int num;
struct tm *sysTime;
printf("如需帮助可输入数字0!\n"); /*输出字符串*/
printf("请输入命令符:\n"); /*输出字符串*/

while (1)
{
scanf("%d", &num); /*获得输入数字*/
/*判断用于输入的字符*/
if (command[0] == num) /*如果输入数字0 */
{
/*输出帮助信息*/
printf("输入数字1显示系统日期, 输入数字2显示系统时间, 输出字母3退出系统!\n");
}
else if (command[1] == num) /*如果是命令数字1*/
{
time_t nowTime;
time(&nowTime); /*获取系统日期*/
sysTime= localtime(&nowTime); /*转换为系统日期*/
printf("系统日期:%d-%d-%d \n",1900 + sysTime->tm_year,sysTime->tm_mon + 1
,sysTime->tm_mday); /*输出信息*/
}
else if (command[2] == num) //如果是命令数字2*/
{
time_t nowTime;
time(&nowTime); /*获取系统时间*/
sysTime = localtime(&nowTime); /*转换为系统时间*/
printf("系统时间:%d:%d:%d \n",sysTime->tm_hour ,sysTime->tm_min 
,sysTime->tm_sec); /*输出信息*/
}
else if (command[3] == num)
{
return 0; /*退出系统*/
}
printf("请输入命令符:\n"); /*输出字符串*/
}

return 0; /*程序结束*/
}
//使用switch语句
#include 
#include 
 
int main()
{
    //int command[4] = {0,1,2,3};            /*定义一个数组*/
    int num;
    struct tm *sysTime;
    time_t nowTime;
    printf("如需帮助可输入数字0!\n");                /*输出字符串*/
    printf("请输入命令符:\n");                        /*输出字符串*/
 
    while (1)
    {
        scanf("%d", &num);                         /*获得输入数字*/
     
        switch(num){
            case 0:
                /*输出帮助信息*/
                printf("输入数字1显示系统日期, 输入数字2显示系统时间, 输出字母3退出系统!\n");
                break;
            case 1:
                time(&nowTime);                         /*获取系统日期*/
                sysTime= localtime(&nowTime);           /*转换为系统日期*/
                printf("系统日期:%d-%d-%d \n",1900 + sysTime->tm_year,sysTime->tm_mon + 1 
                        ,sysTime->tm_mday);             /*输出信息*/
 
                break;
            case 2:
                time(&nowTime);                         /*获取系统时间*/
                sysTime = localtime(&nowTime);          /*转换为系统时间*/
                printf("系统时间:%d:%d:%d \n",sysTime->tm_hour ,sysTime->tm_min
                        ,sysTime->tm_sec);              /*输出信息*/
 
                break;
            case 3:
                return 0;
        }
        printf("请输入命令符:\n");                    /*输出字符串*/
    }
    return 0;                                      /*程序结束*/
}

这两个例子实现的是同样的功能,if只是比较输入的数字是不是与数组的相同

回答2:

switch语句一般用于判断一个整形变量的不同取值的情况,switch语句可以使用if语句进行改写。
例如:
int i = 1;
switch(i) {
case 0:
printf("i=0\n");
break;

case 1:
printf("i=1\n");
break;
}

改写为if语句:
int i=1;
if(i==0)
printf("i=0\n");
else if(i==1)
printf("i=1\n");

回答3:

if ( 条件 )
{
满足条件时执行语句,单条语句可省略外面的大括号
}
else //省略大括号时注意与距离其最近的if语句配对,这是容易搞错的地方(考试点)
{
不满足条件时执行语句,单条语句可省略外面的大括号
}
switch ( a ) //变量是整型数值
{
case 0: b=0; break;
case 1: b=1; break;
default: b=-1; break;
}
与之相当的if语句组
if ( a==0 ) b=0;
else if ( a==1 ) b=1;
else b=-1;
再举例:省略break情况
switch ( a )
{
case 0: b=0;
case 1: b=1; break;
default: b=-1; break;
}
与之相当的if语句组
if ( a==0 ) { b=0; b=1; }
else if ( a==1 ) b=1;
else b=-1;