c语言 switch整型,c语言switch型别强制转换的问题。
时间: 2023-08-26 17:37:08 浏览: 219
在C语言中,switch语句可以接受整型、字符和枚举类型作为表达式类型。如果表达式的类型不是整型、字符或枚举类型,那么需要进行强制类型转换。
在switch语句中,case标签的类型必须与表达式的类型匹配。如果不匹配,则需要进行强制类型转换。例如,如果表达式类型为short int,而case标签类型为int,那么需要将case标签类型强制转换为short int。
下面是一个示例代码,展示了如何在switch语句中使用类型强制转换:
```c
#include <stdio.h>
int main()
{
char ch = 'a';
switch ((int) ch) {
case 'a':
printf("case 'a' executed\n");
break;
case 'b':
printf("case 'b' executed\n");
break;
default:
printf("default case executed\n");
break;
}
return 0;
}
```
在上面的代码中,我们将字符类型ch强制转换为int类型,以便在switch语句中使用该表达式。注意,case标签使用的是字符类型的值,但由于ch被强制转换为了int类型,因此可以正确匹配case标签。
相关问题
出一份程序设计基础的C语言版的试卷,包含答案
试卷
一、选择题(每题2分,共10分)
1.以下哪个不是C语言中的保留字?
A. float
B. printf
C. switch
D. char
答案:B
2.在C语言中,下列选项关于变量的描述,正确的是:
A. 变量的值可以随意修改
B. 变量名可以与关键字相同
C. 声明变量只需要指定类型不需要指定大小
D. 变量定义必须在函数外
答案:A
3.以下代码片段中,变量x的值为多少?
int x = 6;
x += x * 3;
A. 6
B. 18
C. 24
D. 30
答案:24
4.以下哪个函数可以输出带有格式的字符串?
A. scanf()
B. puts()
C. printf()
D. gets()
答案:C
5.下列哪个数组定义方式是正确的?
A. int arr[] = {1, 2, 3, 4};
B. int arr[5] = {1, 2, 3};
C. int arr[3] = {1, 2, 3, 4};
D. int arr[] = {1, 2, ‘3’, 4};
答案:A
二、填空题(每题2分,共10分)
1.C语言中,整型变量默认占用字节数为 _______ 。
答案:4
2.将一个float类型变量强制转换为int类型,使用的转换函数为 _______ 。
答案:(int)
3.如果定义了一个指向int类型数据的指针,应该使用哪种符号来表示它?
答案:*
4.C语言中的逻辑运算符有 ________ (填写所有符号)。
答案:&、|、!、&&、||
5.下面这段代码将打印出什么值?
int a = 10;
printf("%d", ++a + a++);
答案:22
三、判断题(每题2分,共10分)
1.数组下标从0开始,最后一个元素的下标为n-1。 ( )
答案:对
2.在C语言中,switch语句只能判断整型数据型别。 ( )
答案:对
3.指针变量在定义时,必须指定指针所指向的数据类型。 ( )
答案:对
4.在C语言中,变量名必须以字母或下划线开头,不能以数字开头。 ( )
答案:对
5.整数型数据在电脑中存储时,存储的是二进制形式。 ( )
答案:对
四、编码题(每题20分,共40分)
1.编写一个程序,要求用户输入一个三位数的整数,然后程序可以计算该数的各位数字之和。
提示:可以使用除法和取余运算,依次求出个位数、十位数和百位数,并将它们相加即可。
答案:
#include <stdio.h>
int main()
{
int n, sum = 0;
printf("请输入一个三位数的整数:");
scanf("%d", &n);
sum += n % 10; //求个位数
n /= 10;
sum += n % 10; //求十位数
n /= 10;
sum += n; //求百位数
printf("该数的各位数字之和为:%d\n", sum);
return 0;
}
2.编写一个程序,要求用户输入一个整数n,然后程序可以输出n的阶乘。
提示:n的阶乘可以通过连续乘以n、n-1、n-2、……1来实现。
答案:
#include <stdio.h>
int main()
{
int n, i;
long long factorial = 1; //因为n的阶乘很容易溢出,因此使用long long类型
printf("请输入一个整数n:");
scanf("%d", &n);
if (n < 0) //防止出现负数的情况
{
printf("输入有误!\n");
return 0;
}
for (i = n; i >= 1; i--)
factorial *= i;
printf("%d的阶乘结果为:%lld\n", n, factorial);
return 0;
}
阅读全文