程序设计基础--C语言【五】

server/2024/9/24 1:44:57/

数组

目录

数组

5.1.一维数组

5.1.1.一维数组的引用

5.1.2.一维数组的初始化

5.1.3.一维数组的程序举例

5.2.二维数组

5.2.1.二维数组的定义

5.2.2.二维数组的引用

5.2.3.二维数组的初始化

5.2.4.举例

5.3.字符数组与字符串

5.3.1.字符组的初始化

5.3.2.字符数组的输入输出


5.1.一维数组

数组元素只有一个下标

类型说明符 数组名[表达式]

例如:int array[5] 定义了5个整型元素的一维数组。元素下标从0开始,所以它最后一个元素是array[4]

5.1.1.一维数组的引用
数组名[下标]

array[3]=1 赋值

下标可以是整型常量或整型表达式,像:array[4-1]相当于array[3]

5.1.2.一维数组的初始化
  1. 定义数组是对全部数组元素赋值                                                                                                int arr[5]={0,1,2,3,4};
  2. 只给一部分赋值                                                                                                                          int arr[8]={0,1,2,3,4}
  3. 对数组的全部元素赋值是,数组长度可以默认                                                                           int arr[]={0,1,2,3,4}与上1等价
  4. 指定初始化项目                                                                                                                           int arr[6]={0,0,0,0,0,12}等价与int arr[6]={[5]=12}
5.1.3.一维数组的程序举例

【程序案例】求数列1,1,2,3,5,8...的前40个数

F1=1

F2=1

Fn=F(n-1)+F(n-2)   (n>=3)

数组可以写作:f[i]=f[i-1]+f[i-2];

#include <stdio.h>
#include <stdlib.h>int main()
{int f[40]={1,1};int i;for(i=2;i<40;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<40;i++){if(i%4==0)printf("\n");printf("%12d",f[i]);}printf("\n");return 0;
}

运行结果:

【例2】输入5个数,找出最大值最小值和平均数

#include <stdio.h>
#include <stdlib.h>int main()
{float num[5],max,min,sum=0,ave;int i;for(i=0;i<5;i++)scanf("%f",&num[i]);max=min=num[0];for(i=0;i<5;i++){if(num[i]<min)min=num[i];if(num[i]>max)max=num[i];sum=sum+num[i];
}
ave=sum/5;
printf("最大值:%.2f\n最小值:%.2f\n平均数:%.2f\n",max,min,ave);return 0;
}

运行结果:

【❤冒泡排序法排列】(升序排列)

#include<stdio.h>
int main()
{float score[5],temp;int i,j;for(i=0;i<5;i++)scanf("%f",&score[i]);for(i=1;i<5;i++)/*外层循环控制趟数n个数需要n-1趟*/for(j=0;j<5;j++)/*内层循环控制次数n个数需要n次·*/{if(score[j]>score[j+1]){/*交换两数的值*/temp=score[j];score[j]=score[j+1];score[j+1]=temp;}}for(i=0;i<5;i++)printf("%7.2f",score[i]);printf("\n");return 0;}

运行效果:

5.2.二维数组

5.2.1.二维数组的定义

格式:

类型说明符 数组名[表达式1][表达式2]

例如:

float array[3][4]

定义了一个3*4的(3行4列),共12个元素的数组。

5.2.2.二维数组的引用
数组名[下标1][下标2]

第一个下标数可以省略第二个不行。

5.2.3.二维数组的初始化

与一维数组类似。

5.2.4.举例

将二维数组a的行和列的元素存到另一个二维数组b中去

例如:

a为:

1     2     3

4     5     6

b为:

1        4

2        5

3        6

#include<stdio.h>
#include <stdlib.h>
int main()
{int a[2][3]={{1,2,3},{4,5,6}};int b[3][2],i,j;for(i=0;i<=1;i++){for(j=0;j<=2;j++){printf("%5d",a[i][j]);b[j][i]=a[i][j];}printf("\n");}for(i=0;i<=2;i++){for(j=0;j<=1;j++)printf("%5d",b[i][j]);printf("\n");}return 0;}

运行效果:

【❤杨辉三角】

#include<stdio.h>
#include <stdlib.h>
int main()
{int arr[10][10],i,j;for(i=0;i<10;i++){arr[i][0]=1;arr[i][i]=1;for(j=1;j<i;j++)arr[i][j]=arr[i-1][j-1]+arr[i-1][j];}for(i=0;i<10;i++){for(j=0;j<=i;j++){printf("%5d",arr[i][j]);}printf("\n");}return 0;}

运行效果:

5.3.字符数组与字符串

5.3.1.字符组的初始化

 1.逐个字符初始化:char str[6]={'H','e','l','l','o','\0'};

可以写做:char str[]={'H','e','l','l','o','\0'};           元素为6个

但是不能写成:char str[]={'H','e','l','l','o'};         元素为5个,只能视作大小为5的字符数组,而不能认为是一个字符串。

2.用字符串常量初始化字符数组

char str[6]={"Hello"};

char str[6]="Hello";

两个都是对的。

char str[5]="Hello";是错的。

二维字符数组中,第一维数组长度表示字符串个数;第二维数组长度表示最长字符串的设定。

同样第一维可以省略。

5.3.2.字符数组的输入输出

1.以%c的格式逐个输入输出字符

%c会将空格回车或tab键作为有效字符输入

2.以%s的格式将字符串作为一个整体输入输出
以%s格式输入字符是,空格回车或tab键字符串输入结束标志。

由于字符数组名就是数组的首地址,所以输入%s时前面不用加&。

遇到\0就结束。

3.使用字符处理函数gets()和puts()把字符串作为一个整体输入输出。

char str[13];
gets(str);
puts(str);

输入字符串中若包括空格,Tab键,均能正常输入,仅以回车作为字符串输入结束的标志。


http://www.ppmy.cn/server/29902.html

相关文章

【再探】设计模式— 工厂方法、单例及原型模式

创建型设计模式是处理对象创建的设计模式&#xff0c;主要特点是“将对象的创建与业务代码分离”。一共有五种&#xff1a;工厂方法模式、单例模式、原型模式、抽象工厂模式及建造者模式。 1 单例模式 需求&#xff1a; 在整个系统中只需要一个实例。管理共享资源&#xff0…

C#面试题目含参考答案(二)

前言 面试是应聘一个工作岗位的环节&#xff0c;来考察一个人的工作能力与综合素质。在应聘C#程序员或与C#相关岗位时&#xff0c;我们都会被问到一些与.NET、C#、数据库、业务知识或编程思想等问题。 题目 31、值类型和引用类型的区别 参考答案&#xff1a; 1、值类型的数…

深度学习之基于Tensorflow卷积神经网络智能体操健身系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着人们健康意识的提高和数字化技术的快速发展&#xff0c;智能健身系统逐渐成为健身领域的新趋势。…

计算机视觉(CV)是什么以及应用场景

计算机视觉&#xff08;Computer Vision, CV&#xff09;是指计算机利用摄像机、图像传感器等设备获取图像或视频&#xff0c;并对它们进行处理和分析&#xff0c;以实现对图像或视频中的物体、场景以及其属性的理解和识别的技术领域。CV的目标是让计算机能够像人类一样“看”和…

保护您的连接:无线网络安全探究

目录 一.无线局域网安全 1. 概述 2. WEP 安全协议 3. WPA/WPA2/WPA3 安全协议 二.移动网络安全 三.实际案例 KRACK 漏洞 Stagefright 漏洞 四.结论 一.无线局域网安全 1. 概述 无线局域网&#xff08;WLAN&#xff09;安全是保护家庭和企业网络免受未经授权访问和攻击…

万界星空科技商业开源MES+项目合作+商业开源低代码平台

今天我想和大家分享的是一套商业开源的 MES制造执行管理系统带源码。对于制造业而言&#xff0c;MES 是一个至关重要的系统&#xff0c;它可以帮助企业提高生产效率、优化资源利用、提高产品质量&#xff0c;从而增强市场竞争力。 什么是 MES&#xff1f; MES 是指通过计算机技…

C语言 | Leetcode C语言题解之第55题跳跃游戏

题目&#xff1a; 题解&#xff1a; #define max(a, b) (((a) > (b)) ? (a) : (b))bool canJump(int* nums, int numsSize){int cover 0;int i;// 只可能获取cover范围中的步数&#xff0c;所以i<coverfor(i 0; i < cover; i) {// 更新cover为从i出发能到达的最大…

遍历JavaScript对象(字典)

在JavaScript中&#xff0c;对象通常被用来作为字典使用&#xff0c;因为它们是由键值对组成的。当我们需要遍历这些键值对时&#xff0c;有几种常用的方法。 使用for...in循环 for...in循环是JavaScript中用于遍历对象属性的常用方式。它会遍历对象所有可枚举的属性&#xf…