C基础day7

news2025/1/11 8:17:38

一、思维导图

二、课后练习

1、提示并输入一个字符串,统计该字符串中字母、数字、空格以及其他字符的个数

#include<myhead.h>
#define M 20
int main(int argc, const char *argv[])
{
	int sum_a=0,sum_b=0,sum_c=0,sum_d=0;
	char str[M];
	printf("please enter string:");
	gets(str);
//	getchar(); 	//吸收垃圾字符

	//循环判断每个字符
	for(int i=0;str[i]!='\0';i++)
	{
		//字母
		if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z'))
			sum_a++;
		//数字
		else if(str[i]>='0'&&str[i]<='9')
			sum_b++;
		//空格
		else if(str[i] == ' ')
			sum_c++;
		//其他
		else
			sum_d++;
	}

	//输出累计数量
	printf("字符串中有:字母%d个,数字%d个,空格%d个,其他字符%d个\n",sum_a,sum_b,sum_c,sum_d);
	return 0;
}

2、提示并输入一个字符串,求出该字符串中所有数字的总和

#include<myhead.h>
#define M 20
int main(int argc, const char *argv[])
{
	int sum = 0;
	char str[M];
	printf("please enter string:");
	gets(str);

	//循环判断数字并求和
	for(int i=0;str[i]!='\0';i++)
	{
		if(str[i]>='0' && str[i]<='9')
			sum += str[i] -'0';
	}
	//输出数字总和
	printf("字符串中数字的总和为:%d\n",sum);
	return 0;
}

3、定义一个4*3的二维整形数组,完成对二维数组的输入、输出。并将该二维数组中每一行的最值放入到一个一维数组中,并对该一维数组进行升序排序后输出。

#include<myhead.h>
int main(int argc, const char *argv[])
{
	int arr[4][3]={0};
	//二维数组输入
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<3;j++)
		{
			printf("请输入%d行%d列:",i+1,j+1);
			scanf("%d",&arr[i][j]);
		}
		putchar(10);
	}

	//二维数组输出
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<3;j++)
		{
			printf("%d行%d列:%d\n",i+1,j+1,arr[i][j]);
		}
		putchar(10);
	}

	//定义一维数组存放二维数组每一行最大值
	int brr[4]={0};

	//循环二维数组比较选出每一行最大值
	for(int i=0;i<4;i++)
	{
		int max = arr[i][0];
		for(int j=1;j<3;j++)
		{
			if(max<arr[i][j])
				max = arr[i][j];
		}
		brr[i] = max; 	//将每行最大值存入数组brr
	}

	//对一维数组进行升序排序
	//冒泡排序
	for(int i=1;i<4;i++)
	{
		for(int j=0;j<4-i;j++)
		{
			if(brr[j]>brr[j+1])
			{
				int temp = brr[j];
				brr[j] = brr[j+1];
				brr[j+1] = temp;
			}
		}
	}

	printf("冒泡排序升序排序后的结果:");
	//循环输出
	for(int i=0;i<4;i++)
	{
		printf("%d\t",brr[i]);
	}
	putchar(10);

	//选择排序
	int mini = 0;  //记录最值的下标
	for(int i=0;i<4;i++) 	//遍历整个数组找最值
	{
		mini = i;
		//遍历整个数组比较
		for(int j=i+1;j<4;j++)
		{
			if(brr[mini] > brr[j])
			{
				mini =j; //更新最值下标
			}
		}

		//判断找到的最值是否放在了首位,不是则交换
		if(mini !=i)
		{
			int temp = brr[i];
			brr[i] = brr[mini];
			brr[mini] = temp;
		}
	}


	//输出一位数组排序后结果
	printf("选择排序升序排序后的结果:");
	//循环输出
	for(int i=0;i<4;i++)
	{
		printf("%d\t",brr[i]);
	}
	putchar(10);
	return 0;
}

4、提示并输入两个一维整形数组,求这两个数组的交集。

#include<myhead.h>
#define MAX 100
int main(int argc, const char *argv[])
{
	//提示并输入两个一维数组
	int arr1[MAX],arr2[MAX];
	int size1=0,size2=0;

	printf("please enter arr1 size1:");
	scanf("%d",&size1);
	printf("please enter arrry1:\n");
	for(int i=0;i<size1;++i)
	{
		printf("请输入第个%d元素:",i+1);
		scanf("%d",&arr1[i]);
		getchar();
	}

	printf("please enter arr2 size2:\n");
	scanf("%d",&size2);
	printf("please enter arrry2:");
	for(int i=0;i<size2;++i)
	{
        printf("请输入第个%d元素:",i+1);
		scanf("%d",&arr2[i]);
		getchar();
	}

	//遍历两个数组比较得出交集
	//定义一位数组存储交集
	int brr[MAX];
	int k =0;
	for(int i=0;i<size1;i++)
	{
		for(int j=0;j<size2;j++)
		{
			if(arr1[i] == arr2[j])
			{
				brr[k] = arr1[i];
				k++;
			}
		}
	}

	//输出交集数组brr
	printf("两数组交集为:");
	for(int i=0;i<k;i++)
	{
		printf("%d\t",brr[i]);
	}
	return 0;
}

5、完成注册和登录功能:

#include<myhead.h>

void regis();
int login();

char old_user[32];
char old_passwd[32];
char new_user[32];
char new_passwd[32];

int main(int argc, char const *argv[])
{
    int a,res;
    while(1){ //循环执行
         printf("***********");
         printf("1.注册 2.登录");
         printf("***********\n");
         scanf("%d",&a);
        switch(a){
            case 1:
                  regis();
                  break;
            case 2:
                   while (1)
                   {
                       res = login();
                       if (res==1)
                       {
                           return 0;
                       }else
                       {
                           printf("请重新输入\n");
                       }
                   }  
                   break;
            default:
                  break;
        }
    }
    return 0;
}

void regis(){
    printf("请输入注册帐号\n");
    scanf("%s",old_user);
    printf("请输入注册密码\n");
    scanf("%s",old_passwd);
}
int login(){
    printf("请输入登录帐号\n");
    scanf("%s",new_user);
    printf("请输入登录密码\n");
    scanf("%s",new_passwd);
    if (strcmp(old_user,new_user) == 0 && strcmp(old_passwd,new_passwd) == 0)
    {
       printf("登录成功\n");
       return 1;
    }else{
        return -1;
    }
    
    
 }

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

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

相关文章

Vagrant配合VirtualBox搭建虚拟机

目录 前言一、软件下载及安装1.下载2.安装扩展&#xff1a; 二、创建一个虚拟机1.Vagrant官方镜像仓库 三、使用远程工具连接虚拟机1.修改相关配置文件 四、虚拟机克隆及使用1.通用配置2.简单搭建一个java环境3.克隆虚拟机1.重命名虚拟机&#xff08;可选&#xff09;2.打包指定…

阿里发布大模型发布图结构长文本处理智能体,超越GPT-4-128k

随着大语言模型的发展&#xff0c;处理长文本的能力成为了一个重要挑战。虽然有许多方法试图解决这个问题&#xff0c;但都存在不同程度的局限性。最近&#xff0c;阿里巴巴的研究团队提出了一个名为GraphReader的新方法&#xff0c;通过将长文本组织成图结构&#xff0c;并利用…

在FPGA程序中Handshake(握手)和Register(寄存器)区别

在FPGA程序中&#xff0c;Handshake&#xff08;握手&#xff09;和Register&#xff08;寄存器&#xff09;是两种不同的通信和数据传输机制。它们各有特点和适用场景。以下是它们的区别和应用场景的详细解释&#xff1a; Register&#xff08;寄存器&#xff09; 特点&#…

入门PHP就来我这(高级)19 ~ 捕获sql错误

有胆量你就来跟着路老师卷起来&#xff01; -- 纯干货&#xff0c;技术知识分享 路老师给大家分享PHP语言的知识了&#xff0c;旨在想让大家入门PHP&#xff0c;并深入了解PHP语言。 接着上篇我们来看下sql错误的捕获模式。 1 PDO中捕获SQL语句中的错误 在PDO中有3种方法可以捕…

产品经理/项目经理管理项目使用最多的12款项目软件对比

盘点不同行业、项目类型的下的12款主流的项目管理软件&#xff1a;PingCode、Worktile、Teambition、TAPD、广联达、Asana、Basecamp、Jira、Microsoft Project、ClickUp、Redmine、Trello。 在这个项目管理工具层出不穷的时代&#xff0c;选择一个合适的软件似乎成了一个令许多…

博客标题:C++中的继承:构建面向对象的基石

目录 ​编辑 引言 继承的基本形式 示例1&#xff1a;基本继承 继承的类型 示例2&#xff1a;不同类型的继承 多重继承 示例3&#xff1a;多重继承 继承与多态性 示例4&#xff1a;继承与多态 结论 结尾 引言 在面向对象编程&#xff08;OOP&#xff09;中&#xff…

可以添加todo清单桌面小组件的便签哪个好?

在我们快节奏的生活中&#xff0c;有效的时间管理和任务追踪是必不可少的。为了实现这一目标&#xff0c;许多人选择使用桌面便签&#xff0c;尤其是那些具有Todo清单桌面小组件的便签。但是&#xff0c;面对市场上众多选择&#xff0c;可以添加todo清单桌面小组件的便签哪个好…

企业级网关设计

tips&#xff1a;本文完全来源于卢泽龙&#xff01;&#xff01;&#xff01; 一、Gateway概述 1.1设计目标 1.2gateway基本功能 中文文档参考&#xff1a;https://cloud.tencent.com/developer/article/1403887?from15425 三大核心&#xff1a; 二、引入依赖和yaml配置…

14-52 剑和诗人26 - RAG 和 VectorDB 简介

检索增强生成 (RAG) 和 VectorDB 是自然语言处理 (NLP) 中的两个重要概念&#xff0c;它们正在突破 AI 系统所能实现的界限。 在这篇博文中&#xff0c;我将深入探讨 RAG&#xff0c;探索其工作原理、应用、优势和局限性。 我们还将研究 VectorDB&#xff0c;这是一种专用于向…

【动态规划Ⅵ】背包问题 /// 组合问题

背包问题 什么是背包问题0-1背包问题分数背包完全背包问题重复背包问题 背包问题例题416. 分割等和子集474. 一和零 完全平方数279. 完全平方数322. 零钱兑换 排列与组合组合&#xff0c;无重复&#xff1a;518. 零钱兑换 II排列&#xff0c;可重复&#xff1a;377. 组合总和 Ⅳ…

Commons-Collections篇-CC7链

前言 和CC5反序列化链相似&#xff0c;CC7也是后半条LazyMap执行命令链不变&#xff0c;但是中间过程通过AbstractMap.equals()触发LazyMap.get()方法 环境 我们可以接着使用之前已经搭建好的环境&#xff0c;具体过程可以看CC1分析文章的环境安装部分 Commons-Collections篇…

【Java 的四大引用详解】

首先分别介绍一下这几种引用 强引用&#xff1a; 只要能通过GC ROOT根对象引用链找到就不会被垃圾回收器回收&#xff0c;当所有的GC Root都不通过强引用引用该对象时&#xff0c;才能被垃圾回收器回收。 软引用&#xff08;SoftReference&#xff09;&#xff1a; 当只有软引…

262个地级市-市场潜力指数(do文件+原始文件)

全国262个地级市-市场潜力指数&#xff08;市场潜力计算方法代码数据&#xff09;_市场潜力数据分析资源-CSDN文库 市场潜力指数&#xff1a;洞察未来发展的指南针 市场潜力指数是一个综合性的评估工具&#xff0c;它通过深入分析市场需求、竞争环境、政策支持和技术创新等多个…

LLM应用构建前的非结构化数据处理(一)标准化处理认识数据

1.学习内容 本节次学习内容来自于吴恩达老师的Preprocessing Unstructured Data for LLM Applications课程&#xff0c;因涉及到非结构化数据的相关处理&#xff0c;遂做学习整理。 2.相关环境准备 2.1 建议python版本在3.9版本以上 chromadb0.4.22 langchain0.1.5 langcha…

Redis-Jedis连接池\RedisTemplate\StringRedisTemplate

Redis-Jedis连接池\RedisTemplate\StringRedisTemplate 1. Jedis连接池1.1 通过工具类1.1.1 连接池&#xff1a;JedisConnectionFactory&#xff1a;1.1.2 test&#xff1a;&#xff08;代码其实只有连接池那里改变了&#xff09; 2. SpringDataRedis&#xff08;lettuce&#…

洛谷 数学进制 7.9

P1100 高低位交换 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 代码一 #include<bits/stdc.h> using namespace std; typedef long long ll; #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)const ll N1e510; char a[N];int main() {IOS;ll a;int b[32]…

【分布式系统】ceph部署(命令+截图巨详细版)

目录 一.存储概述 1.单机存储设备 2.单机存储的问题 3.商业存储 4.分布式存储​编辑 4.1.什么是分布式存储 4.2.分布式存储的类型 二.ceph概述 1.ceph优点 2.ceph架构 3.ceph核心组件 4.OSD存储后端 5.ceph数据存储过程 6.ceph版本发行生命周期 7.ceph集群部署 …

用ce修改植物大战僵尸杂交版银币

第一步打开游戏 用ce打开图中进程 第二步 输入你原始银币 点首次搜索 第三步 找到这个地址 把地址拖下来 第四步 双击直接修改下面数值即可 金币 钻石 都和这个方法一样 不一样的是首次搜索可能会有很多地址 我们改变游戏里面的值 然后再次搜索游戏被改变的值即可准确找到地址

降Compose十八掌之『见龙在田』| Modifier

公众号「稀有猿诉」 原文链接 降Compose十八掌之『见龙在田』| Modifier 通过前面的文章我们学会了如何使用元素来构建和填充我们的UI页面&#xff0c;但这只完成了一半&#xff0c;元素还需要装饰&#xff0c;以及进行动画和事件响应&#xff0c;这才能生成完整的UI。这…

遍历请求后端数据引出的数组forEach异步操作的坑

有一个列表数据&#xff0c;每项数据里有一个额外的字段需要去调另外一个接口才能拿到&#xff0c;后端有现有的这2个接口&#xff0c;现在临时需要前端显示出来&#xff0c;所以这里需要前端先去调列表数据的接口拿到列表数据&#xff0c;然后再遍历请求另外一个接口去拿到对应…