C基础day8(2023.7.10)

news2024/12/23 13:54:53

一、Xmind整理:

 

二、课上练习:

 练习1:基本类型参数

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//传参:被调函数需要使用主调函数的局部变量,传参 
void Sum(char a,char b);//被调函数
int main(int argc, const char *argv[])//主调函数
{
    int a=128,b=129;//局部变量:在main函数使用
    Sum(a,b);//实际参数:实参:变量 常量 表达式
    return 0;
}
//m=a   n=b;
void Sum(char m,char n)//被调函数  形式参数:形参:变量
{
    printf("m+n=%d\n",m+n);
}
//实参和形参
//1.实参和形参的个数必须一致,否则报错
//2.一一对应
//3,实参和形参的类型可以不一致,以形参为主,发生自动或强制转换
//4,实参和形参变量名可以不一致

 练习2:基本类型做参数,实现计算器, 定义四个函数,实现加减乘除

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Sum(int a,int b);
void Sub(int a,int b);
void Mul(int a,int b);
void Div(int a,int b);
int main(int argc, const char *argv[])
{
	int a,b;
	char ch;
	printf("请输入一个表达式:");
	scanf("%d%c%d",&a,&ch,&b);
	switch(ch)
	{
	case'+':Sum(a,b);break;
	case'-':Sub(a,b);break;
	case'*':Mul(a,b);break;
	case'/':Div(a,b);break;
	}
	return 0;
}
void Sum(int a,int b)
{
	printf("a+b=%d\n",a+b);
}
void Sub(int a,int b)
{
	printf("a-b=%d\n",a-b);
}
void Mul(int a,int b)
{
	printf("a*b=%d\n",a*b);
}
void Div(int a,int b)
{
	if(b==0)
		printf("除数不能为0!\n");
	else
		printf("a/b=%d\n",a/b);
}

 练习3:定义数组,在自定义函数中实现就和

定义数组,在自定义函数中实现就和
   /*
 * function:    实现数组求和
 * @param [ in] 
 * @param [out] 
 * @return      
 */
//形参数组arr看似是数组,实则是指针
void Sum(int arr[],int len)//当传递数组是,形参的数组长度可以省略不写,默认是实际实参的元素个数
{
    int sum=0;
    printf("形参=%ld\n",sizeof(arr));
    for(int i=0;i<len;i++)
    {
        sum+=arr[i];
    }
    printf("sum=%d\n",sum);
}

 练习4: 写一个自定义函数Bubble,实现冒泡排序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Bubble(int arr[],int n)
{
	for(int i=1;i<n;i++)
	{
		for(int j=0;j<n-i;j++)
		{
			if(arr[j]>arr[j+1])
			{
				int temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
		}
	}
	for(int i=0;i<n;i++)
		printf("%d ",arr[i]);
}
int main(int argc, const char *argv[])
{
	int n;
	printf("请输入你要参与冒泡的个数:");
	scanf("%d",&n);
	int arr[n];
	for(int i=0;i<n;i++)
	{
		printf("请输入第%d个数:",i+1);
		scanf("%d",&arr[i]);
	}
		Bubble(arr,n);
	return 0;
}

 练习5:二维数组做参数,传递数组名,因为数组名表示整个二维数组 

 /*
 * function:    计算二维数组的和
 * @param [ in] 数组
 * @param [out] 
 * @return      
 */
//形参二维数组看似是二维,实则是指针
void Sum(int line,int row,int arr[][row])
{

    int sum=0;
//    printf("形参sizeof(arr)=%ld\n",sizeof(arr));
    for(int i=0;i<line;i++)
    {
        for(int j=0;j<row;j++)
        {
            sum+=arr[i][j];
        }
    }
    printf("sum=%d\n",sum);
}

 练习6:定义函数YangHui,计算杨辉三角

void YangHui(int n,int arr[n][n])
{
	int i,j;
	for(i=0;i<n;i++)
{
	for(j=0;j<n-i;j++)
	{
		printf("  ");
	}
	for(j=0;j<=i;j++)
	{
		if(j==0 || i==j)
		{
			arr[i][j]=1;
		}
		else
		{
			arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
		}
		printf("%4d",arr[i][j]);
	}
	printf("\n");
}
}
int main(int argc, const char *argv[])
{
	int n;
	printf("请问您要输入一个几行几列的杨辉三角:");
	scanf("%d",&n);
	int arr[n][n];
	YangHui(n,arr);
	return 0;
}

 练习7:字符串做参数 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void my_strlen(char str[])
{
    
//    printf("%ld\n",strlen(str));
    int i=0;
    while(str[i]!='\0')
    {
        i++;
    }
    printf("字符串长度是:%d\n",i);
}

 练习8: 自定义一个函数实现字符串比较

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void MyStrcmp(char str[],char str1[])
{
	int i=0,j=0;
	while(str[i]==str1[j])
	{
		if(str[i]=='\0')
		{
			break;
		}
		i++;j++;
	}
	if(str[i]>str1[j])
		printf("str>str1\n");
	else if(str[i]<str1[j])
		printf("str<str1\n");
	else
		printf("str=str1\n");

}
int main(int argc, const char *argv[])
{
	char str[100]="";
	char str1[100]="";
	printf("请输入第一个字符串:");
	scanf("%s",str);
	printf("请输入第二个字符串:");
	scanf("%s",str1);
	MyStrcmp(str,str1);
	return 0;
}

 练习9:二维字符数组做参数 

void print(char str[][5],int line)
{
    for(int i=0;i<line;i++)
    {
        printf("%s\n",str[i]);
    }
}
int main(int argc, const char *argv[])
{
    char str[3][5]={"abcd","ASDF","1234"};
    print(str,sizeof(str)/sizeof(str[0]));
    return 0;
}

 练习10: 自定义函数Sum计算一维数组的和,返回和

int Sum(int arr[],int len)
{
    int sum=0;
    for(int i=0;i<len;i++)
    {
        sum+=arr[i];
    }
    return sum;
    size_t count=0;
}
int main(int argc, const char *argv[])
{
    int arr[]={1,2,3,4,5};
    int s=Sum(arr,sizeof(arr)/sizeof(arr[0]));
    printf("s=%d\n",s);
    return 0;
}

 练习11:返回字符串长度

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
unsigned long my_strlen(char str[])
{
	int i=0,count=0;
	while(str[i++])
		count++;
	return count;
}
int main(int argc, const char *argv[])
{
	char str[100]="";
	printf("请输入字符串:");
	scanf("%s",str);
	size_t len=my_strlen(str);
	printf("字符串长度为:%lu\n",len);
	return 0;
}

 练习12:字符串比较,返回str和str1的差值

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int MyStrcmp(char str[],char str1[])
{
	int i=0,j=0;
	int cha=0;
	while(str[i]==str1[j])
	{
		if(str[i]=='\0')
		{
			break;
		}
		else
		{
			i++;j++;
		}
	}
	cha =str[i]-str1[j];
	return cha;
}
int main(int argc, const char *argv[])
{
	char str[100]="";
	char str1[100]="";
	printf("请输入第一个字符串:");
	scanf("%s",str);
	printf("请输入第二个字符串:");
	scanf("%s",str1);
	int n=MyStrcmp(str,str1);
	if(n==0)
		printf("str=str\n");
	else if(n>0)
		printf("str>str1\n");
	else
		printf("str<str1\n");
	return 0;
}

三、课后作业:

1.计算数组的最大和,以及最大差

   定义函数实现返回最大差值                      定义函数实现返回最大和

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Bubble(int arr[],int n)
{
	int i,j;
	int t;
	for(i=1;i<n;i++)
	{
		for(j=0;j<n-i;j++)
		{
			if(arr[j]>arr[j+1])
			{
				t=arr[j];arr[j]=arr[j+1];arr[j+1]=t;
			}
		}
	}
}
int MaxSub(int arr[],int n)
{
	return arr[n-1]-arr[0];
}
int MaxSum(int arr[],int n)
{
	return arr[n-1]+arr[n-2];
}
int main(int argc, const char *argv[])
{
	int m,n;
	printf("请问你要输入一个几位数组:");
	scanf("%d",&n);
	int arr[n];
	for(m=0;m<n;m++)
	{
		printf("请输入第%d个数:",m+1);
		scanf("%d",&arr[m]);
	}
	Bubble(arr,n);
	int sub=MaxSub(arr,n);
	int sum=MaxSum(arr,n);
	printf("最大差:%d  最大和是:%d\n",sub,sum);
	return 0;
}

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

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

相关文章

模拟电路(PHY)的端接电阻(terminator)

电气终端&#xff08;英语&#xff1a;electrical termination&#xff09;&#xff0c;是使传输线的末端的负载与传输线特性阻抗相匹配&#xff0c;以避免信号在末端反射的措施。实现电气终端的装置是端接器&#xff08;英语&#xff1a;terminator&#xff09;&#xff0c;有…

《向量数据库指南》——向量数据库的技术挑战和优势

目录 技术挑战 向量数据库的优势 技术挑战 在前面,我列出了向量数据库应该具有的理想功能,然后将向量数据库与向量搜索库和向量搜索插件进行比较。现在,让我们简单来了解一下向量数据库的技术挑战。未来的教程中,我们将介绍 Milvus 是如何解决这些问题的,以及这些技术是…

一个月学通Python(十六):Django模型深入理解(Web开发)

专栏介绍 结合自身经验和内部资料总结的Python教程&#xff0c;每天3章&#xff0c;1个月就能全方位的完成Python的学习并进行实战开发&#xff0c;学完了定能成为大佬&#xff01;加油吧&#xff01;卷起来&#xff01; 全部文章请访问专栏&#xff1a;《Python全栈教程&…

Openlayers实战:加载高德地图

在国内地图市场上,高德地图占据了重要的地位。Openlayers可以加载高德地图,这其中根据不同的参数,可以显示遥感地图,矢量地图等,可以显示中文,英文。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN) * @此源代码版权归大剑师兰特所有…

flutter页面添加透明遮罩

路由工具 import package:test/main.dart; import package:flutter/material.dart;import circle_page_route.dart;class NavigatorUtil {static push(Widget page, {BuildContext context}) {return Navigator.push(context ?? navigatorKey.currentContext,MaterialPageRo…

津津乐道设计模式 - 迭代器模式详解(以购物车的场景来演示迭代器模式)

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

【C++】priority_queue使用与模拟实现

认识priority_queue 1、priority_queue(优先级队列)是一种容器适配器&#xff0c;底层是一个完全二叉树的大堆&#xff08;堆总是一颗完全二叉树&#xff0c;根结点最大的堆叫做大堆&#xff1b;根结点最小的堆叫做小堆&#xff09;&#xff0c;头文件在queue中&#xff0c;根…

simple RNN pytorch代码实现

simple RNN pytorch代码实现 在写这篇博客之前&#xff0c;博主要说一件事情&#xff0c;网上的simple RNN代码很多都是错误的&#xff0c;博主的也是错误的&#xff0c;为什么呢&#xff1f; 因为simple RNN的梯度下降代码必须自己去写&#xff0c;simple RNN的梯度下降不能使…

巧用浮动布局、解决高度塌陷实例分享

问题 如图所示&#xff0c;这种效果该怎么实现呢&#xff1f; 面包屑导航和按钮一行两端显示面包屑或编辑栏超出宽度则自动另行显示 实现 采用浮动&#xff0c;绿色块左浮&#xff0c;蓝色块右浮&#xff0c;利用浮动特性实现宽度超出另一行显示的效果&#xff0c;并是动态的…

ModaHub魔搭社区:什么是非结构化数据?

目录 概览 区分结构化、半结构化和非结构化数据 结构化数据示例 欢迎来到向量数据库 101 系列教程。 概览 这是向量数据库 101 系列教程第一课,主要向大家介绍一下非结构化数据。 现在我们每天都会产生新的数据,这无疑是全球一体化和全球经济的关键动力。从腕部佩戴的…

【NLP】国外新动态--LLM模型

一、说明 NLP走势如何&#xff1f;这是关于在实践中使用大型语言模型&#xff08;LLM&#xff09;的系列文章中的一篇文章。在这里&#xff0c;我将介绍LLM&#xff0c;并介绍使用它们的3个级别。未来的文章将探讨LLM的实际方面&#xff0c;例如如何使用OpenAI的公共API&#x…

面试题更新之-css中link和@import的区别

文章目录 导文link是什么&#xff1f;import是什么&#xff1f;css中link和import的区别 导文 面试题更新之-css中link和import的区别 link是什么&#xff1f; CSS Link是用于将外部CSS文件链接到HTML文档中的HTML标签。通过使用CSS Link标签&#xff0c;可以将外部的CSS样式表…

游戏测试与策划的那些事儿

作为一个游戏测试员&#xff0c;和程序、前端、策划之间的沟通交流在所难免。今天就来吐槽一下子啦~ 作为游戏测试的核心机密&#xff0c;可不能被他们知道我们在背后吐槽啦~ 游戏测试&#xff1a;XXX&#xff0c;刚测完这数据怎么和之前的不一样了&#xff1f; 策划&#xff1…

Python分布式任务队列Celery

一、分布式任务队列Celery介绍 Python celery是一个基于Python的分布式任务队列&#xff0c;主要用于任务的异步执行、定时调度和分布式处理。它采用了生产者/消费者模式&#xff0c;通过消息中间件实现多个工作者进程之间的协作。 Python celery的架构主要包括以下组件&…

new和不用new调用构造函数,有什么区别?

new和不用new的构造函数&#xff0c;有什么区别&#xff1f; 下面从有return和无return,如果在有return的情况下&#xff0c;return原始类型数据和return引用应用类型数据等几方面进行论述&#x1f44d;&#x1f44d;&#x1f44d; 区别1&#xff1a;当没有return时 functio…

Bus消息总线(在Spring Cloud整合Bus(idea19版本)

Bus消息总线 所谓消息总线Bus&#xff0c;即我们经常会使用MQ消息代理构建一个共用的Topic&#xff0c;通过这个Topic连接各个微服务实例,MQ广播的消息会被所有在注册中心的微服务实例监听和消费。换言之就是通过一个主题连接各个微服务&#xff0c;打通脉络 Spring Cloud Bus …

FastDDS 源码剖析:DataWriter分析

目录 DataWriter分析 DataWriter 类分析 DataWriterImpl 类分析 关键函数分析 DataWriter分析 DataWriter 类分析 DataWriter 类是 Fast DDS 库中的一个重要类&#xff0c;它用于实现 DDS&#xff08;Data Distribution Service&#xff09;发布-订阅通信模型中的数据写入…

Git #01 操作记录

本篇内容 0. 前期配置1. 仓库1.1 上传本地代码到远程仓库 0. 前期配置 请提前配置好 git 的全局用户名&#xff1a; # xin&#xff1a;账号名 $ git config --global user.name "xin" # xin163.com&#xff1a;账号绑定的邮箱地址 $ git config --global user.emai…

单片机能否替代PLC实现控制和自动化系统?

是的&#xff0c;单片机可以在某些情况下替代PLC&#xff0c;但在其他情况下可能并不适用。以下是对这个问题的详细解释&#xff1a; 我这里刚好有嵌入式、单片机、plc的资料需要可以私我或在评论区扣个6 灵活性和可编程性&#xff1a;PLC相对于单片机来说更具有灵活性和可编…

DolphinScheduler minio(S3支持)开启资源中心

DolphinScheduler 如果是在3.0.5 及之前的版本&#xff0c;没办法支持 S3 的协议的 当你按照文档配置之后&#xff0c;运行启动之后&#xff0c;在master 和 worker 节点&#xff0c;都会出现 缺包的依赖问题。 那这个问题在什么版本修复了呢&#xff1f; 3.0.6... 那 3.0.6 …