当前位置: 首页 > news >正文

C语言刷题(3)——“C”

各位CSDN的uu们你们好呀,今天小雅兰的内容还是做几道题噢,好好复习一下之前的知识点,现在,就让我们开始复习吧

牛客网在线编程_编程学习|练习题_数据结构|系统设计题库

倒置字符串_牛客题霸_牛客网


BC40 竞选社长

BC41 你是天才吗?

BC42 完美成绩

BC43 及格分数

BC44 判断整数奇偶性

BC45 最高分数

BC46 判断是元音还是辅音

BC47 判断是不是字母

BC48 字母大小写转换

BC49 判断两个数的大小关系

BC50 计算单位阶跃函数

BC51 三角形判断

BC52 衡量人体胖瘦程度

BC53 计算一元二次方程

BC54 获得月份天数

OR62 倒置字符串


 

 

此代码用到了gets这个库函数 

#include<stdio.h>
int main()
{char buf[100] = { 0 };//输入gets(buf);int count_a = 0;int count_b = 0;int i = 0;while (buf[i] != '0'){if (buf[i] == 'A'){count_a++;}else if (buf[i] = 'B'){count_b++;}i++;}if (count_a > count_b){printf("A\n");}else if (count_a < count_b){printf("B\n");}else if(count_a==count_b){printf("E\n");}return 0;
}

这段代码还可以再改进一下,可不可以不定义两个变量呢?这当然也是可以的。

#include<stdio.h>
int main()
{char arr[100]= { 0 };gets(arr);int i = 0 ;int flag = 0 ;while( arr[i] != '0'){if(arr[i] =='A'){flag++;}else if(arr[i] =='B'){flag--;}i++;}if (flag > 0){printf("A");}else if (flag < 0){printf("B");}else{printf("E");}return 0;
}

那么只定义一个变量的方法我们也掌握了,那么,还有没有其他的写法呢?比如不用gets,这当然也是可以的。

下面这段代码使用了getchar

 

getchar拓展_认真学习的小雅兰.的博客-CSDN博客

#include <stdio.h>int main()
{char arr[100] = { 0 };int ch = 0 ;int flag = 0 ;//如果getchar获取了while (((ch= getchar()) != '0') && ch!= EOF){if(ch=='A'){flag++;}else if(ch=='B'){flag--;}}if (flag > 0){printf("A");}else if (flag < 0){printf("B");}else{printf("E");}return 0;
}

1. 本题有很多解法。

2. 主要就是读取输入数据的问题要解决好,输入有2个结束条件(遇到读取结束EOF,或者'0')。

3. 剩余的工作就是统计个数后,然后根据情况按照格式输出。

 

#include <stdio.h>
int main() 
{int a=0;while(scanf("%d",&a)!=EOF){if(a>=140){printf("Genius\n");}else{printf("不是天才\n");}}return 0;
}

这个代码还有另外一种写法:

#include<stdio.h>
int main()
{int n = 0;//这种写法是因为scanf读取失败返回EOF,EOF是-1,所以按位取反后的结果是0,0为假,可以让循环停止。while (~scanf("%d", &n)){if (n >= 140){printf("Genius");}else{printf("不是天才\n");}}return 0;
}

关于对组输入的题目,一定要处理好多组数据的输入问题,然后考虑循环如何结束。

这里写到了一个操作符—— ~ 

 操作符的详细知识可以看小雅兰的博客噢

操作符——“C”_认真学习的小雅兰.的博客-CSDN博客_十进制数10可以表示为

整型提升+算术转换——“C”_认真学习的小雅兰.的博客-CSDN博客

#include <stdio.h>int main()
{int score = 0;while (scanf("%d", &score) != EOF){if (score >= 90 && score <= 100)printf("Perfect");}return 0;
}

1. 多组输入。

2. 数学中的 90的写法,在C语言中直接写是有bug的。

 

#include <stdio.h>int main()
{int score = 0;while (scanf("%d", &score) != EOF){if (score >= 60)printf("Pass\n");elseprintf("Fail\n");}return 0;
}

#include <stdio.h>int main() 
{int i=0;while(scanf("%d",&i)!=EOF){if(i%2==0)printf("Even\n");else if(i%2!=0)printf("Odd\n");}return 0;
}

 这几道题目都是类似的。

 

#include<stdio.h>
int main()
{int n1 = 0;int n2 = 0;int n3 = 0;while (scanf("%d %d %d", &n1, &n2, &n3) != EOF){int max = n1 > n2 ? n1 : n2;max = max > n3 ? max : n3;printf("%d\n", max);}return 0;
}

另一种写法:

#include <stdio.h>int main()
{int i = 0;int score[3] = { 0 };while (scanf("%d %d %d", &score[0], &score[1], &score[2]) != EOF){int max = 0;//每一组测试,max都恢复到0int i = 0;for (i = 0; i < 3; i++){if (score[i] > max)max = score[i];}printf("%d\n", max);}return 0;
}

1. 多组输入

2. 每组输入接受3个数字,求出最大值,因为成绩不能是负数,所以假设max期初是0.

 

#include <stdio.h>int main()
{char ch = 0;//存放元音字母的数组char arr[] = "AEIOUaeiou";//输入while ((ch = getchar()) != EOF){//判断int i = 0;for (i = 0; i < 10; i++){if (ch == arr[i]){printf("Vowel\n");break;}}if (i == 10)printf("Consonant\n");getchar();//去除每个字符后的\n}return 0;
}

当然,这个代码还可以用库函数——strchr

 

#include<stdio.h>
#include<string.h>
int main()
{int ch = 0;//存放元音字母的数组char vowel[] = "AEIOUaeiou";//输入while (ch = getchar() != EOF){//判断//strchr是用来判断ch是否在字符串vowel中出现//如果出现了,则返回在vowel字符串中的地址//如果没出现,则返回NULLif (strchr(vowel, ch)){printf("Vowel\n");}else{printf("Constantly\n");}getchar();//处理\n}return 0;
}

另一种写法:

#include <stdio.h>int main()
{char ch = 0;char arr[] = "AEIOUaeiou";//在%c的前面写一个空格会消化掉前面所有的空白字符,然后读取一个字符while (scanf(" %c", &ch) != EOF){int i = 0;for (i = 0; i < 10; i++){if (ch == arr[i]){printf("Vowel\n");break;}}if (i == 10)printf("Consonant\n");}return 0;
}

另一种写法:

#include<stdio.h>
int main()
{char ch = 0;char arr[] = "AEIOUaeiou";//在%c的后边发给一个'\n',其实在输入时候就会消化掉这个\n字符//不会为下次留下空白字符的隐患while (scanf("%c\n", &ch) != EOF){int i = 0;for (i = 0; i < 10; i++){if (ch == arr[i]){printf("Vowel\n");break;}}if (i == 10)printf("Consonant\n");}return 0;
}

#include <stdio.h>int main()
{int ch = 0;while ((ch = getchar()) != EOF){if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')){printf("%c is an alphabet.\n", ch);}else{printf("%c is not an alphabet.\n", ch);}//清理掉\ngetchar();}return 0;
}

当然,也可以用库函数,专门用来判断是不是字母——isalpha

#include <stdio.h>int main()
{int ch = 0;while ((ch = getchar()) != EOF){if (isalpha(ch)){printf("%c is an alphabet.\n", ch);}else{printf("%c is not an alphabet.\n", ch);}//清理掉\ngetchar();}return 0;
}

 

#include <stdio.h>
#include<ctype.h>
int main()
{int ch = 0;while ((ch = getchar()) != EOF){if (isalpha(ch)){printf("%c is an alphabet.\n", ch);}else{printf("%c is not an alphabet.\n", ch);}//清理掉\ngetchar();}return 0;
}

 

 

 

#include<stdio.h>
int main()
{char ch = 0;while (scanf("%c", &ch) != EOF){if (ch >= 'A' && ch <= 'Z'){printf("%c\n", ch + 32);}else if (ch >= 'a' && ch <= 'z'){printf("%c\n",ch - 32);}}return 0;
}

当然,还有其他的写法,这里可以用到我们的库函数——islower,是专门用来判断小写字母的。

toupper——将小写字母转换为大写字母

tolower——将大写字母转换为小写字母

isupper——专门用来判断大写字母

 

 

 

 

 

#include<stdio.h>
#include<ctype.h>
int main()
{int ch = 0;//多组输入while ((ch = getchar()) != EOF){if (islower(ch)){printf("%c\n", toupper(ch));}else{printf("%c\n", tolower(ch));}//处理'\n'getchar();}return 0;
}

 

#include <stdio.h>int main()
{int i=0;int j=0;while(scanf("%d %d",&i,&j)!=EOF){if(i>j){printf("%d>%d",i,j);}else if(i==j){printf("%d=%d",i,j);}else if(i<j){printf("%d<%d",i,j);}printf("\n");}return 0;}

 

#include<stdio.h>int main()
{int t = 0;while (scanf("%d", &t) != EOF){if (t > 0){printf("%d\n", 1);}else if (t == 0){printf("%.1f\n", 0.5f);}else{printf("%d\n", 0);}}return 0;
}

#include <stdio.h>int main() 
{int a=0;int b=0;int c=0;while(scanf("%d %d %d",&a,&b,&c)!=EOF){if(a+b>c&&a+c>b&&b+c>a&&a-b<c&&a-c<b&&b-c<a){if(a==b&&b==c&&a==c){printf("Equilateral triangle!\n");}else if((a==b&&b!=c&&a!=c)||(a==c&&a!=b&&c!=b)||(b==c&&b!=a&&c!=a)){printf("Isosceles triangle!\n");}else {printf("Ordinary triangle!\n");}}else {printf("Not a triangle!\n");}}return 0;
}

 这里就是搞清楚三角形的判断规则,并去一一穷举就行了,因为只有三条边。

#include<stdio.h>
int main()
{float weight = 0.0;float hight = 0.0;while (scanf("%f %f", &weight, &hight) != EOF){float bmi = weight / (hight * hight / 100 / 100);if (bmi < 18.5){printf("Underweight\n");}else if (bmi >= 18.5 && bmi <= 23.9){printf("Normal\n");}else if (bmi > 23.9 && bmi <= 27.9){printf("Overweight\n");}else{printf("Obese\n");}}return 0;
}

1. 多组输入

2. 浮点数除法要保证除号的两端至少有一个浮点数

 

 

#include <stdio.h>
#include <math.h>int main()
{float a = 0.0;float b = 0.0;float c = 0.0;while (scanf("%f %f %f", &a, &b, &c) != EOF){if (a != 0){float disc = b * b - 4 * a * c;if (disc > 0.0){//有两个不相等的实根printf("x1=%.2f;x2=%.2f\n",(-b - sqrt(disc)) / (2 * a),(-b + sqrt(disc)) / (2 * a));}else if (disc < 0.0){//有两个虚根printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n",(-b) / (2 * a), sqrt(-disc) / (2 * a),(-b) / (2 * a), sqrt(-disc) / (2 * a));}else{//有两个相等的实根printf("x1=x2=%.2f\n", (-b) / (2 * a));}}else{printf("Not quadratic equation\n");}}return 0;
}

1. 多组输入

2. 根据不同的限制条件给出相应的计算结果

3. 小数点数后位数有限制

 

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

1. 多组输入

2. 判断闰年,如果是闰年,2月多一天,其他都正常。

 

#include<stdio.h>
#include<string.h>
#include<assert.h>
void reverse(char* left, char* right)
{assert(left != NULL);assert(right != NULL);while (left < right){char* tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
int main()
{char arr[100] = { 0 };gets(arr);//输入int len = strlen(arr);//求字符串的长度//1.逆序整个字符串reverse(arr, arr + len - 1);//2.逆序每个单词char* cur = arr;while (*cur){//找一个单词char* start = cur;while (*cur != ' ' && *cur != '\0'){cur++;//遇到空格,说明走到一个单词的最后面//遇到\0,说明已经走到字符串的最后面//这两种情况下都需要cur++}reverse(start, cur - 1);if (*cur == ' '){cur++;//跳过空格}}printf("%s\n", arr);return 0;
}

好啦,小雅兰今天的复习内容就到这里啦,以后的内容必定更加精彩!!!

 

相关文章:

C语言刷题(3)——“C”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰的内容还是做几道题噢&#xff0c;好好复习一下之前的知识点&#xff0c;现在&#xff0c;就让我们开始复习吧 牛客网在线编程_编程学习|练习题_数据结构|系统设计题库 倒置字符串_牛客题霸_牛客网 BC40 竞选社长 BC41 你是天才…...

搭建Vue工程

搭建Vue工程 localhost 127.0.0.1 域名 IP 192.168.0.28 联网IP 最后都会渲染到一个页面里面&#xff0c;有多少个页面就有多少个页面模板。 vue里面改webpack配置 vue.config.js 配置参考 | Vue CLI /assets /api* 开发的时候用到的请求后台地址 和 项目真实部署上线的时候 请…...

C语言汉诺塔问题【图文详解】

汉诺塔1. 什么是汉诺塔2. 有关汉诺塔的有趣故事3. 利用动画来演示汉诺塔4. 如何用C语言实现汉诺塔1. 什么是汉诺塔 源于印度古老传说的益智玩具 汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;又称河内塔&#xff0c;是一个源于印度古老传说的益智玩具。大梵天创造…...

1、RocketMQ概述

文章目录1 MQ概述1.1 MQ简介1.2 MQ用途1.3 常见MQ产品1.4 MQ常见协议2 RocketMQ概述2.1 RocketMQ简介2.2 RocketMQ发展历程尚硅谷RocketMQ教程-讲师&#xff1a;Reythor雷&#xff08;老雷&#xff09; 我们缺乏的不是知识&#xff0c;而是学而不厌的态度 1 MQ概述 1.1 MQ简介…...

【POJ 3352】Road Construction 题解(Tarjan算法求边双连通分量缩点)

描述 现在几乎是夏天&#xff0c;这意味着几乎是夏天的施工时间&#xff01;今年&#xff0c;负责偏远岛热带岛屿天堂道路的好心人希望修复和升级岛上各个旅游景点之间的各种道路。 道路本身也很有趣。由于岛上的奇怪风俗&#xff0c;道路的安排使得它们不会在交叉路口相遇&…...

Python—单分支结构

&#xff08;1&#xff09;if分支语句 Python中if语句的语法结构&#xff1a; if <条件表达式>&#xff1a;    满足条件运行的代码1    满足条件运行的代码2 代码示例&#xff1a; age 12 if age > 18:print(去上网)if 1 1 2 and :print(我满足条件了)if 1 …...

rabbitmq添加用户,虚拟机步,设置rabbitmq配置文件

第一步&#xff0c;登录后台控制页面 http://ip:15672第二步&#xff0c;添加用户和权限 重点&#xff1a;选择Admin和Users 第三步&#xff0c;添加虚拟机 点击侧边的Virtual Hosts 第四步将虚拟机和用户搭配 注意新建好后&#xff0c;在虚拟机列表中&#xff0c;点击虚拟机…...

Codeforces Round#853 div2 A-C

Codeforces Round#853 div2 A-C 等了很久终于迎来了一场cf比赛&#xff0c;白天出去玩了一圈&#xff0c;晚上回来打比赛&#xff0c;这次只出了A,B题。C题思路很巧妙&#xff0c;赛时没做出来&#xff0c;看了大佬学习到了&#xff0c;还是很不错。 A.Serval and Mocha’s A…...

软考之操作系统知识

目录 1.进程管理-进程的概念 2.进程的三态图和五态图 3.进程的同步与互斥 4.PV操作应用 5.死锁问题 6.银行家算法 7.存储管理 8.段式存储组织 9.段页式存储组织 10.页面置换算法 11.磁盘管理 12.作业管理 13.索引文件结构 14.树型目录结构 15.空闲存储空间管理 …...

【线性代数/计算复杂性理论】积和式的指数时间算法:Ryser算法

文章目录一、积和式的定义二、Ryser算法三、代码实现一、积和式的定义 积和式&#xff08;permanent&#xff09;是一种和行列式长得很像的矩阵函数。在介绍积和式之前&#xff0c;我们先看看行列式&#xff08;determinant&#xff09;的定义。 首先需要引入“排列”&#x…...

代码随想录 NO52 | 动态规划_leetcode 647. 回文子串 516.最长回文子序列

动态规划_leetcode 647. 回文子串 516.最长回文子序列今天是动态规划最后一天的题了&#xff0c;整个过程已经接近尾声了&#xff01; 647. 回文子串 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 本题如果我们定义&#xff0c;dp[i] 为 下标i结尾的字符串有 dp…...

【数据挖掘】1、综述:背景、数据的特征、数据挖掘的六大应用方向、有趣的案例

目录一、背景1.1 学习资料1.2 数据的特征1.3 数据挖掘的应用案例1.4 获取数据集1.5 数据挖掘的定义二、分类三、聚类四、关联分析五、回归六、可视化七、数据预处理八、有趣的案例8.1 隐私保护8.2 云计算的弹性资源8.3 并行计算九、总结一、背景 1.1 学习资料 推荐书籍如下&a…...

【架构师】零基础到精通——康威定律

博客昵称&#xff1a;架构师Cool 最喜欢的座右铭&#xff1a;一以贯之的努力&#xff0c;不得懈怠的人生。 作者简介&#xff1a;一名Coder&#xff0c;软件设计师/鸿蒙高级工程师认证&#xff0c;在备战高级架构师/系统分析师&#xff0c;欢迎关注小弟&#xff01; 博主小留言…...

Could not extract response: no suitable HttpMessageConverter

版本&#xff1a;spring-cloud-openfeign-core-2.1.1.RELEASE.jar&#xff0c;spring-webmvc-5.1.14.RELEASE.jar&#xff0c;jetty-server-9.4.41.v20210516.jar&#xff0c;tomcat-embed-core-9.0.48.jar 问题背景 生产服务请求下游服务时偶发抛出下面的异常&#xff0c;下…...

文献计量三大定律之一---洛特卡定律及普赖斯定律

科学生产率是洛特卡定律的基础&#xff0c;科学生产率”(Scientific Productivity)&#xff09;是指科学家&#xff08;科研人员&#xff09;在科学上所表现出的能力和工作效率&#xff0c;通常用其生产的科学文献的数量来衡量。 1926年&#xff0c;洛特卡在一篇论文中提出了科…...

2023年软考高级网络规划设计师

网络规划设计师是软考高级考试科目之一&#xff0c;也是比较难的科目&#xff0c;据官方数据统计网规每年的通过率很低&#xff0c;而且每年只有下半年11月份考一次&#xff0c;如果是直接裸考&#xff0c;估计很悬哦~ 但是你参加考试获得证书的过程就是一个学习网络规划系统知…...

数据治理驱动因素 -报考题

数据治理并不是到此为止&#xff0c;而是需要直接与企业战略保持一致。数据治理越显著地帮助解决组织问题&#xff0c;人们越有可能改变行为、接受数据治理实践。数据治理的驱动因素大多聚焦于减少风险或者改进流程。&#xff08;1&#xff09;减少风险1&#xff09;一般性风险…...

2023淘宝天猫38节红包满减优惠活动时间是从几月几号什么时候开始?

2023年淘宝天猫38节活动将于2023年3月2日中午12点正式开始&#xff0c;活动将持续至2023年3月8日晚上23点59分。届时&#xff0c;淘宝天猫将推出一系列的优惠活动和红包福利&#xff0c;为广大女性用户送上节日的祝福和福利。在这个特别的节日里&#xff0c;淘宝天猫为女性用户…...

Hive表优化、表设计优化、Hive表数据优化(ORC)、数据压缩、存储优化

文章目录Hive表优化Hive表设计优化分区表结构 - 分区设计思想分桶表结构 - Join问题Hive中的索引Hive表数据优化常见文件格式TextFileSequenceFileParquetORC数据压缩存储优化 - 避免小文件生成存储优化 - 合并输入的小文件存储优化 - ORC文件索引Row Group IndexBloom Filter …...

LearnOpenGL-入门-着色器

本人刚学OpenGL不久且自学&#xff0c;文中定有代码、术语等错误&#xff0c;欢迎指正 我写的项目地址&#xff1a;https://github.com/liujianjie/LearnOpenGLProject LearnOpenGL中文官网&#xff1a;https://learnopengl-cn.github.io/ 文章目录着色器GLSL数据类型输入与输…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...