c刷题(四)

获得月份天数

获得月份天数_牛客题霸_牛客网

这道题可以用switch case语句解,不过这道题更简单的方法是数组,关键点在于判断是否为闰年。 

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<assert.h>
int year_run(int n)
{if (((n % 4 == 0) && n % 100 != 0)||(n % 400 == 0))return 1;elsereturn 0;
}
int main()
{int y = 0;int m = 0;int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; while(scanf("%d%d", &y, &m) != EOF)//多组输入{assert(m>0&&m<13);//断言int day = days[m];if(year_run(y) && m==2)day++;printf("%d\n",day);}return 0;
}

 判断闰年和2月可以合并成一条语句用&&操作符连结,将数组下标0设置成0与月份对应,也可以添加断言是程序更加健壮。

判断字母

判断是不是字母_牛客题霸_牛客网

在用getchar或scanf读取字母的时候,我们的回车键(\n)会被保存下来,导致输出错误结果。所以这道题的关键是清理\n

#include <stdio.h>int main ()
{int ch=0;while(scanf("%c\n",&ch)!=EOF)
//while(ch = getchar() !=EOF)//读取失败返回-1{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);}//getchar();}
return  0;
}

字母大小写转换 

 字母大小写转换_牛客题霸_牛客网

利用ascii码的一一映射关系解决,也可以使用c语言的库函数——toupper(转大写)tolower(转小写)来转化。

#include <stdio.h>int main() {char ch;while (scanf("%c", &ch) != EOF) { //加\n会使结果错位if (ch <= 'z' && ch >= 'a')printf("%c\n", ch - 32);if (ch <= 'Z' && ch >= 'A')//其他字符忽略掉了题目没做要求printf("%c\n", ch + 32);//不排除其他字符getchar();//去\n}return 0;
}
//库函数
#include<ctype.h>
#include <stdio.h>int main()
{int ch = 0;while((ch=getchar()) != EOF){if(islower(ch))//判断小写函数{printf("%c\n", toupper(ch));}else{printf("%c\n", tolower(ch)); }getchar();}return 0;
}

别忘了清理缓冲区!

网购

网购_牛客题霸_牛客网

并不难,主要是想分享用0和1表示优惠券这个妙处,省去了多余的判断。

#include <stdio.h>int main() {double p;int m, n,discount;scanf("%lf %d %d %d", &p, &m, &n, &discount);if (m == 11 && n == 11){p = p * 0.7 - discount * 50;}else if(m == 12 && n == 12)p = p * 0.8 - discount * 50;if (p < 0)p = 0;printf("%.2lf", p);return 0;
}

下列程序段的输出结果

unsigned long pulArray[] = {6,7,8,9,10};
unsigned long *pulPtr;
pulPtr = pulArray;
*(pulPtr + 3) += 3;
printf("%d,%d\n",*pulPtr, *(pulPtr + 3));

访问第4个元素的地址并解引用对值+3然后赋值给第四个pulArray[3]这个变量,可以理解为pulArray[0+3] = pulArray[0+3]+3。打印结果为6,12

字符逆序 

字符逆序__牛客网

这道题用scanf输入数据显然是不合理的,我们可以用gets函数输入一行字符串,结束标志为\n,然后记录数组首尾指针进行交换(不包括\0)。 

#include <stdio.h>
#include<string.h>
int main() {char arr[10001] = {0};gets(arr);int num = strlen(arr)-1;//下标char* left = arr;char* right = arr+num;while(left<right){char tmp = *left;*left = *right;*right = tmp;left++;right--;}puts(arr);//输出return 0;
}

 自幂数

求出0~100000之间的所有“水仙花数”并输出。

要点:灵活运用pow函数求次方并记录每一位数求相应位数的次方数。

int water(int c,int num)//递归 
{if (c < 10){return (int)pow(c, num);}int n = water(c / 10,num);return (int)pow(c % 10, num) + n;
}int count_num(int i)
{int num = 0;if (i < 10){return ++num;}return 1 + count_num(i / 10);//记录次数
}
int main()
{int i = 0;for (i = 0; i < 100000; i++){//计算位数if (i == water(i,count_num(i)))printf("%d ", i);}return 0;
}

a的前n项之和 

求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222

 找规律:前面的数乘以10+a为后面的一项。那第一项就是0*10+a。

int main()
{int a = 0;int n = 0;int i = 0;int sum = 0;int tmp = 0;scanf("%d%d", &a, &n);for(i=0; i<n; i++){tmp = tmp*10+a;sum += tmp;}printf("%d\n", sum);return 0;
}

最小公倍数

方法一:选两个数较大值记为x,不断++直到x能整除二者。

方法二:辗转相除法求最大公倍数(k)然后利用公式 m*n/k 

方法三:选两个数较小值按倍数递增去试除二者,直至都能被整除。

前面两个方法之前已经实现过了,我们来看第三个方法:

	int m, n;int i = 1;while (scanf("%d %d", &m, &n) == 2){if (m > n){int tmp = m;m = n;n = tmp;}for (i = 1; m * i % n != 0; i++){;}printf("%d\n", m * i);}

提示:如果数据过大可以将int改为long类型

  倒置字符串

倒置字符串__牛客网

思路:单词倒置+整体倒置(可以改变顺序),每个单词倒置同样需要记录首尾指针,尾为空格-1,整体结束条件为\0注意最后一个单词的结束条件也为\0.

#include <stdio.h>
#include <string.h>
#include <assert.h>
void reverse(char* left,char* right)
{assert(left && right);//断言while(left<right){int tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
int main() {char arr[101] = {0};gets(arr);char* cur = arr;//记录指针while(*cur){char*start = cur,*end = cur;//单词首尾指针while(*end != ' ' && *end != '\0'){end++;}reverse(start,end-1);if(*end)cur = end + 1;elsecur = end;}int len = strlen(arr)-1;reverse(arr,arr+len);//整体逆置printf("%s\n",arr);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/78013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法-27.移除元素-⭐

给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面…

自定义 spring-boot-starter 暴露钩子

自定义 spring-boot-starter 暴露钩子 1、前置工作&#xff1a;自定义一个 spring-boot-starter1.1、pom文件1.2、starter 封装的接口1.3、starter 的配置类1.4、starter 的 spring.factories 2、方法一&#xff1a;ApplicationContext 实现2.1、MyService的实现类2.2、事件类及…

@FunctionalInterface注解的作用及其运用

定义 FunctionalInterface 是Java 8引入的一个注解&#xff0c;用于标识一个接口是函数式接口。 函数式接口是Java中的一个概念&#xff0c;指的是只包含一个抽象方法的接口。在Java 8之前&#xff0c;接口中可以包含多个抽象方法&#xff0c;但是在Java 8中引入了Lambda表达式…

Golang 中的匿名变量详解

在 Golang 中&#xff0c;可以使用匿名变量来忽略不需要的返回值或占位符。匿名变量是一种特殊类型的变量&#xff0c;可以简化代码并提高可读性。本文将详细介绍匿名变量的定义、特性和使用方法。 什么是匿名变量&#xff1f; 在 Golang 中&#xff0c;匿名变量是一种没有显…

【基于Cocos Creator 3.5的赛车游戏】8.引入触摸屏幕事件并简单的控制小车

转载知识星球 | 深度连接铁杆粉丝&#xff0c;运营高品质社群&#xff0c;知识变现的工具 项目地址&#xff1a;赛车小游戏-基于Cocos Creator 3.5版本实现: 课程的源码&#xff0c;基于Cocos Creator 3.5版本实现 上一张您已经对Cocos的坐标系有了了解。这一章我们将让小车能…

【经典小练习】JavaSE—拷贝文件夹

&#x1f38a;专栏【Java小练习】 &#x1f354;喜欢的诗句&#xff1a;天行健&#xff0c;君子以自强不息。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f384;效果&#x1f33a;代码&#x1f6f8;讲解&#x…

【SA8295P 源码分析】96 - QNX AIS Camera 目录介绍 及 AIS Camera 框架介绍

【SA8295P 源码分析】96 - QNX AIS Camera 目录介绍 一、QNX AIS Camera 源码目录结构介绍1.1 AMSS/multimedia/camera/ais 目录介绍1.2 AMSS/multimedia/camera/build 目录介绍1.3 ais_server 可执行程序 包含哪些库?1.4 ais_be_server 可执行程序 包含哪些库?1.5 qcarcam_t…

【深入浅出C#】章节10: 最佳实践和性能优化:内存管理和资源释放

一、 内存管理基础 1.1 垃圾回收机制 垃圾回收概述 垃圾回收&#xff08;Garbage Collection&#xff09;是一种计算机科学和编程领域的重要概念&#xff0c;它主要用于自动管理计算机程序中的内存分配和释放。垃圾回收的目标是识别和回收不再被程序使用的内存&#xff0c;以…

高通胀加大英国债务负担

9月5日&#xff0c;英国伯明翰地方政府由于无力偿债宣布破产。一周后&#xff0c;该消息仍在市场持续发酵。越来越多的经济学家担忧&#xff0c;在伯明翰“倒下”之后&#xff0c;下一个宣布破产的英国城市会是哪个&#xff1f;作为仅次于伦敦的英国第二大城市&#xff0c;伯明…

微信管理系统在教育行业中的应用

随着教育行业越来越注重科技创新&#xff0c;对微信scrm工具的需求也会越来越大&#xff0c;微信scrm工具在教育行业的市场前景非常广阔&#xff0c;也为教育行业带来更多的发展机遇。 微信SCRM系统由监管、运营两大核心应用组成。能帮助培训机构实现从招生引流、销售管理、再…

【Android知识笔记】UI体系(四)

事件分发原理 屏幕事件会由Linux通过JNI传给WMS(WindowManagerService),然后由WMS传给Activity,最终经过PhoneWindow->DecorView开始往下分发。 View的事件分发 View的事件分发核心源码为 dispatchTouchEvent() 方法: public boolean dispatchTouchEvent(MotionEvent …

Spring Boot 集成 Redis

Spring-data-redis 在 Spring 中整合 Redis jedis : 采用的直连&#xff0c;多个线程操作的话&#xff0c;是不安全的&#xff0c;如果想要避免不安全的&#xff0c;使用 jedis pool 连接池 lettuce : 采用netty&#xff0c;实例可以再多个线程中进行共享&#xff0c;不存在…

导数的应用、单调性、极值、最大最小值

函数的单调性 函数的单调性是一个重要的性质&#xff0c;它描述了函数在某个区间上的变化趋势。如果函数在某个区间上单调递增&#xff0c;那么在这个区间上&#xff0c;随着自变量的增大&#xff0c;函数值也会增大&#xff1b;反之&#xff0c;如果函数在某个区间上单调递减&…

【halcon】halcon字符识别——OCR

前言 OCR&#xff08;Optical Character Recongnition&#xff09;光学字符识别。 halcon 的OCR&#xff0c;提供了几种方式&#xff0c;我们应该如何选择&#xff1f; 自动文本阅读器&#xff08;find_text&#xff09;手动文本阅读器&#xff08;find_text&#xff09;自己…

数据结构基础7:二叉树【链式结构】实现和递归思想。

二叉树的链式结构实现 一.二叉树链式结构的实现&#xff1a;1.前置说明&#xff1a;1.创建二叉树&#xff1a;2.二叉树的结构&#xff1a; 2.二叉树的遍历&#xff1a;1.二叉树的前中后序遍历&#xff1a;2.内容拓展&#xff1a; 二.二叉树链式(题目)题目一&#xff1a;计算节点…

【Axure高保真原型】日历日期原型模板

今天和大家分享日历日期的原型模板&#xff0c;包括月计划、周计划、日计划的原型案例&#xff0c;以及日期、时间、月份、区间选择器……具体效果可以点击下方视频观看 【原型预览及下载地址】 Axure 原型 备用地址&#xff1a;Untitled Document 【原型效果】 【原型效果…

2.k8s账号密码登录设置

文章目录 前言一、启动脚本二、配置账号密码登录2.1.在hadoop1&#xff0c;也就是集群主节点2.2.在master的apiserver启动文件添加一行配置2.3 绑定admin2.4 修改recommended.yaml2.5 重启dashboard2.6 登录dashboard 总结 前言 前面已经搭建好了k8s集群&#xff0c;现在设置下…

保姆级教程 --redis启动命令

1、在redis目录 打开命令 windowr 输入cmd 2、输入 redis-server.exe redis.windows.conf 启动redis命令&#xff0c;看是否成功 3、可能会启动失败&#xff0c;报28 Nov 09:30:50.919 # Creating Server TCP listening socket 127.0.0.1:6379: bind: No error 4、报错后&am…

【AI】《动手学-深度学习-PyTorch版》笔记(二十二):单发多框检测(SSD)

AI学习目录汇总 1、介绍 SSD(Single Shot MultiBox Detector)单发多框检测。“Single shot”说明SSD算法属于one-stage(一段式)方法,“MultiBox”说明SSD是多框预测(多尺度锚框/特征图)。 SSD和YOLO一样都是采用CNN网络执行one-stage(一段式)检测,区别是: YOLO速…

3D异常检测论文笔记 | Shape-Guided Dual-Memory Learning for 3D Anomaly Detection

参考&#xff1a;https://paperswithcode.com/sota/3d-anomaly-detection-and-segmentation-on 论文&#xff1a;https://openreview.net/pdf?idIkSGn9fcPz code&#xff1a;https://github.com/jayliu0313/Shape-Guided 文章目录 摘要一、介绍三、方法3.1. 形状引导专家学习3…