C語言————練習題冊(答案版)

目錄

每日更新5-10題,感興趣可以訂閱

一.理解函數、操作符、占位符

1.1 歡迎來到C語言的世界

?1.2 輸入和輸出

1.3 浮點數的打印

1.4 字符串的打印

1.14 I am iron man

1.5 求和運算

1.6 計算比例

1.7 求商求余

1.8 不同數位上的數字

1.8.1 求個位數

1.8.2 求十位數

1.9 地板函數的向下取整

1.10 兩點之間的距離

二.認識訓練循環語句

2.1數組內多組數據的計算求和

2.2 多組數據的輸入,理解while(scanf()!=EOF)

2.2.1 scanf函數詳解



每日更新5-10題,感興趣可以訂閱

一.理解函數、操作符、占位符

1.1 歡迎來到C語言的世界

請在編譯器上編寫一段程序,運行后輸出“Welcome to the world of C language” ,要求光標換行。

考察點:printf 函數和程序啟動的固定代碼 int main()

答案如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <math.h>int main()
{printf("Welcome to the world of C language\n");return 0;
}

除了printf函數外,還有一個函數puts也同樣能實現這個功能,下面表格會對比他們的使用差異

以下為puts函數的使用方式:

//省略了頭文件等相關信息,讀者自行添加
int main()
{puts("Welcome to the world of C language");return 0;
}

?1.2 輸入和輸出

我們懂得如何讓程序輸出一段字符信息,也應該學會如何讓計算機程序了解我們輸入的相關信息。

編寫一段程序,在鍵盤上輸入20后,程序會將20打印出來。

考察點:scanf 和 printf函數的聯合使用

?答案如下:

//省略了頭文件等相關信息,讀者自行添加
int main()
{int n;//此處為變量的聲明,未初始化scanf("%d", &n);//取地址符號不能忘記printf("%d\n", n);return 0;
}

scanf 函數使用時容易出現的bug問題以及解決方法可以見如下文章

C語言————BUG的常見情況(持續更新)-CSDN博客

1.3 浮點數的打印

請輸入一個浮點數x,數值為3.156

考察點:浮點數類型? ?占位符號%f? ?限定占位符的表達形式

答案如下:

//省略了頭文件等相關信息,讀者自行添加
int main()
{float x;//創建變量xscanf("%f", &x);//輸入浮點數printf("%f\n", x);return 0;
}

我們會發現輸出的浮點數,小數點后自然保留了六位,那么我們如果想僅輸出三位的話,可以在f前加上? ?.3? ?達到限制位數的作用

//省略了頭文件等相關信息,讀者自行添加
int main()
{float x;//創建變量xscanf("%f", &x);//輸入浮點數printf("%.3f\n", x);return 0;
}

1.4 字符串的打印

輸入一行字符串s,通過程序代碼將他打印出來,輸入內容為 CrazyThursday

考察點:字符串的占位符??

答案如下:

//省略了頭文件等相關信息,讀者自行添加
int main()
{char str[100];scanf("%s", str);printf("%s", str);return 0;
}

注:使用scanf("%s",str)來讀取字符串時,只會讀取字符串直到遇到第一個空白字符(空格、制表符或換行符)。

1.14 I am iron man

編譯代碼,輸入I am iron man,輸出I am iron man。

考察點:循環語句? ?字符型的讀取??

答案如下:

//省略了頭文件等相關信息,讀者自行添加
int main()
{char x;for (int i = 0; i < 14; i++)//讓編輯器逐步讀取每個字符{scanf("%c", &x);printf("%c", x);//逐個打印}printf("\n");return 0;
}

1.5 求和運算

輸入兩個整數10、20,用代碼打印出他們的和

考察點:算術操作符? 變量的聲明? scanf函數

答案如下:

//省略了頭文件等相關信息,讀者自行添加
int main()
{int a, b;//聲明多個變量時,中間要用,隔開scanf("%d%d", &a, &b);//輸入多個值時,不建議占位符之間加入空格printf("%d", a + b);return 0;
}

1.6 計算比例

在一個班級中,男生56人,女士37人,試計算女生的比例,輸出形式為百分比

考察點:數據類型的選用? 算術操作符? 百分數的轉換? %的打印

答案如下:

//省略了頭文件等相關信息,讀者自行添加
int main()
{int a;float b;//代表男生和女生的數量printf("男生的數量是 ");  scanf("%d", &a);printf("女生的數量是 ");  scanf("%f", &b);float c;//用以計算女生所占的比例c = b / (a + b);//雙目操作符/兩邊的數如果都是整型結果只保留整型部分//只有一方為浮點數,才能輸出浮點類型printf("女生的比例為%f%%\n", c * 100);return 0;
}

1.7 求商求余

輸入兩個整數18 和 7,求他們的商和余

考察點:算是操作符 scanf

答案如下:

//省略了頭文件等相關信息,讀者自行添加
int main()
{int a, b;scanf("%d%d", &a, &b);printf("商為%d\n", a / b);printf("余為%d\n", a % b);return 0;
}

1.8 不同數位上的數字

1.8.1 求個位數

輸入一個數字123,求他的個位數字3并輸出

考察點:算是操作符?

答案如下:

//省略了頭文件等相關信息,讀者自行添加
int main()
{int a;//聲明變量,輸入123scanf("%d", &a);printf("%d", a % 10);return 0;
}

1.8.2 求十位數

輸入一個數字123,求他的十位數字2并輸出

考察點:算是操作符?

答案如下:

//省略了頭文件等相關信息,讀者自行添加
int main()
{int a;//聲明變量,輸入123scanf("%d", &a);a = a / 10;//去除個位上數字printf("%d", a % 10);return 0;
}

?以上兩個例子,我們可以知道一個隨機的整數,如何輸出他們各自數位上的數字,那我們應該如何將他們每個數位上的數字依次打印呢?

輸入123,輸出3? 2??1

考察點:算術操作符和循環語句的總和運用

答案如下:

//省略了頭文件等相關信息,讀者自行添加
int main()
{int a;//聲明變量,輸入123scanf("%d", &a);while (a > 0)//while循環能夠讓a逐漸逼近這個條件{printf("%d ", a % 10);a = a / 10;//更新“個位”,把每一個數位的數字換到個位上}return 0;
}

1.9 地板函數的向下取整

輸入一個整數n如23,求他們開根號的地板函數值

地板函數:對于任意實數x,地板函數[x]表示不大于x的最大整數。簡單來說,就是把實數x向下取整到最接近的整數。

考察點:sqrt函數 數據類型的選擇? ?數據類型的強制轉換

答案如下:

//省略了頭文件等相關信息,讀者自行添加
int main()
{int a;scanf("%d", &a);printf("%d", (int)sqrt(a));//強制類型轉換return 0;
}

俗話說,強扭的?不甜,我們使?強制類型轉換都是萬不得已的時候使?,如果不需要強制類型轉化就能實現代碼,這樣?然更好的。

1.10 兩點之間的距離

輸入兩個點的坐標 (x1,y1)? ?(x2,y2),輸出兩點之間的距離

考察點:sqrt函數? pow函數 數據類型的辨別

答案如下:

//省略了頭文件等相關信息,讀者自行添加
int main()
{int x1, y1;//聲明坐標,輸入坐標scanf("%d%d", &x1, &y1);int x2,y2;scanf("%d%d", &x2, &y2);float de;//代表兩點之間的距離de = sqrt(pow((x1 - x2), 2) + pow((y1 - y2), 2));printf("%f", de);return 0;
}

?注:pow和sqrt返回的數值類型均為浮點型double

二.認識訓練循環語句

2.1數組內多組數據的計算求和

給定一個數字3,確認含有3組數據,每組中有2個數字,隨后輸入這6個數字,分別計算每組的數字之和,并分別輸入,示例如下:

輸入2\n
23
45
輸出5\n
9\n

考察點:二維數組的元素類型? 循環語句的初步使用 多組數據的輸入

答案如下:

//省略了頭文件等相關信息,讀者自行添加
int main() {int i = 0;int j = 0;scanf("%d",&i);int arr[i][2];for(j = 0;j < i;j ++){scanf("%d %d",&arr[j][0],&arr[j][1]);printf("%d\n",arr[j][0] + arr[j][1]);}return 0;
}

2.2 多組數據的輸入,理解while(scanf()!=EOF)

2.2.1 scanf函數詳解

int scanf ( const char * format, ... );這是scanf函數的調用形式以及聲明,他的使用需要包含頭文件<stdio.h>,他是用來讀取我們鍵盤輸入的信息,他的使用語法與我們常用的printf類似,第一個參數都是格式化字符串。

在scanf函數的格式化字符串中,需要包含一定的占位符,而占位符數量的多少,就決定了后續參數的個數,在這里我們需要特別注意,用以替換占位符的參數形式是以地址的樣式體現的,我們需要用到一個重要的操作符————&(取地址操作符);因為scanf()傳遞的不是值,而是一個地址,即將變量i的地址指向用戶輸入的值。

:如果這里的變量是指針變量(如字符串變量),那就不用加&。

scanf()處理用戶輸入的原理是,用戶的輸入會被放入緩存區,等到按下回車鍵后,按照占位符對緩存區進行解讀。

解讀用戶輸入時,會從上一次解讀遺留的第一個字符開始,直到讀完緩存,或者遇到第一個不符合條件的字符位置。

scanf()在處理數值占位符時,會自動過濾空白字符,包括空格制表符換行符等。

#include <stdio.h>
int main()
{int x;float y;// ??輸? " -13.45e12# 0"scanf("%d%f", &x, &y);return 0;
}

可以想想上述代碼最終輸出的x? 和? y的值,int決定了x為整型類型,根據上述對scanf()的描述,解讀會停留在小數點位置,導致x=-13,隨后開始讀取浮點數y,解讀會從小數點開始(類似.45這樣的形式會被默認為0.45),遇到e12后,會識別為科學技術法,那么我們可以知道y = 0.45 * 10^12

我們可以發現,他的結束需要返回int類型,那么這個整型應該如何計算呢?

scanf()返回的整型數值代表他所成功讀取的數據個數

如果沒有讀取任何項,或者匹配失敗,則會返回0;

如果在成功讀取任何數據之前,發生了讀取錯誤或者遇到讀取文件到結尾的情況,則返回常量EOF(-1)。

EOF - end of file 文件結束標志

———————————————————————————————————————————

利用上述知識,我們繼續講解對while嵌套scanf的連續輸入。

while(scanf() != EOF),根據里面的判斷條件,我們知道只有當scanf在讀取中發生錯誤或者讀取到文件 的結尾時,這個循環才會結束,由此我們可以實現連續輸入多組數據,處理多組數據的任務。那么接下來我們解決下面的題目:

輸入多組兩個整數的數據,依次分別計算兩個整數之和,當和為0時則停止計算,結束輸入。

考察點:while語句和scanf的嵌套使用? break在循環語句里的使用

答案如下:

//省略了頭文件等相關信息,讀者自行添加
int main()
{int a,b;//定義輸入變量a,bwhile(scanf("%d%d",&a,&b) != EOF)
{if(a + b )
printf("%d",a + b);
else
break;
}
return 0;
}

_____________________________________________________________________________

持續更新中.........................................................................................................................................

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

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

相關文章

haproxy配置詳解

1、haproxy簡介 HAProxy是法國開發者 威利塔羅(Willy Tarreau) 在2000年使用C語言開發的一個開源軟件 是一款具備高并發(萬級以上)、高性能的TCP和HTTP負載均衡器 支持基于cookie的持久性&#xff0c;自動故障切換&#xff0c;支持正則表達式及web狀態統計 企業版網站&#xff…

計網-TCP可靠傳輸

TCP&#xff08;傳輸控制協議&#xff09;的可靠傳輸是通過一系列機制保證數據準確、有序、不丟失地到達接收方。以下是TCP可靠傳輸的詳細過程及核心機制&#xff1a;1. 數據分塊與序列號&#xff08;Seq&#xff09;分塊&#xff1a;應用層數據被分割成適合傳輸的TCP報文段&am…

數智管理學(三十九)

第三章 數智化對管理理論的沖擊第三節 系統理論與生態化管理的強化系統理論作為理解企業運作與環境互動的重要框架&#xff0c;一直強調企業是一個由多個相互關聯子系統構成的整體&#xff0c;其核心要素包括整體性、開放性、動態性和反饋機制。在傳統管理視角下&#xff0c;這…

哈希表(c語言)

文章目錄哈希表哈希表知識點哈希表概念負載因子哈希表的優缺點哈希沖突哈希函數常見哈希函數處理哈希沖突開放定址法線性探測二次探測鏈地址法哈希表的實現哈希表的核心:HashMap核心函數&#xff1a;從創建到銷毀創建哈希表&#xff1a;hashmap_create()銷毀哈希表:hashmap_des…

【Canvas與旗幟】條紋版大明三辰旗

【成圖】【代碼】<!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>十三條紋版大明三辰旗 Draft1</title><style type"text/…

【Java】空指針(NullPointerException)異常深度攻堅:從底層原理到架構級防御,老司機的實戰經驗

寫Java代碼這些年&#xff0c;空指針異常&#xff08;NullPointerException&#xff09;就像甩不掉的影子。線上排查問題時&#xff0c;十次有八次最后定位到的都是某個對象沒處理好null值。但多數人解決問題只停留在加個if (obj ! null)的層面&#xff0c;沒從根本上想過為什么…

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - 主頁-評論用戶時間占比環形餅狀圖實現

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程&#xff0c;持續更新中&#xff0c;計劃月底更新完&#xff0c;感謝支持。今天講解主頁-評論用戶時間占比環形餅狀圖實現 視頻…

Redis面試精講 Day 5:Redis內存管理與過期策略

【Redis面試精講 Day 5】Redis內存管理與過期策略 開篇 歡迎來到"Redis面試精講"系列的第5天&#xff01;今天我們將深入探討Redis內存管理與過期策略&#xff0c;這是面試中經常被問及的核心知識點。對于后端工程師而言&#xff0c;理解Redis如何高效管理內存、處…

ICMPv6報文類型詳解表

一、錯誤報文類型&#xff08;Type 1-127&#xff09;Type值名稱Code范圍觸發條件示例典型用途1Destination Unreachable0-60: 無路由到目標1: 通信被管理員禁止2: 地址不可達3: 端口不可達4: 分片需要但DF標志設置5: 源路由失敗6: 目的地址不可達網絡故障診斷2Packet Too Big0…

配置nodejs

第一步確認 node.exe 和 npm 存在 例如安裝目錄D:\nodejs檢查是否存在以下文件&#xff1a; node.exenpm.cmdnpx.cmd 第二步&#xff1a;添加環境變量 PATH 圖形化操作步驟&#xff08;Windows&#xff09;&#xff1a; 右鍵「此電腦」→「屬性」點擊左側 「高級系統設置」彈出…

MySQL的命令行客戶端

MySQL中的一些程序&#xff1a;MySQL在安裝完成的時候&#xff0c;一般都會包含如下程序&#xff1a;在Linux系統下&#xff0c;通過/usr/bin目錄下&#xff0c;可以通過命令查看&#xff1a;以下是常用的MySQL程序&#xff1a;程序名作用mysqldMySQL的守護進程即MySQL服務器&a…

C# 值類型與引用類型的儲存方式_堆棧_

目錄 值類型 引用類型 修改stu3的值 stu也被修改了 為什么? &#xff08;對象之間&#xff09; 值類型中&#xff0c;值全在棧中單獨存儲&#xff0c;變量之間不會影響 結構體中&#xff0c;結構體全在棧中&#xff0c;結構體與結構體之間也不會相互影響 靜態資源區 值類…

解鎖永久會員的白噪音軟件:睡眠助手

如今的年輕人壓力普遍較大&#xff0c;學會解壓至關重要。這期就為大家推薦一款優秀的白噪音軟件&#xff0c;在壓力大時聽聽&#xff0c;能起到不錯的解壓效果。 睡眠助手 文末獲取 這款軟件的特別版本十分出色&#xff0c;知曉的人不多。它已解鎖永久會員&#xff0c;無需登…

uniapp使用css實現進度條帶動畫過渡效果

一、效果 二、實現原理 1.uni.createAnimation 動畫函數 2.初始化uni.createAnimation方法 3.監聽值的變化調用動畫執行方法 三、代碼 1.實現方式比較簡單&#xff0c;目前是vue3的寫法&#xff0c;vue2只需要稍微改動即可 <template><view class"layout_progre…

高級分布式系統調試:調試的科學與 USE 方法實戰

高級分布式系統調試:調試的科學與 USE 方法實戰 前言:從“救火”到“探案” 當一個復雜的分布式系統出現“灰色故障”——例如“服務有時會變慢”、“偶爾出現超時錯誤”——我們該從何處著手?隨機地查看 Grafana 儀表盤,或者漫無目的地 tail -f 日志,往往效率低下,甚至…

棧算法之【有效括號】

目錄 LeetCode-20題 LeetCode-20題 給定一個只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判斷字符串是否有效。 有效字符串需滿足&#xff1a; 左括號必須用相同類型的右括號閉合。 左括號必須以正確的順序閉合。 每…

大模型——Data Agent:超越 BI 與 AI 的邊界

Data Agent:超越 BI 與 AI 的邊界 1. 數據工具的演進路徑 在數據分析領域,技術工具經歷了多個階段的演進。這些演進不僅反映了技術的進步,也體現了用戶需求和使用場景的變化。 Excel 時代:告別手工作業,陷入“表格泥潭“,早期數據分析依賴 Excel,實現基礎數據記錄、計…

數據空間技術在智慧水庫管理平臺中的賦能

數據空間技術在智慧水庫管理平臺中的賦能&#xff1a;設備到應用的數據傳輸優化 數據空間技術為智慧水庫管理平臺提供了革命性的數據傳輸、處理和安全保障能力。以下是數據空間技術在設備到應用數據傳輸過程中的全面賦能方案&#xff1a; 數據空間賦能架構設計 #mermaid-svg-R2…

SpringBoot學習路徑二--Spring Boot自動配置原理深度解析

SpringBoot最核心的功能就是自動裝配&#xff0c;Starter作為SpringBoot的核心功能之一&#xff0c;基于自動配置代碼提供了自動配置模塊及依賴的能力&#xff0c;讓軟件集成變得簡單、易用。使用SpringBoot時&#xff0c;我們只需引I人對應的Starter&#xff0c;SpringBoot啟動…

音視頻中一些常見的知識點

1. GCC是如何進行帶寬評估的 GCC(Google Congestion Control)是一種專為實時音視頻傳輸設計的擁塞控制算法,它主要通過發送端和接收端的協同工作來進行帶寬評估。具體過程如下: 接收端處理 計算延遲梯度:接收端通過統計數據包到達時間的變化,即RTT(往返時間)波動,來計…