一、填空(10道,在____处填答案,一处2分)
1、如果想要释放通过 malloc 分配的动态内存,应该使用的函数是 _____。
2、在C语言中,使用 strcat 函数连接两个字符串时,需要确保目标字符串有足够的空间来存储连接后的字符串。strcat 函数的原型在 string.h 头文件中,它的原型是 _____。
3、在C语言中,union 允许在同一内存位置存储不同的数据类型。union 的大小至少是其最大成员的大小。假设有一个 union 如下定义:
union Data {
int i;
float f;
char str[20];
};
这个 union 的大小至少是 _____ 字节。
4、在C语言中,宏定义可以通过 #define 指令实现。如果有一个宏定义如下:
#define PI 3.14159
那么在代码中使用这个宏,可以通过 _____ 来替换其定义的值。
5、若已知 a=10, b=15, c=1。 则表达式 a*b&&c 的运算结果为________。
6、若有以下定义和语句:int a[5]={9,8,7,6,5}; *p; p=&a[3];则*--p 的值是_________。
7、#include
main()
{char a[10]=”123456789”,*p; p=&a[4]; puts(p); }
以上程序的输出结果为___________。
8、C 语言的数组名是一个________常量, 不能对它进行加减和赋值等运算。
9、判断字符型变量 ch 是否为大写字母的表达式是________。
10、说明 char s1[]=“china” ,s2[10]; 要将 s1 的值复制到 s2 中的正确语句是________。
二、程序改错(10道,一处4分)
1、
#include
int main() {
int arr[5] = {1, 2, 3, 4, 5};
printf("%d", arr[5]);
}
2、
#include
int main() {
int a = 10, b = 20;
if (a = b) {
printf("a等于b\n");
} else {
printf("a不等于b\n");
}
return 0;
}
3、
#include
#include
int main() {
int *p = malloc(sizeof(int));
*p = 100;
printf("p = %d\n", *p);
return 0;
}
4、
#include
int main() {
int num = 5;
printf("The number is %s\n", num);
return 0;
}
5、
#include
int main() {
int a = 5;
int *p = NULL;
printf("%d", *p);
return 0;
}
6、
#include
int main() {
struct Point {
int x;
int y;
};
struct Point *ptr;
ptr->x = 5;
ptr->y = 10;
printf("Coordinates: (%d, %d)", ptr->x, ptr->y);
return 0;
}
7、
#include
struct Person {
char name[20];
int age;
};
int main() {
struct Person person1;
person1.name = "John";
person1.age = 30;
printf("Name: %s, Age: %d", person1.name, person1.age);
return 0;
}
8、
#include
int main() {
int a = 5, b = 10;
int *ptr = &a;
*ptr = &b;
printf("a: %d, b: %d", a, b);
return 0;
}
9、
#include
int main() {
struct Student {
char name[20];
int age;
};
struct Student *ptr;
ptr->name = "Alice";
ptr->age = 25;
printf("Student: %s, Age: %d", ptr->name, ptr->age);
return 0;
}
10、
#include
int main() {
struct Date {
int day;
int month;
int year;
};
struct Date *ptr;
ptr->day = 10;
ptr->month = 4;
ptr->year = 2024;
printf("Date: %d/%d/%d", ptr->day, ptr->month, ptr->year);
return 0;
}
三、程序阅读(8道,一处5分)
1.有下列程序
void main()
{
int n=0,m=1,x=0;
if (!n) x=1;
if (m) x=2;
if (x) x=3;
printf(“%d\n”,x);
}
执行后的结果是________。
2. 有以下程序
void main()
{
char v2[] = "0010110101000001", * p;
unsigned int v10, t;
v10 = 0;
p = v2;
while (*p != '\0')
{
t = *p - '0';
v10 = v10 * 2 + t;
p++;
}
printf("\n%s 转换为整数: %u\n", v2, v10);
}
执行后的结果是________。
3. 以下程序
int main() {
char s[] = "6789";
s[1] = '\0';
printf("%s\n", s);
return 0;
}
执行后的结果是________。
4. 有以下程序
int main() {
int a = 4, b = 3, c = 2, t = 0;
if (b > a && a < c) {
t = a;
a = c;
c = t;
}
printf("%d ", c);
return 0;
}
执行后的结果是________。
5. 有以下程序
#include
void main()
{
int i, j, flag, n;
n = 0;
i = 2016;
while (n < 1 && i--)
{
flag = 0;
for (j = 2; j < i; j++)
if (i % j == 0)
{
flag = 1;
break;
}
if (flag == 0)
{
n = n + 1;
printf("%d\n", i);
}
i = i + 2;
}
}
执行后的结果是________。
6. 有以下程序
void main()
{ int a=1,b=3,c=5;
int *p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf("%d\n",c);
}
执行后的结果是________。
7. 有以下程序
#include
void main()
{
char a[6] = "54321", temp;
int i, k;
for (i = 1; i <= 5; i++)
{
printf("%s\n", a);
temp = a[0];
for (k = 0; k < 4; k++)
a[k] = a[k + 1];
a[4] = temp;
}
}
执行后的结果是________。
8. 有以下程序
#include
void main()
{
int i, g, s, b, count;
count = 0;
for (i = 100; i <= 999; i++)
{
g = i % 10;
s = i / 10 % 10;
b = i / 100;
if ((g + s) * b == 28)
{
count++;
}
}
printf("%d\n", count);
}
执行后的结果是________。
四、大题(5道,一处10分)
1、
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
2、
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
3、
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。
4、
有形如:ax3+bx2+cx+d=0这样的一个一元三次方程。
给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在 −100至 100 之间),且根与根之差的绝对值 ≥1。
要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后 2 位。
提示:记方程 f(x)=0,若存在 2个数 x1和 x2,且 x1
输出格式:由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后 2 位。
数据范围:−20≤a,b,c,d≤20
输入样例:1 -5 -4 20
输出样例:-2.00 2.00 5.00
5、
某班有 n个学生,学习能力分别为 a1,a2,…,an。
为了保证全班学生都能跟得上讲课,该班的讲课速度恰好等于班级内学习能力最低的学生的学习能力。
请你计算并输出,该班的讲课速度。
输入格式:第一行包含整数 n。
第二行包含 n个整数 a1,a2,…,an。
输出格式:一个整数,表示该班的讲课速度。
数据范围
前 3个测试点满足 1≤n≤10。
所有测试点满足 1≤n≤100,1≤ai≤100。
输入样例:
3
4 5 6
输出样例:
4
- 一、填空(10道,在____处填答案,一处2分)
- 1、free
- 2、char *strcat(char *dest, const char *src);
- 3、20
- 4、PI
- 5、1
- 6、7
- 7、56789
- 8、指针
- 9、ch >= 'A' && ch <= 'Z'
- 10、strcpy(s2, s1);
- 二、程序改错(10道,一处4分)
- 1、
- #include
-
- int main() {
- int arr[5] = {1, 2, 3, 4, 5};
- printf("%d", arr[4]);
- return 0;
- }
- 2、
- #include
-
- int main() {
- int a = 10, b = 20;
- if (a == b) {
- printf("a等于b\n");
- } else {
- printf("a不等于b\n");
- }
- return 0;
- }
- 3、
- #include
- #include
-
- int main() {
- int *p = malloc(sizeof(int));
- *p = 100;
- printf("p = %d\n", *p);
- free(p);
- return 0;
- }
- 4、
- #include
-
- int main() {
- int num = 5;
- printf("The number is %d\n", num);
- return 0;
- }
- 5、
- #include
-
- int main() {
- int a = 5;
- int *p = &a;
- printf("%d", *p);
- return 0;
- }
- 6、
- #include
-
- struct Point {
- int x;
- int y;
- };
-
- int main() {
- struct Point point = {5, 10};
- struct Point *ptr = &point;
- printf("Coordinates: (%d, %d)\n", ptr->x, ptr->y);
- return 0;
- }
- 7、
- #include
- #include
-
- struct Person {
- char name[20];
- int age;
- };
-
- int main() {
- struct Person person1;
-
- strcpy(person1.name, "John");
-
- person1.age = 30;
-
- printf("Name: %s, Age: %d\n", person1.name, person1.age);
- return 0;
- }
- 8、
- #include
-
- int main() {
- int a = 5, b = 10;
- int *ptr = &a;
- ptr = &b;
-
- printf("a: %d, b: %d", a, b);
- return 0;
- }
- 9、
- #include
-
- struct Student {
- char name[20];
- int age;
- };
-
- int main() {
- struct Student student = {"Alice", 25}; // 初始化一个Student结构体实例
- struct Student *ptr = &student; // 将指针指向这个实例
-
- printf("Student: %s, Age: %d\n", ptr->name, ptr->age);
- return 0;
- }
- 10、
- #include
-
- struct Date {
- int day;
- int month;
- int year;
- };
-
- int main() {
- struct Date date = {10, 4, 2024};
- struct Date *ptr = &date;
-
- printf("Date: %d/%d/%d\n", ptr->day, ptr->month, ptr->year);
- return 0;
- }
- 三、程序阅读(8道,一处5分)
- 1、3
- 2、11585
- 3、6
- 4、2
- 5、2017
- 6、3
- 7、54321,43215,32154,21543,15432
- 8、18
- 四、大题(5道,一处10分)
- 1、
- #include
-
- int fibonacci(int n) {
- if (n <= 1)
- return n;
- else
- return fibonacci(n - 1) + fibonacci(n - 2);
- }
-
- int main() {
- int months;
- printf("请输入月份:");
- scanf("%d", &months);
-
- int i, rabbits = 0, prev_rabbits = 1, temp;
- for (i = 0; i < months; i++) {
- temp = rabbits;
- rabbits += prev_rabbits;
- prev_rabbits = temp;
- }
-
- printf("第 %d 个月的兔子总数为 %d 对。\n", months, rabbits);
-
- return 0;
- }
- 2、
- #include
-
- int main() {
- int a, n;
- printf("请输入数字 a 和相加的个数 n:");
- scanf("%d %d", &a, &n);
-
- int i;
- long long int sum = 0, term = 0;
- for (i = 1; i <= n; i++) {
- term = term * 10 + a;
- sum += term;
- }
-
- printf("表达式的值为:%lld\n", sum);
-
- return 0;
- }
- 3、
- #include
-
- int main() {
- int i, j, sum;
-
- printf("1000以内的完数有:\n");
- for (i = 2; i <= 1000; i++) {
- sum = 1; // 初始化为1,因为1是所有数的因子
-
- // 找出因子并求和
- for (j = 2; j <= i / 2; j++) {
- if (i % j == 0) {
- sum += j;
- }
- }
-
- // 如果因子和等于数本身,则打印该数
- if (sum == i) {
- printf("%d ", i);
- }
- }
-
- printf("\n");
-
- return 0;
- }
- 4、
- #include
- #include
-
- double a, b, c, d, A, B, T, h, x1, x2, x3;
-
- int main()
- {
- scanf("%lf %lf %lf %lf", &a, &b, &c, &d);
- A = b * b - 3 * a * c;
- B = b * c - 9 * a * d;
- T = (2 * A * b - 3 * a * B) / (2 * pow(A * A * A, 0.5));
- h = acos(T);
- x1 = (-b - pow(A, 0.5) * cos(h / 3) * 2) / 3 / a;
- x2 = (-b + pow(A, 0.5) * (cos(h / 3) - sqrt(3) * sin(h / 3))) / (3 * a);
- x3 = (-b + pow(A, 0.5) * (cos(h / 3) + sqrt(3) * sin(h / 3))) / (3 * a);
- printf("%.2lf %.2lf %.2lf", x1, x2, x3);
-
- return 0;
- }
-
- 5、
- #include
-
- int main() {
- int n;
- printf("请输入学生数量:");
- scanf("%d", &n);
-
- int abilities[n];
-
- printf("请输入学生的学习能力:");
- for(int i = 0; i < n; i++) {
- scanf("%d", &abilities[i]);
- }
-
- // 找到最小的学习能力
- int min_ability = abilities[0];
- for(int i = 1; i < n; i++) {
- if(abilities[i] < min_ability) {
- min_ability = abilities[i];
- }
- }
-
- printf("该班的讲课速度为:%d\n", min_ability);
-
- return 0;
- }