首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言筆試實戰題庫:判斷、填空、編程三維突擊

     編輯:關於C語言

一、判斷題(附解析)

  1. T int a[2][2]={{1},{2,3}}; → a[0][1] 未顯式初始化,自動為 0。
  2. F int (*ptr)(); 是函數指針,指向返回 int、無參函數,非數組名。
  3. F 指針僅可比較 ==/!=;>/< 無意義(不同分配區地址不可比大小)。
  4. F switch 控制表達式必須為整型(int/char/short/enum),不可為 float。
  5. T #define print(x) printf("the no, " #x ", is ") — #x 字符串化參數,合法。

二、填空題(32 位 Windows)

char str[] = "Hello";  // 6 字節含 \0
char *p = str;
int n = 10;

sizeof(str)  → 6
sizeof(p)    → 4
sizeof(n)    → 4

void func(char str[100]) { }
sizeof(str)  → 4  (退化為指針)

void setmemory(char **p, int num) { *p = malloc(num); }
void test() { char *s=NULL; setmemory(&s,100); strcpy(s,"hello"); printf(s); }
// 輸出:hello

int arr[] = {6,7,8,9,10};
int *ptr = arr;
*(ptr++) += 123;  // ptr 指向 7,arr[0] 變 129
printf("%d,%d", *ptr, *(++ptr));
// *ptr=7, ++ptr 指向 8 → 輸出 7,8
// 注:原題答案 8,8 有誤,正確為 7,8

三、編程題

1. 手寫 strcmp(相等 0,不等 -1)

int mystrcmp(const char *s1, const char *s2) {
    while (*s1 && *s1 == *s2) { s1++; s2++; }
    return (*s1 == *s2) ? 0 : -1;
}

2. 判斷回文字符串(返回 1/0/-1)

int is_palindrome(const char *s) {
    if (!s) return -1;
    const char *e = s + strlen(s) - 1;
    while (s < e) {
        if (*s++ != *e--) return 0;
    }
    return 1;
}

注意:原文代碼邏輯有缺陷(str-=2 易越界、空串處理缺失),以上為修正版。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved