当前位置: 首页 > news >正文

华清远见25072班C语言学习day5

重点内容:

数组:

        为什么有数组?为了便于存储多个数据

        特点:连续存储多个同种数据类型元素(连续指内存地址连续)

        数组名:数组中首元素的地址,是一个地址常量。

一维整形数组:

        定义:数据类型 数组名[长度];

        数组的初始化:

  1. int arr[4]; //定义了能存4个int的整形数组arr,没有初始化,每一个元素都是随机值
  2. int arr1[3]={12,9,5}; //定义数组并完全初始化
  3. int arr2[4]={1,9};//定义了一个能存4个int的整形数组arr2并不完全初始化,未初始化的部分默认为0

        数组的赋值:

  1. arr[0] = 90;//给arr数组中的第一个元素赋值
  2. int arr3[]={12,8,4,3,5};//定义了一个数组arr3没有给长度,会根据初始化列表分配长度
  3. int arr4[]={};//定义了一个数组,没有给长度并且初始化列表中没有数据,分配空间为0Byte
注意事项: 数组不允许整体赋值、数组名不能赋值
访问数组中的变量:通过下标访问,数组中元素的下标从0开始到len-1结束,如果下标访问不正确会发生数组越界情况,可能产生段错误或者访问到随机值
数组的大小和长度:C语言中数组的大小,定义出来后是固定的不能再修改。
大小:单个元素的大小*数据个数--> sizeof(数组名);
长度:数组整体的大小/单个元素的大小-->sizeof(arr)/sizeof(arr[0]);

冒泡排序:

        冒泡排序是一个排序算法

        逻辑:相邻的两个元素,两两比较,每次排出待排序序列中最大的元素放在最后,再进行下一次排序,直到序列中的元素都有序。排序需要排长度-1次

选择排序:

        选择排序是一个排序算法        

        逻辑:每次从待排序序列中找到最大/最小的元素和待排序序列中的第一个元素交换


作业:

1..思考如何交换两个数

1.1三杯水交换

程序源码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a=6,b=8,temp;
temp=a;
a=b;
b=temp;
printf("a=%d,b=%d\n",a,b);
return 0;
}

1.2算术求和

程序源码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a=6,b=8;
a=a+b;
b=a-b;
a=a-b;
printf("a=%d,b=%d\n",a,b);
return 0;
}

1.3异或交换

程序源码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a=6,b=8,temp;
a=a^b;
b=a^b;
a=a^b;
printf("a=%d,b=%d\n",a,b);
return 0;
}

2.定义一个整型数组,完成对数组中每一个元素的输入和输出

程序源码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a;
printf("请输入需要多大的数组:");
scanf("%d",&a);
int arr[a];
for(int i=0;i<a;i++)
{
scanf("%d",&arr[i]);
}
putchar(10);
for(int i=0;i<a;i++)
{
printf("arr[%d]=%d\t",i,arr[i]);
}
putchar(10);    
return 0;
}

3.求数组中元素的最大值

程序源码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int arr[6]={1,6,88,66,99,8};
int len =sizeof(arr)/sizeof(arr[0]);
int max=arr[0];
for(int i=1;i<len;i++)
{
if(arr[i]>max)
max=arr[i];
}
printf("max=%d\n",max);
return 0;
}
4.终端输入字符,遇到'\n'停止,计算输入的字母和数字字符的个数

程序源码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char c;
int letter_count=0;
int number_count=0;
while(scanf("%c",&c)==1)
{
if(c=='\n')
break;
else if(c>='0'&&c<='9')
number_count++;
else if(c>='A'&&c<='Z')
letter_count++;
else if(c>='a'&&c<='z')
letter_count++;
}
printf("letter_count=%d,number_count=%d\n",letter_count,number_count);
return 0;
}

5.整理思维导图

http://www.dtcms.com/a/321111.html

相关文章:

  • 自动驾驶数据闭环
  • 进程管理、系统高负载、cpu超过800%等实战问题处理
  • 机器人权利:虚实之间的伦理与法理探界
  • F5发布业界首创集成式应用交付与安全平台,开启ADC 3.0新时代
  • 【Oracle Linux 9.6】切换默认为命令行模式
  • git如何使用和操作命令?
  • 【/usr/bin/env: “bash\r”: 没有那个文件或目录】问题解决
  • C# GUI程序中的异步操作:解决界面卡顿的关键技术
  • 【C++动态版本号生成方案:实现类似C# 1.0.* 的自动构建号】
  • Ubuntu 系统本地部署 Dify 完整教程
  • MySQL查询语句(会持续更新)
  • Dart关键字完全指南:从基础到高级用法详解
  • [GESP202309 五级] 2023年9月GESP C++五级上机题题解,附带讲解视频!
  • 《Git从入门到精通:告别版本管理混乱》
  • Git 工程迁移指南
  • 如何在 Ubuntu 24.04 LTS 或 22.04/20.04 上安装 Apache Maven
  • ORACLE物化视图快速刷新失败原因查找
  • Oracle 的 exp(传统导出工具)和 expdp(Data Pump 导出工具)是两种命令对比
  • Python合并两个PDF文件
  • 汽车专题 | 视觉AI正在重构整车质检格局
  • OpenAPI(Swagger3)接口文档自定义排序(万能大法,支持任意swagger版本)
  • 基于AI MCP协议, 写一个MCP服务用于连接数据库执行sql
  • PostgreSQL技术大讲堂 - 第100讲:玩转PG数据库对象权限卷之迷宫
  • Langchain入门:构建一个基于SQL数据的问答系统
  • DM8数据库服务正常,但是登录报错 [-70019]:没有匹配的可登录服务器
  • 项目历程—可视化文件系统
  • ESP32-menuconfig(2) -- Application manager
  • MyBatis SQL映射与动态SQL:构建灵活高效的数据访问层 MyBatis SQL映射与动态SQL:构建灵活高效的数据访问层
  • wodpress结构化数据对SEO的作用
  • 【重磅发布】flutter_chen_keyboard -专注于键盘相关功能