if switch的简单应用

问题:1.下面的一段程序的输出结果为( ) (鲁科安全)

#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

分析:-1不为0,输出1;0,输出4

问题:2.( )设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)

答案:A

分析:100为整数,用%d或%i

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

答案:if(8==n)更好

分析:右边若少打个=会报错,左边会正常赋值

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

答案:switch-case效率更高

分析:当可能性的种类较多时,if_else会非常冗长,且需要挨个遍历所有可能,类似于穷举法。而switch-case只会找到对应case。

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

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

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

答案:C

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

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

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

答案:C

问题:7.若执行下面的程序时,从键盘上输入 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

答案:C

分析:输入5后,先判断再++,所以为否,先输出6再--

问题:8.以下语句中,能够判断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)

答案:A,B ,C ,D

分析:A中除以16后的整数再乘以16为本身,这个数一定是16的倍数

B余数为0,既是整除的定义

C中该数&0000 1111 = 0000 0000,意味着该数右四位为0,左四位皆为16倍数

D中该数右移4位再左移4位为本身,意味着该数右四位为0,左四位皆为16倍数

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

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char ch;
	printf("请输入一个字符");
	scanf("%c",&ch);
	if(ch>='A'&&ch<='Z'){
		printf("%c\n",ch+32); //转大写
}
    default:printf("输入有误\n");
	return 0;
	}

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

成绩(grade)

等级

90<=grade<=100

A

80<=grade<90

B

70<=grade<80

C

60<=grade<70

D

grade<60

E

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

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int score;

	printf("请输入成绩");
	scanf("%d" , &score);
	switch(score/10){
	case 1: case 2: case 3: case 4: case 5: 
		printf("E"); break;
	case 6: printf("D"); break;
	case 7: printf("C"); break;
	case 8: printf("B"); break;
	case 9: printf("A"); break;
	default:printf("输入成绩不合法\n");
	}
	return 0;
}

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

  • t=a , a=b , b=t;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a=3, b=5;
	a=a+b;
	b=a-b;
	a=a-b;
	printf("%d %d", a , b);

	return 0;
}
  • a=a+b; b=a-b; a=a-b;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a=3, b=5;
	a=a+b;
	b=a-b;
	a=a-b;
	printf("%d %d", a , b);

	return 0;
}

问题:12.编写一个程序。实现输入一个三位数,判断是否是水仙花数。

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

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

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int num;
	printf("请输入一个数\n");
	scanf("%d", &num);
	int g, s, b;
	g=num%10;
	s=num/10%10;
	b=num/100%10;
	if(g*g*g+s*s*s+b*b*b==num){
		printf(  "是水仙花数\n");
	}else{

		printf(  "不是水仙花数\n");
	}
	return 0;
}

问题:13.编写一个程序。实现输入一个年份,判断是不是闰年。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int year;
	printf("输入年份\n");
	scanf("%d", &year);
	if((year%4==0&&year%100!=0) || year%400==0){
		printf("该年是闰年\n");
	}else {
		printf("该年不是闰年\n");
	}
	return 0;
}

问题:14.编写一个程序。请实现以下功能:(威海精讯畅通)

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

输入:

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 m1=31, m2=28, m3=31, m4=30, m5=31, m6=30;
	int	m7=31, m8=31, m9=30, m10=31, m11=30, m12=31;

	int year, month, day, sum=0;
	printf("请输入年 月 日\n");
	scanf("%d%d%d\n", &year, &month, &day);
	if((year%4==0&&year%100!=0) || year%400==0) m2=29;
	
			
	if((month>0 && month<=12) && (day>0 && day<=30)) {

		switch(month){
			case 12: sum=sum+m11;
			case 11: sum=sum+m10;
			case 10: sum=sum+m9;
			case 9: sum=sum+m8;
			case 8: sum=sum+m7;
			case 7: sum=sum+m6;
			case 6: sum=sum+m5;
			case 5: sum=sum+m4;
			case 4: sum=sum+m3;
			case 3: sum=sum+m2;
			case 2: sum=sum+m1;
			case 1: sum=sum+day;
			printf("这天是一年里的第");
			printf("%d", sum);
			printf("天\n");
}
	 }else {
		printf("输入的日期不合法\n");
	}
	
	
	return 0;
}

本该输入三个数变为了四个

问题:15.编写一个程序。输入三角形的 三个边长

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

            输出能构成三角形

            再输出是什么三角形

                等边 [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]

                普通

        如果不能

            输出不能构成三角形

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a, b, c;
	printf("输入三角形的三个边长\n");
	scanf("%d %d %d", &a, &b, &c);
	if (a==b && a==c && b==c) {
		printf("等边三角形\n");
	}else if ((a*a==b*b+c*c) || (b*b==a*a+c*c) || (c*c==a*a+b*b)){
		printf("直角三角形\n");

	}else if ((a==b || a==c || b==c) && (a+b>c && a+c>b && b+c>a)){
		printf("等腰三角形\n");
	}else if (a+b>c && a+c>b && b+c>a) {
		printf("普通三角形\n");
	}
	return 0;
}

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

lude <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a, b, c, d, t;
	printf("请输入四个数\n");	
	scanf("%d%d%d%d", &a,&b,&c,&d);
	if (a<b) t=a, a=b, b=t;
	if (b<c) t=b, b=c, c=t;
	if (c<d) t=c, c=d, d=t;
	if (a<b) t=a, a=b, b=t;
	if (b<c) t=b, b=c, c=t;
	if (a<b) t=a, a=b, b=t;
	printf("这四个数由大到小排列为:");
	printf("%d%d%d%d\n" , a,b,c,d);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值