1.
2. 5335
swap1
函数接受一个整型数组c[]
作为参数,然后交换数组中的第一个和第二个元素的值
调用swap2(b[0], b[1]);
后,b[0]
和b[1]
的值会在函数内部被交换,但是由于swap2
函数内部的交换并不会影响到b
数组的实际值(因为c0
和c1
是函数的局部变量),所以b
数组仍然是{3, 5}
malloc
或
calloc
。
4.
(1)
结果为:BEGH
(2)
简单解释:
B 选项: 这是不正确的。定义的数组y长度为 5,但初始化列表中有 6 个元素,元素个数超出了数组长度。
D 选项: 十六进制转义序列以
\x
开头,后面跟着一个或两个十六进制数字。因此,表达式
char c2[] = {'\x10', '\xa', '\x8'};
是一个有效的字符数组初始化。
E 选项: 这是不正确的。无括号
F选项:正确。在C语言中,如果一个数组的初始化列表中只有一个元素,那么这个元素的值将被复制到数组的每个元素中。因此,
{0}
将导致数组
a
中的所有元素都被初始化为 0。
H 选项:不正确。因为数组
a
被声明为一个 2x3 的二维数组,这意味着它只有 2 行,而初始化列表中提供了 3 行。
初始化列表中的每个子列表代表数组的一行
5.
#include <stdio.h>
#include <ctype.h>
int main() {
char line[81]; // 假设每行最多80个字符加上一个换行符
int upper = 0, lower = 0, digit = 0, space = 0, others = 0,chinese = 0;
// 读取三行文本
for (int i = 0; i < 3; i++) {
while (getchar() != '\n') continue;
// 读取一行文本
scanf("%80[^\n]%*c", line);
for (int j = 0; line[j] != '\0'; j++) {
char ch = line[j];
// 检查是否为英文大写字母
if (ch >= 'A' && ch <= 'Z') {
upper++;
}
// 检查是否为英文小写字母
else if (ch >= 'a' && ch <= 'z') {
lower++;
}
// 检查是否为数字
else if (ch >= '0' && ch <= '9') {
digit++;
}
// 检查是否为空格
else if (ch == ' ') {
space++;
}
// 其他字符
else if(ispunct(ch)){
others++;
}
}
}
int C = 80-upper-lower-digit-space-others;
// 输出结果
printf("upper:%d\n", upper);
printf("lower:%d\n", lower);
printf("digit:%d\n", digit);
printf("space:%d\n", space);
printf("others:%d\n", others);
printf("chinese:%d\n", C);
return 0;
}