c刷题(四)

news2024/11/29 12:33:18

获得月份天数

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

这道题可以用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;
    else
        return 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;
        else
         cur = end;
    }
    int len = strlen(arr)-1;
    reverse(arr,arr+len);//整体逆置
    printf("%s\n",arr);
    return 0;
}

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

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

相关文章

Go 异常处理

代码在执行的过程中可能因为一些逻辑上的问题而出现错误 func test1(a, b int) int {result : a / breturn result } func main() {resut : test1(10, 0)fmt.Println(resut) }panic: runtime error: integer divide by zero goroutine 1 [running]: …

【数据库】数据库系统概论(一)— 概念

theme: qklhk-chocolate 基本概念 数据 描述事物的符号记录称为数据。 记录时是计算机中表示和存储数据的一种格式或一种方法。 数据库 数据库是长期存储在计算机内、有组织、可共享的大量数据的集合。 数据库中的数据按一定的数据模型组织、描述和储存。具有较小冗余度…

我的创作纪念日(第1024天)

机缘 当我开始在CSDN上创作时&#xff0c;我的初心主要是出于对技术的热爱和对知识分享的渴望。我一直以来都对计算机科学和技术领域充满兴趣&#xff0c;并且热衷于学习和探索新的技术知识和应用。通过在CSDN上发表文章和分享我的经验和见解&#xff0c;我希望能够与更多的技…

基于webman的CMS,企业官网通用PHP后台管理系统

2023年9月11日10:47:00 仓库地址&#xff1a; https://gitee.com/open-php/zx-webman-website 还有laravelscui的版本目前还未开源&#xff0c;电商laravel版本差不多&#xff0c;后续在移植webman 算是比较标准的phpvue的项目 CMS&#xff0c;企业官网通用PHP后台管理系统 …

UE5 Foliage地形植被实例删不掉选不中问题

目前问题测试发生在5.2.1上 地形上先填充后刷的植被删不掉 首先这个就是bug&#xff0c;大概看到说是5.3上能解决了&#xff0c;对此我只能吐槽ue5上地形植被bug太多了 什么nanite还能产生bug&#xff0c;不过这次又不是&#xff0c;整个删掉instance可以删除所有植被&#…

C++项目实战——基于多设计模式下的同步异步日志系统-⑨-同步日志器类与日志器建造者类设计

文章目录 专栏导读Logger类设计同步日志器类设计同步日志器测试日志器建造者模式设计抽象日志器建造者类派生局部日志器建造者日志器建造者类测试 同步日志器类与日志器建造者类整理 专栏导读 &#x1f338;作者简介&#xff1a;花想云 &#xff0c;在读本科生一枚&#xff0c;…

将阿里云盘挂载到本地磁盘-CloudDrive工具使用教程

CloudDrive是什么&#xff1f; 支持将115、沃家云盘、天翼云盘、阿里云盘、WebDAV挂载到本地并创建本地磁盘。 CloudDrive是一个全方位的云存储管理平台&#xff0c;旨在无缝集成多个云存储服务&#xff0c;将它们统一整合到一个界面中。 使用CloudDrive&#xff0c;您可以轻松…

Python 图形化界面基础篇:监听按钮点击事件

Python 图形化界面基础篇&#xff1a;监听按钮点击事件 引言 Tkinter 库简介步骤1&#xff1a;导入 Tkinter 模块步骤2&#xff1a;创建 Tkinter 窗口步骤3&#xff1a;创建按钮和定义事件处理函数步骤4&#xff1a;创建显示文本的标签步骤5&#xff1a;启动 Tkinter 主事件循环…

杂牌行车记录仪删除后覆盖恢复案例

行车记录仪从一开始的新鲜设备&#xff0c;到现在汽车必备&#xff0c;有的厂商甚至直接出厂就带了行车记录仪&#xff0c;正因为如此重要所以市场上充斥着很多记录仪品牌。下边我们来看看这个杂牌的记录仪恢复案例。 故障存储:8G microSD卡 故障现象: 8G算是小卡&#xff0…

pta java版

7-1 厘米换算英尺英寸 如果已知英制长度的英尺foot和英寸inch的值&#xff0c;那么对应的米是(footinch/12)0.3048。现在&#xff0c;如果用户输入的是厘米数&#xff0c;那么对应英制长度的英尺和英寸是多少呢&#xff1f;别忘了1英尺等于12英寸。 思路&#xff1a; 1英尺12英…

将近 5 万字讲解 Java Web / Servlet 网络编程超级详细概念原理知识点

1. Web 基本概念 首先 Web 网页 / 网站的意思&#xff08;例如&#xff1a;百度 www.baidu.com&#xff09; Web 分类&#xff1a;静态 Web / 动态 Web&#xff08;技术栈 Servlet / JSP、ASP、PHP&#xff09; 动态 web 在 java 中叫 javaweb BS (Browser / Server&#xff…

伙伴云连续2年入选Gartner《中国分析平台市场指南》,数据分析能力遥遥领先

伙伴云作为中国分析与商业智能平台代表性厂商&#xff0c;因出色的数据分析能力&#xff0c;入选Gartner2023《中国分析平台市场指南》&#xff08;《Market Guide for Analytics Platforms, China》&#xff0c;以下简称“指南”&#xff09;&#xff0c;成为入选该报告中唯一…

内外统一的边缘原生云基础设施架构——火山引擎边缘云

近日&#xff0c;火山引擎边缘云边缘计算架构师郭少巍在LiveVideoStack Con 2023上海站围绕火山引擎边缘云海量分布式节点和上百T带宽&#xff0c;结合边缘计算在云基础设施架构方面带来的挑战&#xff0c;分享了面对海量数据新的应用形态对低时延和分布式架构的需求&#xff0…

揭秘跑腿小程序开发中的5个关键技巧,让你的应用一炮而红

作为专注于跑腿小程序开发多年的领域专家&#xff0c;我深知在如今激烈的市场竞争中&#xff0c;如何打造一个引人注目且成功的跑腿小程序是至关重要的。在本文中&#xff0c;我将为大家揭秘跑腿小程序开发中的5个关键技巧&#xff0c;助你的应用一炮而红。无论你是一个初学者还…

解决Java类加载异常:java.lang.ClassNotFoundException

在Java开发过程中&#xff0c;有时会遇到类加载异常&#xff0c;其中之一是java.lang.ClassNotFoundException异常。这个异常通常出现在缺少相关依赖库或配置问题的情况下。本文将介绍如何解决这个问题&#xff0c;并以一个具体案例来说明。 问题描述 在开发过程中&#xff0…

CocosCreator3.8研究笔记(十五)CocosCreator 资源管理Asset Bundle

在资源管理模块中有一个很重要的功能&#xff1a; Asset Bundle&#xff0c;那什么是Asset Bundle &#xff1f;有什么作用&#xff1f;怎么使用 Asset Bundle呢 &#xff1f; 一、什么是Asset Bundle &#xff1f;有什么作用&#xff1f; 在日常游戏开发过程中&#xff0c;为了…

基于Android 语音朗读书籍管理系统

视频演示&#xff1a; 基于Android 语音朗读书籍管理系统 基于 Android 的语音朗读书籍管理系统可以提供用户管理书籍、朗读书籍的功能。以下是一个简单的步骤和功能列表&#xff1a; 用户注册和登录功能&#xff1a; 用户可以注册新账号或使用现有账号登录系统。用户信息可以包…

Redis从入门到精通(四:持久化)

持久化简介 什么是持久化 利用永久性存储介质将数据进行保存&#xff0c;在特定的时间将保存的数据进行恢复的工作机制称为持久化 持久化用于防止数据的意外丢失&#xff0c;确保数据安全性 为什么持久化 redis是将数据存储在内存上的&#xff0c;一旦断电&#xff0c;或者因…

嵌入式学习笔记(23)通信的基础概念

5.1.1通信的发展历史 &#xff08;1&#xff09;烽火台、狼烟&#xff1b;信件&#xff1b;电子通信&#xff08;电报、电话、网络信号&#xff09; &#xff08;2&#xff09;通信中最重要的两个方面&#xff1a;信息表示、解析方法 信息的传输方法 &#xff08;3&#xf…

04-前端基础CSS第二天

01-CSS第二天导读 目标&#xff1a; 能使用emmet语法能够使用CSS复合选择器能够写出伪类选择器的使用规范能够说出元素有几种显示模式能够写出元素显示模式的相互转换代码能够写出背景图片的设置方式能够计算CSS的权重 目录&#xff1a; Emmet语法CSS的复合选择器CSS的元素…