C基础day8(2023.7.10)

2023-11-19

一、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;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C基础day8(2023.7.10) 的相关文章

随机推荐

  • 【Detectron2】入门03 Faster RCNN + VOC

    在detectron2 data datasets builtin py中可以看到在DatasetCatelog上各个数据集的注册 其中 root即为数据集的基地址 代码指明 root要么是DETECTRON2 DATASETS 要么是da
  • Beyond Compare使用和安装教程

    一 背景 Beyond Compare是一款文件和文件夹比较工具 它能够比较和同步文件夹和文件 并显示它们之间的差异 方便用户决定如何更新和管理它们 Beyond Compare的主要用途包括 文件和文件夹比较 用户可以将两个文件或文件夹进
  • 九种常见排序的比较和实现

    首先排序算法大的可以分为 关键字比较 非关键字比较 关键字比较 关键字比较就是通过关键字之间的比较和移动 从而使整个序列有序 而关键字比较的算法 又可以像下面这样划分 对于排序算法之间的比较 无异于时间复杂度和空间复杂度 看下面这张表格 由
  • OpenCV读取视频并获得相关属性信息

    使用VideoCapture读取视频 video cv2 VideoCapture r prototype mp4 通过下代码确定视频是否读取成功 is open video isOpened 读取成功后 通过VideoCapture ge
  • css实现响应式布局

    一 什么是响应式布局 响应式布局指的是同一页面在不同屏幕尺寸下有不同的布局 传统的开发方式是PC端开发一套 手机端再开发一套 而使用响应式布局只要开发一套就够了 响应式设计与自适应设计的区别 响应式开发一套界面 通过检测视口分辨率 针对不同
  • JQuery使用

    JQuery 框架 注意事项 在导入JQUREY外部文件的时候不可以使用自闭合标签 无效化导入且不报错 不可使用此方式加载 jQuery框架特点 免费开源 轻量级框架 占用资源少 运行速度快 宗旨 write less do more jQ
  • python下载安装教程(Python 3.10版本)

    目录 一 Python下载 二 Python安装 三 检查Python是否安装成功 今天换了新的电脑 需要重新安装python和PyCharm 就简单的写个教程吧 一 Python下载 1 进入Python官网 官网地址 https www
  • 使用http携带token请求第三方接口 并封装参数以post方式请求

    首先准备条件 1 四个jar包 fastjson 1 2 3 jar commons io 2 4 jar commons httpclient 3 1 jar httpcore 4 3 jar slf4j api 1 7 7 jar 这个
  • 范围for语句

    C 新标准提供的范围for语句 这种语句遍历给定序列中个元素并对序列中每一个值执行某种操作 其语法形式是 for declaration expression statement 其中 expression 部分是一个对象 用于表示一个序列
  • tp5 生成随机数

    控制器调用 public function GetRanStr if request gt isPost 生成6位数随机数 return GetRandStr 6 公共方法 生成随机数 param len return string fun
  • 常用与业务密切相关的prompt

    可以在 Bard Bing Claude 2 ChatGPT和 Llama 2 上使用 定义您的业务目的和愿景 提示 我正在 插入行业 创业 我的重点是定义与我的受众产生共鸣的明确目标和愿景 你能指导我制定有意义的愿景声明吗 研究和分析您的
  • android通过JNI用C/C++创建本地文件

    通过jni在本地创建文件 1 在android studio创建基本的jni工程 并且在APP界面成功显示 Hello from C 不会的可以看android studio使用jni 2 在native lib cpp文件中创建文件 为了
  • eclipse导入项目后,项目报红叉的解决方法

    导入项目后 项目报红叉的解决方法 导入别人的项目后 一般都会报错 我之前尝试build path 发现并没有问题 后来发现 点击项目右键 properties 把服务加上Apply and Close就可以了
  • Spring(三):JavaBean的生命周期

    JavaBean的生命周期 一 基本概念 bean 就是由IOC 容器初始化 装配及管理的对象 Spring中的bean默认都是单例的 那么单例Bean在多线程程序下如何保证线程安全呢 Spring的单例是基于BeanFactory也就是S
  • 音视频学习笔记(雷神)—技术解析

    音视频技术解析 封装技术 视频压缩编解码 音频压缩编解码 这是技术层 流媒体传输协议 这是网络层 视频播放器解析 解协议 从视频播放器的角度做解析 拿到传输而来的视频数据后 首先要解协议 传输协议 自然的本地视频经过硬盘传输数据自然没有解协
  • 关于UI适配的文档

    第一部分 原理 1 根据当前屏幕尺寸与开发预设屏幕尺寸尺寸得出以下参数 1 XRatio 当前屏幕尺寸与开发尺寸的X轴比例 2 YRtaio 当前屏幕尺寸与开发尺寸的Y轴比例 3minRatio XRatio与YRtaio中的较小值 2 之
  • 求1到n的所有质数(素数)

    1 一般方法 定义一个空列表 双层循环实现 时间复杂高计算慢 时间复杂度为 O n 2 mathrm O left mathrm n 2
  • 《这些话好帅,经典得让人心痛!》

    http bookmark hexun com shuhe2008 detail aspx bid 6306685 type rss 1 对自己好点 因为一辈子不长 对身边的人好点 因为下辈子不一定能够遇见 2 对不起是一种真诚 没关系是一
  • 线性回归和逻辑回归的区别_【基础】线性回归和逻辑回归

    回归和分类 回归和分类是机器学习可以解决两大主要问题 从预测值的类型上来区分 连续变量的预测称为回归 离散变量的预测称为分类 例如 预测房价的价格是一个回归任务 预测一张图片是猫还是狗的图片是分类任务 线性回归 在一维特征空间 线性回归是通
  • C基础day8(2023.7.10)

    一 Xmind整理 二 课上练习 练习1 基本类型参数 include