第1題
🎗設有定義 char *p[ ] = {“Shanghai”, Beijing", “Hongkong”}; 則結果為 j 字符的運算式是 ( )
A. *p[1] + 3
B. *(p[1] + 3)
C. *(p[3] + 1)
D. p[3][1]
📝 分析:
此題是對指標陣列的考察,對于上面的定義我們可以畫出如下關系圖

對于這段代碼必須得理解這張圖,否則你對這個代碼的理解是有問題的,此外還需要了解運算子之間的優先級

所以選擇 B 選項
第2題
🎗執行以下函式后, i 的值是 ( )
int f(int x)
{
return ((x > 2) ? x * f(x - 1) : 3);
}
int i;
i = f(f(2));
A. 30
B. 無限遞回
C. 9
D. 2160
📝 分析:

所以選擇 C 選項
第3題
🎗在 int p[ ][4] = { {1}, {3, 2}, {4, 5, 6}, {0} }; 中,p[1][2] 的值是 ( )
A. 1
B. 0
C. 6
D. 2
📝 分析:
此題是對二維陣列的考查
對于二維陣列的不完全初始化會主動賦值 0

所以選擇 B 選項
第4題
🎗設有以下宏定義,則執行陳述句 z = 2 * (N + Y( 5 + 1))后,z 的值是 ( )
#define N 3+1
#define Y(n) ((N+1)*n)
A. 60
B. 190
C. 248
D. 以上全錯
📝 分析:
????? define替換規則 ?
??????在程式擴展 #define 定義符號和宏時,需要涉及以下幾個步驟
??????1?? 在呼叫宏時,首先對引數進行檢查,看看是否包含任何由 #define 定義的符號,如果是,它們優先被替換
??????2?? 替換文本隨后被插入到程式中原來文本的位置,對于宏,引數名被它們的值替換
??????3?? 最后,再次對結果檔案進行掃描,看看它是否包含任何由 #define 定義的符號,如果是,就要重復上述程序
????? 注意:
??????? 宏引數和 #define 定義中可以出現其它 #define 定義的常量,
??????? 但是對于宏,不能出現遞回,因為宏只做簡單的文本替換,且只替換一次
??????? 當前處理器搜索 #define 定義的符號時,字串常量的內容并不被搜索
????? 代碼步驟如下 ?

所以選擇 A 選項
第5題
🎗char a; int b; float c; double d; 則運算式 a * b + d - c 值的型別是 ( )
A. float
B. int
C. char
D. double
📝 分析:
????? 算術轉換 ?
??????如果某個運算子的各個運算元屬于不同的型別,那么除非其中一個運算元轉換為另一個運算元的型別,否則操作就無法進行,
??????下面的層次體系稱為尋常算術轉換
??????long double
??????double
??????float
??????unsigned long int
??????long int
??????unsigned int
??????int
??????如果某個運算元的型別在上面這個串列中排名較低,那么首先要轉換為另外一個運算元的型別后執行運算
??????低位元組 -> 高位元組 (如果是相同位元組的就向精度更高的轉換)
所以選擇 D 選項
第6題
🎗編程題<難度系數?>
📝 題述:
????Fibonacci 數列是這樣定義的:
????F[0] = 0
????F[1] = 1
????for each i ≥ 2: F[i] = F[i-1] + F[i-2]
????因此,Fibonacci 數列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在 Fibonacci 數列中的數我們稱為 Fibonacci 數,
????給你一個 N,你想讓其變為一個 Fibonacci 數,每一步你可以把當前數字 X 變為 X - 1 或者 X + 1 ,現在給
????你一個數 N 求最少需要多少步可以變為 Fibonacci 數,
🍳 輸入描述:
????輸入為一個正整數 N(1 ≤ N ≤ 1,000,000)
🍳 輸出描述:
????輸出一個最小的步數變為 Fibonacci 數
💨 示例:
????輸入,15
????輸入,2
🧷 平臺:Visual studio 2017 && windows
🔑 核心思想:

牛客網原題
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
int n = 0;
scanf("%d", &n);
int f1 = 0;
int f2 = 1;
int f3 = 0;
while(1)
{
if(n == f2)
{
printf("%d\n", 0);
break;
}
else if(n < f2)
{
if(abs(f1-n) < abs(f2-n))
{
printf("%d\n", abs(f1-n));
break;
}
else
{
printf("%d\n", abs(f2-n));
break;
}
}
//說明n不在f1和f2的那個區間內,還需要迭代Fib數
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
return 0;
}
第7題
🎗編程題 <難度系數??>
📝 題述:
????請實作一個函式,將一個字串中的每個空格替換成 “%20” ,
????例如,當字串為 We Are Happy. 則經過替換之后的字串為 We%20Are%20Happy,
🧷 平臺:Visual studio 2017 && windows
🔑 核心思想:

????? 無厘頭 ?
??????相信肯定會有人覺得這道題很奇怪,但其實這道題并不奇怪,
??????當我們去百度搜索關鍵字 “無 厘 頭” 時
??????發現上面的鏈接使用 “%20” 替換了空格

????? 為什么會空格會替換成 %20 ?
??????豌豆在網上查詢了下,大多數是這樣說的:
??????W3C標準規定,URL查詢引數中空格都會被編成加號+;而在 RFC 2396 中 URI 里的保留字符都需轉義成 %HH 格式
??????當然也可以理解空格的 ASCII 碼是 32,對應的十六進制是 20
??????行噠!這里就不扯遠了
牛客網原題
#include<stdio.h>
#include<string.h>
void ReplaceSpace(char* str, int length)
{
//1.計算空格的個數
int i = 0;
int spcount = 0;
for (i = 0; i < length; i++)
{
if (str[i] == ' ')
spcount++;
}
//2.計算替換空格后新的長度和最后的位置
int newlengh = length + spcount * 2;
int pos = newlengh - 1;
//3.從后往前填充
for (i = length - 1; i >= 0; i--)
{
//空格
if (str[i] == ' ')
{
str[pos--] = '0';
str[pos--] = '2';
str[pos--] = '%';
}
//非空格
else
{
str[pos--] = str[i];
}
}
}
int main()
{
char arr[20] = "We Are Happy.";
ReplaceSpace(arr, strlen(arr));
printf("%s\n", arr);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/317994.html
標籤:其他
