C语言条件语句if-else和switch-case练习

  • 下面的一段程序的输出结果为( ) 

#include <stdio.h>

int main()

{

    if(-1)

        printf("1");

    else

        printf("2");

    if(0)

        printf("3");

    else

        printf("4");

    return 0;

}

A. 23 B. 24 C. 13 D. 14

由于非零即为真,所以选择D选项。

  • ( )设int s = 100,要输出字符串"s的值是100"应使用下列哪个语句?(山东精电电气)

A. printf("s 的值是%d", s);            B. printf("s 的值是%s", s)

C. printf("s 的值是%x", s):             D. printf("s 的值是%i", s)

  • if(n==8)和if(8== n)两种判断方式,哪一种更好,为什么?(泰华智)

第二种更好,有效的提醒编程错误。

  • if-elseif-else结构和switch-case结构,哪个效率高,为什么?(泰华智慧)

switch-case效率更高,这是因为 switch-case 通过跳转表直接跳转到对应的 case 标签,而不是像 if-else 那样逐个判断条件。

  • 结构化程序设计所规定的三种基本控制结构是:( ) (易购软件)

A. 输入、处理、输出 B. 形、网形、环形

C. 顺序、选择、循环 D. 主程序、子程序、函数

  • C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符:__________ (智洋)

A. 必须为字母                        B. 必须为下划线

C. 必须为字母或下划线      D. 可以是字母,数字和下划线中任一字符

  • 若执行下面的程序时,从键盘上输入 5,则输出是 ( ) (智洋创新)

int main(int argc, char **argv)

{

    int x;

    scanf("%d", &x);

    if(x++ > 5)        

        printf("%d\n", x);

    else

        printf("%d\n", x--);

    return 0;

}

A. 7                  B. 4                   C. 6                   D. 5

  • 以下语句中,能够判断uiNum(unsigned int)可以被16整除的有()(H3C)

A. if (((uiNum / 16) * 16) == uiNum)

B. if ((uiNum % 16) == 0)

C. if ((uiNum & 0x0F) == 0)

D. if (((uiNum >> 4) << 4) == uiNum)

 以上都是正确的

  • 编写一个程序。实现输入一个小写字母,程序输出它对应的大写字母。(提示:小写字母的ASCII码值比大写宇母大32) (中科四平)

int main(int argc, const char *argv[])

{

   char a;

 a = getchar();

   a = 'a'-32;

   putchar(a);

 return 0;

}

  • 已知学生成绩(100分为满分)与等级的对应关系为: (中科四平)

成绩(grade)

等级

90<=grade<=100

A

80<=grade<90

B

70<=grade<80

C

60<=grade<70

D

grade<60

E

请你编写一个程序,要求:输入学生成绩,输出学生成绩对应的等级。(提示:使用switch....case 语句)

 

int main(int argc, const char *argv[])

{

         int grade;

         scanf("%d",&grade);

         grade = grade / 10;

         switch(grade){

         case 10:case 9:
                 printf("A");break;

         case 8:
                printf("B");break;

         case 7:

                printf("C");break;

         case 6:

                printf("D");break;

         default:

                 printf("E");break;

         }

         return 0;

}
  • 编写一个程序。a=3,b=5,对a和b的值进行交换。 (北京君正集成电路)

  • t=a , a=b , b=t;
           #include<stdio.h>

                    int main(){

                              int a = 3,b = 5,c;

                             c = a;

                             a = b;

                             b = c;

                             return 0;

           }

  • a=a+b; b=a-b; a=a-b;
                             #include<stdio.h>

                    int main(){

                              int a = 3,b = 5;

                            a=a+b;

                            b=a-b;

                            a=a-b;

                             return 0;

           }

  • 编写一个程序。实现输入一个三位数,判断是否是水仙花数。

水仙花数——各个位立方之和等于本身。

eg: 1*1*1 + 5*5*5 + 3*3*3 = 153,所以153是水仙花数

153由1个100  5个10   3个1

个位 = num%10

十位 = num/10%10

百位 = num/100%10

int main(int argc, const char *argv[])

{

   int x,a,b,c;

   scanf("%d", &x);

   a = x/100;

   b = x/10%10;

   c = x%10;

   if(a*a*a+b*b*b+c*c*c == x){

           printf("this is shuixianhua");

           printf("%d %d %d \n",a,b,c);

   }else

           printf("No!");

           printf("%d %d %d \n",a,b,c);

   return 0;

}
  • 编写一个程序。实现输入一个年份,判断是不是闰年。

#include <stdio.h>

int main() {

    int year;

    printf("请输入一个年份:");

    scanf("%d", &year);

    // 判断是否为闰年

    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {

        printf("%d 是闰年。\n", year);

    } else {

        printf("%d 不是闰年。\n", year);

    }

    return 0;

}
  • 编写一个程序。请实现以下功能:(威海精讯畅通)

输入三个数,分别为年、月、日,输出此日是该年的第几天。

输入:

XXX  XXX  XXX

输出:

此日是该年的第XXX 天

示例:

输入 2020 2 20

程序输出 此日是该年的第51 天

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int main(int argc, const char *argv[])

{

int y1=31,y3=31,y5=31,y7=31,y8=31,y10=31,y12=31;

int y4=30,y6=30,y9=30,y11=30;

int y2=28;

int year ,month ,day,sum;

printf("请输入年月日:\n");

scanf("%d %d %d" ,&year,&month,&day);

if((year%4==0&&year%100!=0)||year%400==0){

          y2 = 29;

}

printf("%d %d %d",year,month,day);

if(month>12||month<0) printf("输入的月份不正确");

if(day>31||day<0) printf(" 输入的日期不符合规范");

sum = 0;

switch(month){

          case 12: sum+=y11;

          case 11: sum+=y10;

          case 10: sum+=y9;

          case 9: sum+=y8;

          case 8: sum+=y7;

          case 7: sum+=y6;

          case 6: sum+=y5;

          case 5: sum+=y4;

          case 4: sum+=y3;

          case 3: sum+=y2;

          case 2: sum+=y1;

          case 1: sum+=day;

                            break;

}

printf("这是该年的%d天",sum);



return 0;

}
  • 编写一个程序。输入三角形的 三个边长

        判断能否构成三角形,如果能

            输出能构成三角形

            再输出是什么三角形

                等边 [a==b && a==c && b==c]

                等腰 [a==b || a==c || b==c]

                直角(勾股定理)[a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a]

                普通

        如果不能

            输出不能构成三角形

int main(int argc, const char *argv[])

{

         int a,b,c;

         scanf("%d %d %d",&a,&b,&c);

         if(a+b > c && a+c > b && b+c > a){

                  printf("可以构造三角形");

                  if(a == b && b == c){

                          printf("等边");

                  }else if(a == b || b == c){

                          printf("等腰");

                  }else if(a*a+b*b == c*c || a*a + c*c == b*b || b*b+c*c == a*a){

                          printf("直角");

                  }else{

                          printf("普通");

                  }



         }else

                  printf("不能构造三角形");

        

         return 0;

}
  • 编写一个程序。有 4 个变量 a,b,c,d,我们提前并不知道他们的值,请用你的方式将他们从大到小排序。算法任意。(山东丁一)

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int main(int argc, const char *argv[])

{

int a ,b , c ,d ,e;

scanf("%d %d %d %d",&a , &b , &c , &d);

if(a>b) e=a , a = b , b = e;

if(b>c) e=b , b = c , c = e;

if(c>d) e=c , c = d , d = e;



if(a>b) e=a , a = b , b = e;

if(b>c) e=b , b = c , c = e;





if(a>b) e=a , a = b , b = e;

printf("%d %d %d %d",a,b,c,d);

return 0;

}

  • 22
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值