标签: ,

第3次形成性考核 (指针与进阶函数)

  • 主题: 指针的基本概念(地址、指针变量、* 和 & 运算符)、指针与数组、指针与函数(传址调用)、字符串处理函数。
  • 题量: 6题
题目:
  1. (判断题 – 2)

如果 int a = 10; int *p = &a;,那么表达式 *p 的值是变量 a 的地址。( B )

 

  1. (选择题 – 3)

以下哪个函数用于比较两个字符串是否相等(区分大小写)?( C )

  1. strcpy()
  2. strlen()
  3. strcmp()
  4. strcat()

 

  1. (填空题 – 5)
  • 设有指针变量 p 指向整型变量 x。
  • 将变量 x 的地址赋给指针 p 的语句是:p = &x____;
  • 通过指针 p 访问变量 x 的值的表达式是:*p____;
  • 如果 char str[] = “world”; char *ptr = str; 那么 *(ptr+1) 的值是字符 __  ‘o’____。

 

  1. (编程题 – 10)

编写一个函数 void swap(int *a, int *b),该函数使用指针交换两个整数变量的值。在 main 函数中定义两个整数,调用 swap 函数交换它们的值,并打印交换前后的值。

期望输出:

Before swap: x = 10, y = 20

After swap: x = 20, y = 10

#include <stdio.h>

 

void swap(int *a, int *b) {

    int temp = *a;

    *a = *b;

    *b = temp;

}

 

int main() {

    int x = 10, y = 20;

    printf(“Before swap: x = %d, y = %d\n”, x, y);

    swap(&x, &y);

    printf(“After swap: x = %d, y = %d\n”, x, y);

    return 0;

}

  1. (编程题 – 10)

编写一个C程序,定义一个整型数组,包含10个元素,并对其进行初始化。然后使用指针遍历该数组,计算并输出数组中所有奇数的和。

#include <stdio.h>

 

int main() {

    int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    int sum = 0;

    int *p = arr;

 

    for (int i = 0; i < 10; i++) {

        if (*p % 2 != 0) {

            sum += *p;

        }

        p++; // 指针移动到下一个元素

    }

 

    printf(“Sum of odd numbers: %d\n”, sum);

    return 0;

}

  1. (编程题 – 10)

编写一个C程序,输入一个字符串(可以包含空格,长度不超过100),然后将其中的所有小写字母转换成大写字母,并输出转换后的字符串。请不要使用库函数 strupr() 或 toupper()(但可以使用 islower())。

示例输入:

Hello World 123

示例输出:

HELLO WORLD 123

#include <stdio.h>

#include <string.h>

 

int main() {

char str[101];

fgets(str, sizeof(str), stdin); // 读取包含空格的字符串

 

for (int i = 0; str[i] != ‘\0’; i++) {

if (str[i] >= ‘a’ && str[i] <= ‘z’) {

str[i] = str[i] – 32; // 小写字母 ASCII 值 – 32 转为大写

}

}

 

printf(“%s”, str);

return 0;

}