8-1 統計字符

本題要求編寫程序,輸入10個字符,統計其中英文字母、空格或回車、數字字符和其他字符的個數。

輸入格式:

輸入為10個字符。最后一個回車表示輸入結束,不算在內。

輸出格式:

在一行內按照

letter = 英文字母個數, blank = 空格或回車個數, digit = 數字字符個數, other = 其他字符個數

的格式輸出。

輸入樣例:

aZ &
09 Az

輸出樣例:

letter = 4, blank = 3, digit = 2, other = 1

代碼長度限制

16 KB

時間限制

400 ms

內存限制

64 MB

我的答案:

錯誤答案:

#include<stdio.h>
int main(){char c;//我原本這里定義了字符數組char a[10] int letter=0,blank=0,digit=0,other=0;//寫程序的時候忘寫了 for(int i=0;i<10;i++){//這里我用了scanf("%d",&a[i]);}if(){//這里的條件都忘了而且用的是if嵌套語句 if(){if(){if(){}				}}}
} 

首先,為了解決這個問題,我們需要對輸入的每個字符進行分類。具體來說,我們可以使用以下的策略:

  1. 使用 isalpha() 來檢查字符是否是字母。
  2. 使用 isspace() 來檢查字符是否是空格或換行。
  3. 使用 isdigit() 來檢查字符是否是數字。
  4. 如果字符不滿足上述任何一種情況,那么它就是其他字符。

以下是按照上述策略用 C 和 C++ 實現的代碼:

C語言:

#include <stdio.h>
#include <ctype.h>int main() {char c;int letter = 0, blank = 0, digit = 0, other = 0;for (int i = 0; i < 10; i++) {c = getchar();if (isalpha(c)) {letter++;} else if (isspace(c)) {blank++;} else if (isdigit(c)) {digit++;} else {other++;}}printf("letter = %d, blank = %d, digit = %d, other = %d\n", letter, blank, digit, other);return 0;
}

C++:

#include <iostream>
#include <cctype>
using namespace std;int main() {char c;int letter = 0, blank = 0, digit = 0, other = 0;for (int i = 0; i < 10; i++) {cin.get(c);if (isalpha(c)) {letter++;} else if (isspace(c)) {blank++;} else if (isdigit(c)) {digit++;} else {other++;}}cout << "letter = " << letter << ", blank = " << blank << ", digit = " << digit << ", other = " << other << endl;return 0;
}

這兩個程序都能讀取10個字符,并統計每種字符類型的數量,然后輸出結果。

總結:

反思:

這道題目我暴露了幾個問題

1.是ASCII碼的范圍和使用方式完全忘記

2.如何使用getchar,這道題目我剛開始是想要用字符數組的。

學到了:

1.新的函數幫我檢測輸入字符

  1. 使用 isalpha() 來檢查字符是否是字母。
  2. 使用 isspace() 來檢查字符是否是空格或換行。
  3. 使用 isdigit() 來檢查字符是否是數字

這樣做的好處:

  1. ASCII碼: 對于很多程序員來說,完整記住ASCII碼表是不太現實的。然而,你應該至少熟悉常見的ASCII字符的范圍。例如,數字0-948-57,大寫字母A-Z65-90,小寫字母a-z97-122。不過,在實際編程中,使用標準庫提供的函數(如isalpha(), isdigit()等)更為便捷、安全,且易于閱讀。

  2. getchar的使用: getchar()函數是一個很基礎的從標準輸入讀取單個字符的函數。在處理字符流或需要逐字符處理的情境中,它是非常有用的。當你認為需要使用字符數組或字符串來處理輸入時,考慮使用getchar()可能會使問題簡化。

學到的新知識:

  • isalpha(), isspace(), isdigit(): 這些函數屬于C/C++的標準庫,用于字符分類。它們提供了方便的方式來檢查字符的類型,而不是手動檢查ASCII值。這不僅使代碼更具可讀性,還有助于減少錯誤。

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

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

相關文章

升級指定版本Node.js或npm

一. 下載指定node.js版本Node.js 二. 升級node.js版本 打開電腦cmd 輸入 npm install node18.17.1 -g 三. 升級npm版本 打開電腦cmd 輸入 npm install npm8.1.2 -g

SQL注入之Oracle注入

SQL注入之Oracle注入 7.1 SQL注入之Oracle環境搭建 前言 Oracle Database&#xff0c;又名Oracle RDBMS&#xff0c;或簡稱Oracle。是甲骨文公司的一款關系數據庫管理系統。它是在數據庫領域一直處于領先地位的產品。可以說Oracle數據庫系統是世界上流行的關系數據庫管理系統…

在WordPress站點中展示閱讀量等流量分析數據(超詳細實現)

這篇文章也可以在我的博客中查看 關于本文 專業的流量統計系統能夠相對真實地反應網站的訪問情況。 這些數據可以在后臺很好地進行分析統計&#xff0c;但有時我們希望在網站前端展示一些數據 最常見的情景就是&#xff1a;展示頁面的瀏覽量 這簡單的操作當然也可以通過簡單…

(el-Form)操作(不使用 ts):Element-plus 中 Form 表單組件校驗規則等的使用

Ⅰ、Element-plus 提供的 Form 表單組件與想要目標情況的對比&#xff1a; 1、Element-plus 提供 Form 表單組件情況&#xff1a; 其一、Element-plus 自提供的 Form 代碼情況為(示例的代碼)&#xff1a; // Element-plus 自提供的代碼&#xff1a; // 此時是使用了 ts 語言環…

6.3 社會工程學攻擊

數據參考&#xff1a;CISP官方 目錄 社會工程學攻擊概念社會工程學攻擊利用的人性 “弱點”典型社會工程學攻擊方式社會工程學攻擊防護 一、社會工程學攻擊概念 什么是社會工程學攻擊 也被稱為 "社交工程學" 攻擊利用人性弱點 (本能反應、貪婪、易于信任等) 進…

螢石直播以及回放的接入和銷毀

以下基于vue項目 1.安裝 npm i ezuikit-js 2、導入 main.js中 import EZUIKit from "ezuikit-js"; //導入螢石Vue.use(EZUIKit); 3、創建容器 <div class"video"><div id"video-container"></div><!-- <iframe :src…

棧存儲結構詳解

目錄 棧存儲結構詳解 進棧和出棧 棧的具體實現 棧的應用 什么是隊列&#xff08;隊列存儲結構&#xff09; 棧存儲結構詳解 同順序表和鏈表一樣&#xff0c;棧也是用來存儲邏輯關系為 "一對一" 數據的線性存儲結構&#xff0c;如圖 1 所示。 圖 1 棧存儲結構示意…

HTML5的介紹和基本框架

目錄 HTML5 HTML5介紹 HTML5的DOCTYPE聲明 HTML5基本骨架 html標簽 head標簽 body標簽 title標簽 meta標簽 在vscode中寫出第一個小框架 HTML5 HTML5介紹 HTML5是用來描述網頁的一種語言&#xff0c;被稱為超文本標記語言。用HTML5編寫的文件&#xff0c;后綴以.ht…

設備加密狗

場景描述 隨著科技的飛速發展&#xff0c;越來越多的智能設備走進生產加工車間。例如智能雕刻機、鈑金機、 榫槽機、鉆孔機、磨刀機等等。 目前市場的智能設備具有一個共同的特點&#xff0c;內置嵌入操作系統&#xff0c;如windows或者linux系統。設備制造商提供智能設備出…

20天學會rust(四)常見系統庫的使用

前面已經學習了rust的基礎知識&#xff0c;今天我們來學習rust強大的系統庫&#xff0c;從此coding事半功倍。 集合 數組&可變長數組 在 Rust 中&#xff0c;有兩種主要的數組類型&#xff1a;固定長度數組&#xff08;Fixed-size Arrays&#xff09;和可變長度數組&…

Ajax如何理解

什么是ajax ●認識前后端交互 ○就是 前端 與 后端的 一種通訊方式 ○主要使用的技術棧就是 ajax (async javascript and xml) ●ajax 特點 ○使用 ajax 技術網頁應用能夠快速的將新內容呈現在用戶界面 ○并且不需要刷新整個頁面, 也就是能夠讓頁面有 "無…

Java技術整理(5)—— Spring篇

Spring是一個全面的全面的、企業應用開發一站式的解決方案&#xff0c;貫穿表現層、業務層、持久層。但是 Spring 仍然可以和其他的框架無縫整合。 1、Spring的核心組件 &#xff08;1&#xff09;數據層&#xff1a; JDBC、ORM、OXM、JMS、Transations &#xff08;2&#x…

Flutter 中,ListView 中需要放置 ListView 需要怎么處理才高效?

問題及場景 ListView 是 Flutter 開發者第一個學習到的 Widget&#xff0c;因為它可以滑動。一切都會運行得很好&#xff0c;直到 ListView 中的 Item 本身也是一個 ListView。你可能會看到 Flutter 建議你將內部的 ListView 的ShrinkWrap 屬性設置為 True。雖然錯誤消除了&am…

連續兩年增收不增利,比亞迪電子靠新能源汽車業務再次起飛?

在凈利潤連續兩年下挫之后&#xff0c;比亞迪電子&#xff08;00285.HK&#xff09;終于迎來了好消息。 不久前比亞迪電子發布2023年中期盈利預告顯示&#xff0c;上半年凈利潤同比增加115%-146%&#xff08;2022年上半年的凈利潤顯示6.34億元&#xff09;。 這主要受益于大客…

包管理工具 nvm npm nrm yarn cnpm npx pnpm詳解

包管理工具 nvm npm yarn cnpm npx pnpm npm、cnpm、yarn、pnpm、npx、nvm的區別&#xff1a;https://blog.csdn.net/weixin_53791978/article/details/122533843 npm、cnpm、yarn、pnpm、npx、nvm的區別&#xff1a;https://blog.csdn.net/weixin_53791978/article/details/1…

【Freertos基礎入門】2個Freertos的Delay函數

文章目錄 前言一、vTaskDelay與vTaskDelayUntil二、示例代碼總結 前言 本系列基于stm32系列單片機來使用freerots 任務管理是實時操作系統&#xff08;RTOS&#xff09;的核心功能之一&#xff0c;它允許開發者以并發的方式組織和管理多個任務。FreeRTOS 是一個流行的開源RTO…

嵌入式開發中常用且雜散的命令

1、mount命令 # 掛載linux系統 mkdir /tmp/share mount -t nfs 10.77.66.88:/share/ /tmp/share -o nolock,tcp cd /tmp/share# 掛載Windows系統 mkdir /tmp/windows mount -t nfs 10.66.77.88:/c/public /tmp/windows -o nolock,tcp cd /tmp/windows# 掛載vfat格式的U盤 mkdi…

強訓第32

選擇 D B A A 發送TCP意思應該是已經建立了連接&#xff0c;會超時重傳。在未建立連接的時候&#xff0c;會放棄該鏈接 C A 80端口是http A 交換機攻擊主要有五種&#xff1a;VLAN跳躍攻擊 生成樹攻擊 MAC表洪水攻擊 ARP攻擊 VTP攻擊 B A 2^(32-26)2^(32-27)2^(32-27)128 減去…

基于Java+SpringBoot+Vue+echarts健身房管理系統設計和實現

博主介紹&#xff1a;?全網粉絲30W,csdn特邀作者、博客專家、CSDN新星計劃導師、Java領域優質創作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精彩專…

maven Jar包反向install到本地倉庫

maven Jar包反向install到本地倉庫 需求實現 需求 項目打包時報錯&#xff0c;缺少一個jar包。 但是在maven倉庫都找不到此jar包&#xff0c;其他人提供了這個jar包。 需要把這個jar包install到本地倉庫&#xff0c;使項目能正常打包運行。 實現 使用git bash命令執行以下腳…