C 语言学习-05【数组】

embedded/2024/11/14 0:53:11/

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.ppmy.cn/embedded/136951.html

相关文章

详细分析Guava库中的注解@VisibleForTesting,用于标记提醒私有(附Demo)

目录 前言1. 基本知识2. Demo 前言 对于Java基本知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目】实战CRUD的功能整理&#xff08;持续更新&#xff09; 从实战中学习&#xff1a; 源码如下&…

【韩老师零基础30天学会Java 】06章 数组、排序和查找

第六章 数组、排序和查找 1. 数组&#x1f6a9;&#x1f6a9; 数组介绍&#xff1a; 数组可以存放多个同一类型的数据。数组也是一种数据类型&#xff0c;是引用类型。即:数组就是一组数据。 示例&#xff1a; double [] hens{3,5,1,3,4,2,50,7.8,88.8,1.1,5}; double totalWe…

ENSP作业——园区网

题目 根据上图&#xff0c;可得需求为&#xff1a; 1.配置交换机上的VLAN及IP地址。 2.设置SW1为VLAN 2/3的主根桥&#xff0c;设置SW2为VLAN 20/30的主根桥&#xff0c;且两台交换机互为主备。 3.可以使用super vlan。&#xff08;本次实验中未使用&#xff09; 4.上层通过静…

基于开源AI智能名片2+1链动模式S2B2C商城小程序源码的连环消费链条优化研究

摘要&#xff1a;随着电子商务的快速发展&#xff0c;如何提高顾客的复购率成为了商家关注的焦点。本文通过对开源AI智能名片21链动模式S2B2C商城小程序源码的研究&#xff0c;探讨了如何利用自动化促销模式构建连环消费链条&#xff0c;从而不断刺激顾客复购。本文首先介绍了连…

【大数据学习 | HBASE高级】region split机制和策略

1. region split机制 ​ HRegionServer拆分region的步骤是&#xff0c;先将该region下线&#xff0c;然后拆分&#xff0c;将其子region加入到hbase:meta表中&#xff0c;再将他们加入到原本的HRegionServer中&#xff0c;最后汇报Master。 split前&#xff1a;hbase:meta表有…

React 源码学习01 ---- React.Children.map 的实现与应用

1. 使用方法 React.Children.map(children, function[(thisArg)])2. 方法解释 在 children 里的每个直接子节点上调用一个函数&#xff0c;并将 this 设置为 thisArg。如果 children 是一个数组&#xff0c;它将被遍历并为数组中的每个子节点调用该函数。如果子节点为 null 或…

【Linux】常用命令(2.6万字汇总)

文章目录 Linux常用命令汇总1. 基础知识1.1. Linux系统命令行的含义1.2. 命令的组成 2. 基础知识2.1. 关闭系统2.2. 关闭重启2.3. 帮助命令&#xff08;help&#xff09;2.4. 命令说明书&#xff08;man&#xff09;2.5. 切换用户&#xff08;su&#xff09;2.6.历史指令 3.目录…

【LeetCode】【算法】33. 搜索旋转排序数组

LeetCode 33. 搜索旋转排序数组 题目描述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k…