【C語言】易錯題 經典題型

在這里插入圖片描述
出錯原因:之前運行起來的可執行程序沒有關閉 關閉即可

平均數(average)
輸入3個整數,輸出它們的平均值,保留3位小數。

#include <stdio.h>
int main()
{int a, b, c;scanf("%d %d %d", &a, &b, &c);printf("%.3lf", (a + b + c) / 3.0); //注意3.0不能寫成3return 0;
}

整數/整數=整數,浮點數/浮點數=浮點數

下面那個不是轉義字符?
A.‘\n’
B.‘\060’
C.‘\q’
D.‘\b’
答案解析:
C
A:‘\n’ 轉義字符,代表換行
B:‘\060’ 轉義字符,060八進制數據,十進制為48,表示ASCII碼為48的’0’
C:‘\q’ 什么都不是
D:‘\b’ 轉義字符,表示退格。

下面程序的結果是:( )

#include <stdio.h>
#include <string.h>
int main()
{printf("%d\n", strlen("c:\test\121"));return 0;
}

A.7
B.8
C.9
D.10
答案解析:
A
strlen:獲取字符串的有效長度,不包括’\0’
“c:\test\121”: 在該字符串中,\t是轉移字符,水平制表,跳到下一個tab的位置;而\121表示一個字符,是講121看做8進制數組,轉換為10進制后的81,作業為ASCII碼值的字符,即:字符’Q’ ,故上述字符串實際為:“c: estQ”,只有7個有效字符

.局部變量是放在內存的靜態區的,全局變量是放在內存的棧區()
答案
(錯)局部變量是放在內存的棧區的,全局變量是放在內存的靜態區

負數求模的規則是,結果的正負號由第一個運算數的正負號決定。()
答案
(對)

關于scanf函數
scanf()處理所有占位符時,會自動過濾起首的空白字符,包括空格、制表符、換行符()
scanf的占位符%s表示讀取一個字符串,遇到空白字符也全部讀取()
scanf是庫函數,庫函數不需要包含頭文件()

(錯):scanf()處理數值占位符時,會自動過濾空白字符,包括空格、制表符、換行符,scanf輸出字符占位符的時候,不忽略空白字符,總是返回當前第一個字符,無論該字符是否為空格。
(錯):scanf的占位符%s表示讀取一個字符串,遇到空白字符就停止讀取。
(錯):scanf需要包含stdio.h這個頭文件的

printf函數
printf()參數與占位符是一一對應關系,如果有n個占位符,printf()的參數就應該有n個
答案
(錯)printf()參數與占位符是一一對應關系,如果有n個占位符,printf()的參數就應該有n+1個

下面程序輸出的結果是啥

#include <stdio.h>
int main()
{printf("%5d\n", 123456);return 0;
}

A.12345
B.123456
C.23456
答案
B.printf()允許限定占位符的最小寬度。%5d表示這個占位符的寬度至少為5位。如果不滿5位,對應的值的前面會添加空格。如果超過5位,正常輸出就行,5是最少輸出5位。

關于關系操作符說法錯誤的是?
A.C語言的關系操作符就是用來比較大小關系的
B.關系操作符中判斷是否相等使用 = =
C. = = 操作符可以用來比較2個字符串是否相等
D.關系操作符參與的關系表達式,通常返回0或1,表示真假

正確答案:
C
兩個字符串是否相等不能使用==,應該使用strcmp函數

關于switch說法不正確的是:( )
A.switch語句中的default子句可以放在任意位置
B.switch語句中case后的表達式只能是整形常量表達式
C.switch語句中case子句必須在default子句之前
D.switch語句中case表達式不要求順序

正確答案:
C
答案解析:
A:正確,可以放在任意位置,但是一般建議最好還是放在最后
B:正確,case語句后一般放整形結果的常量表達式或者枚舉類型,枚舉類型也可以看成是一個特殊的常量
C:錯誤,沒有規定case必須在default之前,一般case最好放在default之前
D:正確,但一般還是按照次序來

下面代碼的執行結果是什么( )

#include <stdio.h>
int main() {int x = 3;int y = 3;switch (x % 2) {case 1:switch (y){case 0:printf("first");case 1:printf("second");break;default: printf("hello");}case 2:printf("third");}return 0;
}

A.secondthird
B.hello
C.firstsecond
D.hellothird

正確答案:
D
switch語句時多分支的選擇語句,switch中表達式結果命中那個case,就執行該case子項,如果case子項后沒有跟break語句,則繼續往下執行。
關于該題:先在內部switch的default位置打印hello,緊接著在外部case2中打印third

switch( c )語句中,c不可以是什么類型( )
A.int
B.long
C.char
D.float

正確答案:
D
switch語句中表達式的類型只能是:整形和枚舉類型
D選項為浮點類型,不是整形和枚舉類型

func(1) = ( )

int func(int a)
{int b;switch (a){case 1: b = 30;case 2: b = 20;case 3: b = 16;default: b = 0;}return b;
}

A.30
B.20
C.16
D.0

正確答案:
D
switch的每個case之后如果沒有加break語句,當前case執行結束后,會繼續執行緊跟case中的語句。
func(1)可知,在調用func時形參a的值為1,switch(a)<==>switch(1),case 1被命中,因為該switch語句中所有分支下都沒有增加break語句,因此會從上往下順序執行,最后執行default中語句返回。

break和continue

打印素數
寫一個代碼:打印100~200之間的素數

/*
思路:
素數:即質數,除了1和自己之外,再沒有其他的約數,則該數據為素數,具體方式如下
*///方法一:試除法
int main()
{int i = 0;int count = 0;// 外層循環用來獲取100~200之間的所有數據,100肯定不是素數,因此i從101開始for(i=101; i<=200; i++){//判斷i是否為素數:用[2, i)之間的每個數據去被i除,只要有一個可以被整除,則不是素數int j = 0;for(j=2; j<i; j++){if(i%j == 0)break;}// 上述循環結束之后,如果j和i相等,說明[2, i)之間的所有數據都不能被i整除,則i為素數if(j==i){count++;printf("%d ", i);}}printf("\ncount = %d\n", count);return 0;
}//上述方法的缺陷:超過i一半的數據,肯定不是i的倍數,上述進行了許多沒有意義的運算,因此可以采用如下
// 方式進行優化
// 方法二:每拿到一個數據,只需要檢測其:[2, i/2]區間內是否有元素可以被2i整除即可,可以說明i不是素數
int main()
{int i = 0;//int count = 0;for(i=101; i<=200; i++){//判斷i是否為素數//2->i-1int j = 0;for(j=2; j<=i/2; j++){if(i%j == 0)break;		}//...if(j>i/2){count++;printf("%d ", i);}}printf("\ncount = %d\n", count);return 0;
}/*
方法二還是包含了一些重復的數據,再優化:
如果i能夠被[2, sqrt(i)]之間的任意數據整除,則i不是素數
原因:如果 m 能被 2 ~ m-1 之間任一整數整除,其二個因子必定有一個小于或等于sqrt(m),另一個大于或等于 sqrt(m)。
*/
int main()
{int i = 0;int count = 0;for(i=101; i<=200; i++){//判斷i是否為素數//2->i-1int j = 0;for(j=2; j<=sqrt(i); j++){if(i%j == 0)break;	}//...if(j>sqrt(i)){count++;printf("%d ", i);}}printf("\ncount = %d\n", count);return 0;
}
//方法4
/*
繼續對方法三優化,只要i不被[2, sqrt(i)]之間的任何數據整除,則i是素數,但是實際在操作時i不用從101逐漸遞增到200,因為出了2和3之外,不會有兩個連續相鄰的數據同時為素數
*/
int main()
{int i = 0;int count = 0;for(i=101; i<=200; i+=2){//判斷i是否為素數//2->i-1int j = 0;for(j=2; j<=sqrt(i); j++){if(i%j == 0)break;		}//...if(j>sqrt(i)){count++;printf("%d ", i);}}printf("\ncount = %d\n", count);return 0;
}

打印閏年
打印1000年到2000年之間的閏年

/*
思路:
要求1000年到2000年之間的閏年,只需要知道求解閏年的方法即可。
閏年的條件:如果N能夠被4整除,并且不能被100整除,則是閏年或者:N能被400整除,也是閏年即:4年一潤并且百年不潤,每400年再潤一次
*/#include <stdio.h>
int main()
{int year = 0;for(year=1000; year<=2000; year++){//判斷year是否為閏年if(year%4==0)  // 如果year能夠被4整除,year可能為閏年{if(year%100!=0) // 如果year不能內100整除,則一定是閏年printf("%d ", year);}if(year%400 == 0)  // 每400年再潤一次printf("%d ", year);}return 0;
}
//
//介紹一下這種的簡單寫法
//
int main()
{int year = 0;for(year=1000; year<=2000; year++){if(((year%4==0)&&(year%100!=0))||(year%400==0))printf("%d ", year);}return 0;
}

最大公約數
給定兩個數,求這兩個數的最大公約數
例如:
輸入:20 40
輸出:20

/*
最大公約數:即兩個數據中公共約數的最大者。
求解的方式比較多,暴力窮舉、輾轉相除法、更相減損法、Stein算法算法
此處主要介紹:輾轉相除法思路:
例子:18和24的最大公約數
第一次:a = 18  b = 24  c = a%b = 18%24 = 18循環中:a = 24   b=18
第二次:a = 24   b = 18  c = a%b = 24%18 = 6循環中:a = 18   b = 6
第三次:a = 18   b = 6   c=a%b = 18%6 = 0循環結束
此時b中的內容即為兩個數中的最大公約數。
*/
int main()
{int a = 18;int b = 24;int c = 0;while(c=a%b){a = b;b = c;}printf("%d\n", b);return 0;
}

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

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

相關文章

修改樣式還能影響功能?是的!

最常見的幾種樣式導致按鈕點擊無效的情況&#xff1a; 1. pointer-events: none; &#x1f449; 點擊被徹底屏蔽 癥狀&#xff1a;按鈕完全不能點擊&#xff0c;事件不會觸發。 可能原因&#xff1a;這個樣式讓元素“無法響應鼠標事件”。 button {pointer-events: none; }…

ai決策平臺:AnKo如何推動引領智能化未來?

ai決策平臺&#xff1a;AnKo如何推動引領智能化未來&#xff1f; ai決策平臺正在改變企業運營模式&#xff0c;AnKo作為ai決策平臺的代表&#xff0c;為智能管理提供新方向。借助ai決策平臺&#xff0c;組織在效率與準確性上實現飛躍。ai決策平臺的力量正被廣泛認可。 ai決策…

開疆智能Profient轉ModbusTCP網關連接ABB機器人MODBUS TCP通訊案例

本案例是通過開疆智能Profinet轉ModbusTCP網關將西門子PLC與ABB機器人進行通訊 因西門子PLC采用Profinet協議&#xff0c;而ABB機器人采用的是ModbusTCP通訊。故采取此種方案。 配置過程&#xff1a; 1.MODBUS/TCP基于以太網&#xff0c;故ABB機器人在使用時需要有616-1PCIN…

2089. 找出數組排序后的目標下標——O(n)做法!

本題要求在一個已排序的數組 nums 中&#xff0c;找出所有等于目標值 target 的元素下標。若不存在這樣的元素&#xff0c;則返回 {-1, -1}。解決該問題有兩種主要方法&#xff1a;二分查找法和統計計數法。 二分查找法&#xff1a;首先對數組進行排序&#xff0c;然后通過二分…

pyspark測試樣例

from pyspark.sql import SparkSession from pyspark.sql.functions import col, lit, concat 創建 SparkSession spark SparkSession.builder.appName(“SparkSQLExample”).getOrCreate() 創建 DataFrame&#xff08;可以是從 CSV、JSON 等文件讀取&#xff09; data […

【AWS入門】AWS身份驗證和訪問管理(IAM)

【AWS入門】AWS身份驗證和訪問管理&#xff08;IAM&#xff09; [AWS Essentials] AWS Identity and Access Management (IAM) By JacksonML 眾所周知&#xff0c;AWS亞馬遜云科技位列全球云計算服務第一位&#xff0c;并且持續為廣大客戶提供安全、穩定的各類云產品和服務。…

HarmonyOS NEXT 適配高德地圖FlutterSDK實現地圖展示,添加覆蓋物和移動Camera

HarmonyOS NEXT 適配高德地圖 Flutter SDK 實現地圖展示&#xff0c;添加覆蓋物和移動 Camera 在現代移動應用開發中&#xff0c;地圖功能是許多應用的核心組成部分之一。HarmonyOS NEXT 提供了強大的跨平臺開發能力&#xff0c;而高德地圖 Flutter SDK 則為開發者提供了豐富的…

三鍵標準、多鍵usb鼠標數據格式

三鍵標準usb鼠標數據格式 滾輪上滾 滾輪下滾 鼠標快速上移 鼠標快速右移 鼠標快速左移 鼠標右鍵單擊_抬起 鼠標中鍵單擊_抬起 鼠標左鍵單擊_抬起 鼠標左鍵先按_右鍵再按_同時抬起 鼠標左右鍵同時按下_同時抬起 鼠標左右鍵同時按下_右鍵先抬 多鍵usb鼠標…

軟件架構風格系列(7):閉環控制架構

文章目錄 引言一、閉環控制架構&#xff1a;讓系統學會“自我調節”的魔法&#xff08;一&#xff09;從溫控系統理解核心原理&#xff08;二&#xff09;核心組件解析 二、架構設計圖&#xff1a;閉環控制的“四大核心環節”三、Java實戰&#xff1a;手寫一個智能溫控系統&…

Python中的組合數據類型

一、列表類型 列表是指一系列的按特定順序排列的元素組成。使用[]定義列表&#xff0c;元素與元素之間使用英文的逗號分隔&#xff0c;列表中的元素可以是任意的數據類型。 #直接使用[]創建 lst[hello,world,99.8,100] print(lst)#可以使用內置的list()函數創建列表 lst2list(h…

集合進階2

Java不可變集合、Stream流與方法引用深度解析 一、不可變集合&#xff08;Immutable Collections&#xff09;進階指南 1.1 不可變集合核心特性 防御性編程&#xff1a;防止外部修改數據&#xff08;如傳遞集合給第三方庫時&#xff09;線程安全&#xff1a;天然支持多線程讀…

MySQL企業版免費開啟,強先體驗

近期Oracle突然宣布&#xff0c;MySQL企業版面向開發者免費開放下載&#xff0c;這一消息瞬間引爆DBA圈。作為數據庫領域的“頂配車型”&#xff0c;企業版長期因高昂授權費讓中小團隊望而卻步&#xff0c;如今免費開放無異于“勞斯萊斯開進菜市場”。 本文將深度拆解企業版的…

數據要素及征信公司數據要素實踐

數據要素及征信公司數據要素實踐 1.數據要素的定義與核心特征2.征信公司應用數據要素的實踐路徑3.總結1.數據要素的定義與核心特征 數據要素是數字經濟時代的新型生產要素,指以電子形式存在、通過計算方式參與生產經營活動并創造價值的數據資源。 其核心特征包括: 新型生產…

Golang 范型

引言 Go 從 1.18 開始正式支持泛型&#xff0c;帶來了更強的類型抽象能力&#xff0c;使得我們可以編寫更通用、可復用的代碼。本文檔將介紹下泛型與應用的一些內容 什么是泛型 泛型&#xff08;Generic&#xff09;是一種允許你編寫“參數化類型”的編程方式。你可以將類型…

vue-ganttastic甘特圖label標簽橫向滾動固定方法

這個甘特圖之前插件里&#xff0c;沒有找到能固定label標簽在屏幕上的辦法&#xff0c;用css各種辦法都沒有實現&#xff0c;所以我我直接手寫定位&#xff0c;用js監聽滾動條滾動的距離&#xff0c;然后同步移動甘特圖label標簽&#xff0c;造成一種定位的錯覺&#xff0c;以下…

VS2017編譯openssl3.0.8

openssl是一個功能豐富且自包含的開源安全工具箱。它提供的主要功能有:SSL協議實現(包括SSLv2、SSLv3和TLSv1)、大量軟算法(對稱/非對稱/摘要)、大數運算、非對稱算法密鑰生成、ASN.1編解碼庫、證書請求(PKCS10)編解碼、數字證書編解碼、CRL編解碼、OCSP協議、數字證書驗證、P…

16【架構進階】Flask藍圖與應用工廠模式:構建企業級Web應用的核心技巧

【架構進階】Flask藍圖與應用工廠模式&#xff1a;構建企業級Web應用的核心技巧 前言&#xff1a;為什么應用架構決定項目的天花板&#xff1f; 在Flask開發中&#xff0c;隨著項目規模的擴大&#xff0c;如何組織代碼結構成為決定項目可維護性和擴展性的關鍵因素。單文件應用…

系統架構設計-案例分析總結

系統架構設計-案例分析總結 2024年下半年系統架構設計師案例第1題 2022年下半年系統架構設計師案例第1題第2題 2021年下半年系統架構設計師案例第1題第2題 2024年下半年系統架構設計師案例 題&#xff1a;效用樹可用性中ping/echo策略和心跳策略比較 第1題 閱讀以下關于面向質…

軟件架構風格系列(6):解釋器架構

文章目錄 引言一、從計算器到規則引擎&#xff1a;解釋器架構的核心本質&#xff08;一&#xff09;什么是解釋器架構&#xff1f;&#xff08;二&#xff09;核心組件&#xff1a;構建“語言理解系統”的三駕馬車 二、架構設計圖&#xff1a;從輸入到執行的完整鏈路三、Java實…

Serverless 的未來與進階:持續學習之路

Serverless 的未來與進階&#xff1a;持續學習之路 恭喜你&#xff0c;堅持走到了《輕松入門 Serverless》系列博客的最后一篇&#xff01; 回顧我們的旅程&#xff0c;我們一起&#xff1a; 揭開了 Serverless 的神秘面紗&#xff0c;理解了它的核心思想、關鍵特征以及 Faa…