C語言刷題指南(一)

📙作者簡介:?清水加冰,目前大二在讀,正在學習C/C++、Python、操作系統、數據庫等。

📘相關專欄:C語言初階、C語言進階、數據結構刷題訓練營、有感興趣的可以看一看。

歡迎點贊 👍 收藏 ?留言 📝 如有錯誤還望各路大佬指正!

?每一次努力都是一種收獲,每一次堅持都是一種成長?? ? ? ?

在這里插入圖片描述

?

目錄

前言

1. 選擇題

?📖題目1:

📖題目2:

📖題目3:

?📖題目4:

📖題目5:?

2.?編程題

📖題目一:

?📖題目二:

總結


前言

????????前邊我們學習了C語言相關的知識,然而并沒有進行系統的練習,接下來我將開啟一個新的專欄,C語言刷題訓練營,以便于大家鞏固所學的知識。


1. 選擇題

?📖題目1:

1、執行下面程序,正確的輸出是( )

int x=5,y=7;
void swap()
{
int z;
z=x;
x=y;
y=z;
}
int main()
{
int x=3,y=8;
swap();
printf("%d,%d\n",x, y);
return 0;
}

?A: 5,7? ? ? ?B: 7,5? ? ? ?C: 3,8? ? ? ?D: 8,3

?題目解析:

這道題目考察的是函數相關的知識

  • swap函數調用時用的是全局變量,主函數中定義的變量只在主函數中有效,因為主函數也是一個函數,它與其他函數是平行關系;輸出語句這里,考慮局部優先的原則

正確答案:C

📖題目2:

2、以下不正確的定義語句是( )

A: double x[5] = {2.0, 4.0, 6.0, 8.0, 10.0};?
B: char c2[] = {'\x10', '\xa', '\8'};
C: char c1[] = {'1','2','3','4','5'};
D: int y[5+3]={0, 1, 3, 5, 7, 9};

?題目解析:

本題B選項考查轉義字符,有如下格式,

  • 八進制數字是0-7,沒有8,故B選項中'\8'是錯誤的
  • \ddd ddd表示1到3個八進制數 如:\130 轉義為 字符X
  • \xhh hh表示1到2位十六進制數 如:\x30 轉義為 字符0

正確答案:B

📖題目3:

3、 test.c 文件中包括如下語句,文件中定義的四個變量中,是指針類型的變量為【多選】( )
?

#define INT_PTR int*
typedef int* int_ptr;
INT_PTR a, b;
int_ptr c, d;

A: a? ? ? ? B: b? ? ? ? C: c? ? ? ? D: d

?題目解析:

這道題目考察的是C語言中的類型別名和typedef關鍵字的使用。

  • #define是宏定義,僅僅是直接替換,INT_PTR a, b; 進行宏替換后代碼是這樣的:int *a, b;這里的int *是a的類型,b的類型是int,故此次b只是int類型。
  • typedef是把該類型定義一個別名,別名是一個獨立的類型了,使用這個類型創建的變
    量都是這個類型的。

因此,a,c,d才是指針類型。正確答案:ACD

?📖題目4:

?4、 若給定條件表達式 (M)?(a++):(a--) ,則其中表達式 M ( )

A: 和(M==0)等價

B: 和(M==1)等價

C: 和(M!=0)等價

D: 和(M!=1)等價

?題目解析:

?這道題目考察的是對運算符的理解

給定條件表達式(M)?(a++):(a--)。 (表達式1)? (表達式2): (表達式3)為三目運算符。
計算規則為:

先判斷表達式1是否為真,若為真,則計算表達式2,并將表達式2的結果作為整個表達式最終的結果,表達式3不計算;否則,表達式3的結果為最終結果,表達式2不計算。

分析:

在此表達式中,若M=0,為假,計算a--; 若M≠0,為真,計算a++; 若要求與M等價,則要滿足M取0時為假,取非0數值時為真。 c選項中:假定M取0,則M表示假,當M是0時,表達式M!=0不成立,為假,計算a--; 當M取非0數值時,M為真,表達式M!=0成立,為真,計算a++; 符合題意

正確答案:C

📖題目5:?

5、有如下定義語句,則正確的輸入語句是【多選】( )
?

int b;
char c[10];

A: scanf("%d%s",&b,&c);

B: scanf("%d%s",&b,c);

C: scanf("%d%s",b,c);

D: scanf("%d%s",b,&c);


?題目解析:

&c和c兩個地址值是一樣的,程序的效果相同,也沒錯,但同時也必須把變量b的地址給scanf,故CD錯誤

正確答案:AB

2.?編程題

📖題目一:

題目描述:

?題目鏈接:

打印從1到最大的n位數icon-default.png?t=N6B9https://www.nowcoder.com/practice/4436c93e568c48f6b28ff436173b997f?tpId=13&tqId=2273153&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking題目接口描述:

/*** 代碼中的類名、方法名、參數名已經指定,請勿修改,直接返回方法規定的值即可** * @param n int整型 最大位數* @return int整型一維數組* @return int* returnSize 返回數組行數*/
int* printNumbers(int n, int* returnSize ) {}

??題目解析:

????????首先這道題目它是一道接口型題目,我們要先明白它的各個參數的含義,n就是輸出的最大位數,而returnSize就是需要返回的數字個數

這里首先要清楚n位數中最大的數字,實際上就是 10^n - 1 。 比如:

  • 1位數: 10的1次方- 1
  • 2位數: 10的2次方- 1
  • 3位數: 10的3次方- 1

????????這個規律清楚后動態申請空間,將數值填入就可以了,需要注意的是數組下標從0開始,而數值從1開始。

nt* printNumbers(int n, int* returnSize ) {*returnSize=pow(10,n)-1;int k=*returnSize+1;int* ret=(int*)malloc(sizeof(int)**returnSize);for(int i=1;i<k;i++){ret[i-1]=i;}return ret;
}

?📖題目二:

題目描述:

?題目鏈接:

計算日期到天數轉換icon-default.png?t=N6B9https://www.nowcoder.com/practice/769d45d455fe40b385ba32f97e7bcded?tpId=37&&tqId=21296&rp=1&ru=/ta/huawei&qru=/ta/huawei/question-ranking?題目解析:

?解題思路:? ? ? ?

????????這道題簡單解法其實將每個月的天數枚舉出來,然后根據當前月份向前累加滿月的天數,然后再加上當前月所在的天數。最終考慮平閏年的 2 月份區別是否增加一天。

????????其中需要注意的是平年和閏年的判斷,而且是閏年的月份大于 2 的時候,也就是 2 月走完,總天數才能加 1 (比如 2000年2月18日 ,雖然是閏年,但是 2月 都沒走完那是不能加上閏年多出的一天的)

代碼如下:

#include <stdio.h>
int isleapyear(int year) {if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){return 1;} return 0;
} 
int main()
{int monthday[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int year, month, day;while (~scanf("%d %d %d", &year, &month, &day)){int days = day;if (isleapyear(year) && month > 2) { days += 1;}for (int i = month - 1; i > 0; i--) {days += monthday[i];}printf("%d\n", days);} 
return 0;
}

?


總結

? ? ? ? 好了,以上便是本期C語言刷題的全部內容,希望可以對你有所幫助。最后,感謝閱讀!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40842.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40842.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40842.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

認識excel篇3之數據的有效性(數據驗證)

數據有效性不僅能夠對單元格的輸入數據進行條件限制&#xff0c;還可以在單元格中創建下拉列表菜單方便用戶選擇輸入。如果沒有做數據驗證&#xff0c;單元格內默認可以輸入任意類型的數據。數據驗證就是限制單元格輸入數據&#xff08;必須輸入符合要求的才能輸入&#xff09;…

VS2022如何查看類成員都在哪里被調用了(VS如何打開Call Hierarchy視圖)

文章目錄 打開Call Hierarchy視圖查看成員的調用 打開Call Hierarchy視圖 單擊菜單欄的“視圖” > “調用層次結構”&#xff0c;即可打卡Call Hierarchy視圖。 查看成員的調用 在代碼編輯窗口&#xff0c;右鍵單擊想要查看的類成員&#xff0c;然后選擇“查看調用層次結…

機器學習算法之-邏輯回歸(2)

為什么需要邏輯回歸 擬合效果太好 特征與標簽之間的線性關系極強的數據&#xff0c;比如金融領域中的 信用卡欺詐&#xff0c;評分卡制作&#xff0c;電商中的營銷預測等等相關的數據&#xff0c;都是邏輯回歸的強項。雖然現在有了梯度提升樹GDBT&#xff0c;比邏輯回歸效果更…

一、數學建模之線性規劃篇

1.定義 2.例題 3.使用軟件及解題 一、定義 1.線性規劃&#xff08;Linear Programming&#xff0c;簡稱LP&#xff09;是一種數學優化技術&#xff0c;線性規劃作為運籌學的一個重要分支&#xff0c;專門研究在給定一組線性約束條件下&#xff0c;如何找到一個最優的決策&…

JavaScript請求數據的4種方法總結(Ajax、fetch、jQuery、axios)

JavaScript請求數據有4種主流方式&#xff0c;分別是Ajax、fetch、jQuery和axios。 一、Ajax、fetch、jQuery和axios的詳細解釋&#xff1a; 1、 Ajax Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一種使用JavaScript在用戶的瀏覽器上發送請求的技術&…

springboot綜合案例第三課

SpringSecurity入門 什么是SpringSecurity Spring Security 的前身是 Acegi Security &#xff0c;是 Spring 項目組中用來提供安全認證服務的框架。 (https://projects.spring.io/spring-security/) Spring Security 為基于J2EE企業應用軟件提供了全面安全服務。特別 是使…

環形隊列+DMA空閑中斷+接收串口數據

環形隊列DMA空閑中斷接收串口數據 一.序言二.實驗原理三.實戰是檢驗真理的唯一標準3.1 usart1.c3.2 串口中斷 三.隊列代碼4.1 fifo.c4.2 fifo.h 五.結語 一.序言 本次實驗利用環形隊列DMA空閑中斷串口。。通過這個實驗可以非常深入的理解隊列&#xff0c;DMA,串口的知識。如果…

使用低版本vcpkg時,bootstrap-vcpkg.bat無法生成vcpkg.exe的可能原因

緣由 需要使用vcpkg中低版本的第三方庫&#xff0c;下載vcpkg后&#xff0c;回退至指定版本&#xff0c;運行bootstrap-vcpkg.bat生成vcpkg.exe時&#xff0c;命令行窗口總是一閃而過&#xff0c;但是vcpkg.exe卻沒有生成。 添加pause&#xff0c;查看錯誤 編輯bootstrap-vc…

docker的網絡模式

docker0網絡 docker容器的 虛擬網關loopback &#xff1a;回環網卡、TCP/IP網卡是否生效virtual bridge&#xff1a;linux 自身繼承了一個虛擬化功能&#xff08;kvm架構&#xff09;&#xff0c;是原生架構的一個虛擬化平臺&#xff0c;安裝了一個虛擬化平臺之后就會系統就會自…

ftp設置空閑連接超時時間和數據連接超時時間

在FTP協議中&#xff0c;可以通過配置服務器端的空閑連接超時時間來設置連接的過期時間。具體步驟如下&#xff1a; 登錄FTP服務器&#xff0c;進入服務器的配置文件目錄。通常配置文件位于/etc或/etc/vsftpd目錄下。打開FTP服務器的配置文件&#xff0c;例如vsftpd.conf。在配…

區間預測 | MATLAB實現QRBiLSTM雙向長短期記憶神經網絡分位數回歸時間序列區間預測

區間預測 | MATLAB實現QRBiLSTM雙向長短期記憶神經網絡分位數回歸時間序列區間預測 目錄 區間預測 | MATLAB實現QRBiLSTM雙向長短期記憶神經網絡分位數回歸時間序列區間預測效果一覽基本介紹模型描述程序設計參考資料 效果一覽 基本介紹 區間預測 | MATLAB實現QRBiLSTM雙向長短…

Codeforces 461B 樹形 DP

題意 傳送門 Codeforces 461B Appleman and Tree 題解 d p v , k dp_{v,k} dpv,k? 代表以節點 v v v 為根的子樹中&#xff0c;包含了 v v v 的聯通分量是否存在一個黑色節點 &#xff0c;同時其余聯通分量僅包含一個黑色節點情況下&#xff0c;劃分方案的數量。DFS 求解&…

微服務觀測性提升專項梳理

文章目錄 項目背景&#xff1a;項目目標&#xff1a;專項人員關鍵問題及風險APM 進展 項目背景&#xff1a; 隨著微服務架構的普及&#xff0c;構建和管理大規模的分布式系統變得越來越復雜。為了確保這些系統的可靠性和性能&#xff0c;以及快速排除故障&#xff0c;對微服務…

Git 合并分支時允許合并不相關的歷史

git fetch git fetch 是 Git 的一個命令&#xff0c;用于從遠程倉庫中獲取最新的提交和數據&#xff0c;同時更新本地倉庫的遠程分支指針。 使用 git fetch 命令可以獲取遠程倉庫的最新提交&#xff0c;但并不會自動合并或修改本地分支。它會將遠程倉庫的提交和引用&#xff…

Linux如何查看文件進程占用-lsof

lsof命令是什么&#xff1f; 可以列出被進程所打開的文件的信息。被打開的文件可以是 1.普通的文件&#xff0c;2.目錄 3.網絡文件系統的文件&#xff0c;4.字符設備文件 5.(函數)共享庫 6.管道&#xff0c;命名管道 7.符號鏈接 8.底層的socket字流&#xff0c;網絡socket…

Rust語法: 枚舉,泛型,trait

這是我學習Rust的筆記&#xff0c;本文適合于有一定高級語言基礎的開發者看不適合剛入門編程的人&#xff0c;對于一些概念像枚舉&#xff0c;泛型等&#xff0c;不會再做解釋&#xff0c;只寫在Rust中怎么用。 文章目錄 枚舉枚舉的定義與賦值枚舉綁定方法和函數match匹配枚舉…

代碼隨想錄算法訓練營二刷第一天| 704. 二分查找,27. 移除元素

代碼隨想錄算法訓練營二刷第一天| 704. 二分查找&#xff0c;27. 移除元素 文章目錄 代碼隨想錄算法訓練營二刷第一天| 704. 二分查找&#xff0c;27. 移除元素一、704. 二分查找二、35.搜索插入位置三、34. 在排序數組中查找元素的第一個和最后一個位置四、69.x 的平方根五、3…

【回溯】總結

1、 組合和子集問題 組合問題需要滿足一定要求才算作一個答案&#xff0c;比如數量要求&#xff08;k個數&#xff09;&#xff0c;累加和要求&#xff08;target&#xff09;。 子集問題是只要構成一個新的子集就算作一個答案。 進階&#xff1a;去重邏輯。 一般都是要對同…

Linux 5種網絡IO模型

Linux IO模型 網絡IO的本質是socket的讀取&#xff0c;socket在linux系統被抽象為流&#xff0c;IO可以理解為對流的操作。剛才說了&#xff0c;對于一次IO訪問&#xff08;以read舉例&#xff09;&#xff0c;數據會先被拷貝到操作系統內核的緩沖區中&#xff0c;然后才會從操…