C 语言学习-05【数组】

1、一维数组元素的操作

输入一个数,按原来排序的规律将它插入到一个一排列好的数组中:

#include <stdio.h>int main() {int i, data, a[10] = {2, 3, 6, 9, 11, 12, 14, 17, 19};printf("Primitive series: \n");for (i = 0; i < 9; i++) {printf("%d ", a[i]);}printf("\n");printf("Please enter the data you want to insert: \n");scanf("%d", &data);for (i = 8; i >= 0; i--) {if (a[i] < data) {for (int j = 8; j > i; j--) {a[j + 1] = a[j];}a[i + 1] = data;break;} else {continue;}}printf("The sequence after inserting data: \n");for (i = 0; i < 10; i++) {printf("%d ", a[i]);}return 0;
}
  • 运行结果:
    在这里插入图片描述

对某城市五月份每天的气温进行统计,找出最大值及对应的是那一天

#include <stdio.h>int main() {int i, index, max, a[31];printf("enter data: \n");for (i = 0; i < 31; i++) {scanf("%d", &a[i]);}max = a[0];index = 0;for (i = 1; i < 31; i++) {if (a[i] > max) {max = a[i];index = i;}}printf("max = %d, index = %d", max, index + 1);return 0;
}
  • 运行结果:
    在这里插入图片描述

有 10 个同学的成绩,要求把他们的成绩从高到低排序

#include <stdio.h>int main() {int score[10];int i, j, t;printf("Please enter the scores of 10 students: \n");for (i = 0; i < 10; i++) {scanf("%d", &score[i]);}printf("\n");for (j = 0; j < 9; j++) {for (i = 0; i < 9 - j; i++) {if (score[i] < score[i + 1]) {t = score[i];score[i] = score[i + 1];score[i + 1] = t;}}}printf("Well-ranked grades: \n");for (i = 0; i < 10; i++) {printf("%d ", score[i]);}printf("\n");
}
  • 运行结果:
    在这里插入图片描述

2、一维数组应用举例

统计获选人的选票:

#include <stdio.h>void main () {int x, n[4] = {0};printf("Please enter the candidate number: ");scanf("%d", &x);while (x) {n[x]++;printf("Please enter the candidate number: ");scanf("%d", &x);}printf("\nStatistical result: \n");for (x = 1; x <= 3; x++) {printf("The number %d candidate has %d votes\n", x, n[x]);}
}
  • 运行结果:
    在这里插入图片描述

有一个大小为 50 的整数数组,里面的数字是随机生成的,均介于 1 到 99 之间,但是数字有重复,需要去除数组中的数字进行存储

#include <stdio.h>
#include <stdlib.h> // srand(), rand()
#include <time.h> // time()int main() {int a[50], b[50], i, j, temp, t, count;srand((unsigned int)time(NULL)); // 设置当前时间为种子for (i = 0; i < 50; i++) {a[i] = rand() % 100 + 1;}printf("Randomly generated array: \n");for (i = 0; i < 50; i++) {printf("%4d", a[i]);if ((i + 1) % 10 == 0) {printf("\n");}}for (i = 0; i < 49; i++) {for (j = 0; j < 50; j++) {if (a[i] > a[j]) {temp = a[i];a[i] = a[j];a[j] = temp;}}}printf("The array is sorted from smallest to largest: \n");for (i = 0; i < 50; i++) {printf("%4d", a[i]);if ((i + 1) % 10 == 0) {printf("\n");}}t = 0;for (i = 0; i < 50;) {b[t++] = a[i];for (j = 1;;j++) {if (a[i] == a[i + j]) {continue;}if (a[i] != a[i + j]) {break;}}i += j;}count = t;printf("The array after deduplication contains %d data\n", count);for (i = 0; i < count; i++) {printf("%4d", b[i]);if ((i + 1) % 10 == 0) {printf("\n");}}return 0;
}
  • 运行结果:
    在这里插入图片描述

3、字符数组的初始化

讲一句话中的每个英文单词的瘦子米转换成大写:

#include <stdio.h>int main() {char str[10] = {'g', 'o', 'o', 'd', ' ', 'l', 'u', 'c', 'k', '!'};int i, t = 0;for (i = 0; i < 10; i++) {printf("%c", str[i]);}printf("\n");for (i = 0; i < 10; i++) {if (t == 0) {if (str[i] == ' ') {t = 0;continue;} else {str[i] -= 32;t = 1;}} else {if (str[i] == ' ') {t = 0;continue;}}}for (i = 0; i < 10; i++) {printf("%c", str[i]);}return 0;
}
  • 运行结果
    在这里插入图片描述

4、字符串和字符串结束标志

输出字符串的有效长度:

#include <stdio.h>int main() {char str[] = "I am a student.";int i, count = 0;for (i = 0; str[i] != '\0'; i++) {putchar(str[i]);count++;}printf("\nThe valid length of the string is %d", count);return 0;
}
  • 运行结果:
    在这里插入图片描述

5、字符串输入函数

输入一段话,同级其中单词的个数

#include <stdio.h>int main() {char str[100];int i = 0, count = 0, flag = 0;puts("Please enter a paragraph: ");gets(str);while (str[i] != '\0') {if (flag == 0) {if (str[i] == ' ') {flag = 0;} else {count++;flag = 1;}} else {if (str[i] == ' ') {flag = 0;}}i++;}printf("There are %d English words in this passage\n", count);return 0;
}
  • 运行结果:
    在这里插入图片描述

6、字符串操作方法

原型功能
int strlen(char *d)返回字符串 d 的长度,不包括终止符 NULL
char *strcat(char *d,char *s)把字符串 s 接到字符串 d 后面,返回字符串 d
char *strncat(char *d,char *s,int n)把字符串 s 中至多 n 个字符接到字符串 d 后面;
如果 s 小于 n 个字符,用 ‘\0’ 补上,返回字符串 d
char *strcpy(char *d,char *s)复制字符串 s 到字符串 d,返回字符串 d
char *strncpy(char *d,char *s,int n)复制字符串 s 中至多 n 个字符到字符串 d;
如果 s 小于 n 个字符,用 ’\0’ 补上,返回字符串 d
void *memcpy(void *d,void *s,int n)从 s 复制 n 个字符到 d,返回字符串 d
void *memmove(void *d,void *s,int n)和 memcpy 相同,即使 d 和 s 部分相同也运行
int strcmp(char *d,char *s)比较字符串 d 和字符串 s。
如果 d < s,返回 -1;
如果 d > s,返回 1;
如果 d == s,返回 0.
int strncmp(char *d,char *s,int n)比较字符串 d 中至多 n 个字符和字符串 s。
如果 d < s,返回 -1;
如果 d > s,返回 1;
如果 d == s,返回 0.
int memcmp(void *d,void *s,int n)比较字符串 d 的前 n 个字符与 s,和 strcmp 返回值相同
char *strchr(char *d,char c)返回一个指向字符串 d 中字符 c 第 1 次出现的指针;
或者如果没有找到 c,则返回指向 NULL 的指针
char *strstr(char *d,char *s)返回一个指向字符串 d 中字符串 s 第 1 次出现的指针;
或者如果没有找到 s,则返回指向 NULL 的指针
void *memchr(void *d,char c,int n)返回一个指向被 d 所指向的 n 个字符中 c 第 1 次出现的指针;
或者如果没有找到 c,则返回指向 NULL 的指针
void *memset(void *d,char c,int n)使用 n 个字符 c 填充 void* 类型变量 d
void *strupr(char *p)字符串中字母转换成大写字母
void *strlwr(char *p)字符串中字母转换成小写字母

7、字符数组应用

输入 5 个同学的姓名,按字典顺序从小到大排序

#include <stdio.h>
#include <string.h>int main() {char stu[5][20];char name[20];int i, j, t;puts("Please enter student name: ");for (i = 0; i < 5; i++) {gets(stu[i]);}puts("Lexicographic ordering: ");for (i = 1; i < 5; i++) {for (j = 0; j < 5 - i; j++) {if (strcmp(stu[j], stu[j + 1]) > 0) {strcpy(name, stu[j]);strcpy(stu[j], stu[j + 1]);strcpy(stu[j + 1], name);}}}for (i = 0; i < 5; i++) {puts(stu[i]);}return 0;
}
  • 运行结果:
    在这里插入图片描述

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

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

相关文章

H5移动端预览PDF方法

新建页面 新建一个页面以便去预览对应的pdf 新建完后在 pages.json 文件内去新增对应路由 页面内容 <template><view class"page"><view class"pdf"><view id"demo"></view></view><view class"b…

嵌入式学习(11)-WS2812灯珠

WS2812的级联控制协议非常简单。通过一根信号线就可以进行串行异步信号发送。 下面显示了四个WS2812通过数据性级联的方式。在串行通讯中使用不同高低电平脉冲表示数据0,1编码。 使用GPIO模拟时序时&#xff1a;GPIO的驱动频率大约是1MHz 硬件电路&#xff1a; 软件代码实现&…

流类库与输入输出

来源&#xff1a;《C语言程序设计》 像C语言一样&#xff0c;C语言也没有输入输出语句。 但C标准库中有一个面向对象的输入输出软件包&#xff0c;即I/O流类库。 流是I/O流类的中心概念。 ------ I/O流类库是C语言中I/O函数在面向对象的程序设计方法中的一个替换产品。 -…

RK3288 android7.1 适配 ilitek i2c接口TP

一&#xff0c;Ilitek 触摸屏简介 Ilitek 提供多种型号的触控屏控制器&#xff0c;如 ILI6480、ILI9341 等&#xff0c;采用 I2C 接口。 这些控制器能够支持多点触控&#xff0c;并具有优秀的灵敏度和响应速度。 Ilitek 的触摸屏控制器监测屏幕上的触摸事件。 当触摸发生时&am…

【AI写作宝-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

一文熟悉新版llama.cpp使用并本地部署LLAMA

0. 简介 最近是快到双十一了再给大家上点干货。去年我们写了一个大模型的系列&#xff0c;经过一年&#xff0c;大模型的发展已经日新月异。这一次我们来看一下使用llama.cpp这个项目&#xff0c;其主要解决的是推理过程中的性能问题。主要有两点优化&#xff1a; llama.cpp …

安全、高效、有序的隧道照明能源管理解决方案

徐悦 &#xff08;安科瑞电气股份有限公司 上海嘉定201801&#xff09; 前言 双碳数字化能源管理对高速公路来说是个新鲜事。今年的中央经济工作会议提出&#xff1a;将“做好碳达峰、碳中和工作”作为2021年的任务之一&#xff0c;而我国高速公路里程15.5万公里&#xff0c;…

Navigating Net 算法简介

0. Inro \textbf{0. Inro} 0. Inro 1️⃣一些要用到的符号 ( U , dist ⁡ ) (U, \operatorname{dist}) (U,dist)为基础度量空间&#xff0c; S ⊆ U S \subseteq U S⊆U为包含 n ≥ 2 n \geq 2 n≥2个对象的 Input \text{Input} Input​ h ⌈ log ⁡ 2 diam ⁡ ( S ) ⌉ h\lef…

flutter 语法糖库 flutter_magic 发布 1.0.1

众所周知&#xff0c;flutter 是一款由谷歌开发的跨平台工具&#xff0c;一直在开发者心中久负盛名。 但是语法死亡嵌套是个诟病。 最近有 flutter 开发者 panjing&#xff0c;发布了 flutter 语法精简库&#xff0c;flutter_magic&#xff0c;可以让语法变成类似 swiftui 一…

【日志】392.判断子序列

2024.11.8 【力扣刷题】 392. 判断子序列 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/is-subsequence/?envTypestudy-plan-v2&envIdtop-interview-150 整个题从一开始就是打算从双指针的思想往下走的。但是&#xff0c;我设置了四个变量sLeft…

07 Lambda和StreamAPI

目录 1.Lambda表达式 语法格式&#xff1a; 简单示例 2.函数式接口 常见的函数式接口 1. Supplier 2. Consumer 3. Function,> 4. Predicate 总结 3.流式编程——StreamAPI 基本概念 常见的 Stream 操作 1. 创建 Stream 2. 中间操作 3. 终端操作 简单练习 …

TMDOG的Gin学习笔记_02——Gin集成支付宝支付沙箱环境

TMDOG的Gin学习笔记_02——Gin集成支付宝支付沙箱环境 博客地址&#xff1a;TMDOG的博客 作者自述&#xff1a; 最近忙着整理自己的项目代码&#xff0c;终于有时间更新一下博客。这次的内容是关于如何在Gin框架下集成支付宝的支付沙箱环境&#xff0c;具体包括如何初始化支付…

Docker网络概述

1. Docker 网络概述 1.1 网络组件 Docker网络的核心组件包括网络驱动程序、网络、容器以及IP地址管理&#xff08;IPAM&#xff09;。这些组件共同工作&#xff0c;为容器提供网络连接和通信能力。 网络驱动程序&#xff1a;Docker支持多种网络驱动程序&#xff0c;每种驱动程…

OpenHarmony4.1蓝牙芯片如何适配?触觉智能RK3568主板SBC3568演示

当打开蓝牙后没有反应时&#xff0c;需要排查蓝牙节点是否对应、固件是否加载成功&#xff0c;本文介绍开源鸿蒙OpenHarmony4.1系统下适配蓝牙的方法&#xff0c;触觉智能SBC3568主板演示 修改对应节点 开发板蓝牙硬件连接为UART1&#xff0c;修改对应的节点&#xff0c;路径为…

QT 如何使QLabel的文字垂直显示

想要实现QLabel文字的垂直显示&#xff0c;可以通过使用“文字分割填充换行符”的方式来实现QLabel文字垂直显示的效果&#xff0c;下面是效果图&#xff1a; 具体实现代码&#xff1a; #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow:…

数据结构选择题及答案

一、选择题 1、下列查找方法中&#xff0c;&#xff08; &#xff09;适用于查找有序单链表。 A&#xff0e;分块查找; B&#xff0e;哈希查找; C&#xff0e;顺序查找; D&#xff0e;二分查找; 2、在有n个结点的二叉树的二叉链表表示中&#xff0c;空指针数为( )。 A&#xf…

2024上半年上午30

CPU没有减法器的说法

php实现excel表格数据快速入库

项目场景&#xff1a;大概有一百来份excel表格数据需要整理入库&#xff0c;基础字段一样&#xff0c;如果按照传统的处理方法&#xff0c;需要先整理好数据&#xff08;数据清洗、合并等&#xff09;&#xff0c;并且按照系统导入模板整理出来&#xff0c;费时费力。 需要解决…

【青牛科技】GC5931:工业风扇驱动芯片的卓越替代者

在工业领域&#xff0c;工业风扇的稳定高效运行对于维持良好的生产环境至关重要。而驱动芯片作为工业风扇控制系统的核心元件&#xff0c;其性能直接影响风扇的工作状态。芯麦 GC5931 作为一款新型驱动芯片&#xff0c;在替代 A5931/Allegro 应用于工业风扇中展现出了非凡的优势…

CST案例分析:TLM算法仿真5G毫米波手机天线和整机

5G时代&#xff0c;产品复杂&#xff0c;更新换代快&#xff0c;如何快速仿真不同的设计版本是影响研发效率的关键问题。本期我们用达索系统SIMULIA自己的手机模型来演示5G毫米波的仿真。 &#xff08;图片仅为概念演示&#xff0c;未经达索系统授权不得使用&#xff09; 完整的…