C语言数组应用举例

这篇具有很好参考价值的文章主要介绍了C语言数组应用举例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【示例1】求一个整型数组中的最大值和最小值。
#include<stdio.h>
int main()
{int i,max,min,a[10]={0};
for(i=1;i<=9;i++)
scanf(“%d”,&a[i]); /从控制台获取用户输入并赋值给数组元素/
max=a[0];min=a[0]; /假设a[0]是最大值也是最小值/
for(i=1;i<=9;i++)
{if(a[i]>max)max=a[i];
if(a[i]<min)min=a[i];}
printf(“max=%d\n”,max); /* printf(“The max is %d, The min is %d\n”, max, min);/
printf(“min=%d\n”,min);
system(“pause”); /
getch();或者return 0;*/
}
运行结果:
2 123 45 100 575 240 799 710 10 90↙
The max is 799, The min is 2
这段代码有两点需要说明:

  1. 从控制台获取数组元素时,我们一次性输入10个整数才按下回车键,而不是每输入一个整数就按一次回车键,这正是利用了标准输入缓冲区。

  2. 要想求得数组中的最大值和最小值,就得循环比较数组中的所有元素,并设置两个变量 max 和 min 来接收。以最大值为例,开始循环之前,先假设第0个元素是最大值(当然你也可以假设第1、2、3 个元素),然后用 max 和数组中剩余的元素进行比较,如果某个元素的值比 max 大,就用这个元素的值替换 max 的值,等把所有元素遍历完了,max 中就是最大值了。
    关于排序和查找

学完了数组,有两个重要的知识点要求大家掌握,那就是排序(Sort)和查找(Search),比如:
给你 10 个打乱顺序的整数,要能够按照从小到大或者从大到小的顺序输出;
给定一个字符串 str1,以及一个子串 str2,要能够判断 str2 是否在 str1 中。
排序和查找的方法有很多种,我们把它们设置成了单独的一章进行讲解,请查看:C语言排序和查找
如果你希望更加深入和透彻地学习编程,请了解VIP会员(赠送1TB资料)或C语言一对一辅导。
用C语言来统计文件中单词的个数
C语言判断回文字符串
I/O(输入/输出)控制方式
C语言获取开机时间
gets()
输入/输出(I/O)设备分配与回收
系统调用
经典进程同步问题3:哲学家进餐问题
C语言输出2的N次幂
fputs()
#include<stdio.h>
int main()
{
int a[10] ;
int max, min;
int i,x;
int len=sizeof(a)/sizeof(int);
for (i=0;i<=9;i++)
{
scanf(“%d”,&x);
a[i]=x;
}
max=a[0];min=a[0];
for(i=1; i<len; i++)
{
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
}
printf(“The max is %d, The min is %d\n”, max, min);
printf(“%d %d\n”,sizeof(a),sizeof(int));
system(“pause”);
}
简单的修改了一下 输入十个整数 输出最大数和最小数
2015年12月24日

C语言选择排序算法及代码
选择排序是排序算法的一种,这里以从小到大排序为例进行讲解。
基本思想及举例说明

选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置;然后,选出第二小的数,放在第二个位置;以此类推,直到所有的数从小到大排序。

在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换。

下面,以对 3 2 4 1 进行选择排序说明排序过程,使用min_index 记录当前最小的数所在的位置。

第1轮 排序过程 (寻找第1小的数所在的位置)
3 2 4 1(最初, min_index=1即数3)
3 2 4 1(3 > 2, 所以min_index=2)
3 2 4 1(2 < 4, 所以 min_index=2)
3 2 4 1(2 > 1, 所以 min_index=4, 这时候确定了第1小的数在位置4)
1 2 4 3 (第1轮结果,将3和1交换,也就是位置1和位置4交换)

第2轮 排序过程 (寻找第2小的数所在的位置)
1 2 4 3(第1轮结果, min_index=2,只需要从位置2开始寻找)
1 2 4 3(4 > 2, 所以min_index=2)
1 2 4 3(3 > 2, 所以 min_index=2)
1 2 4 3(第2轮结果,因为min_index位置刚好在第2个位置,无需交换)

第3轮 排序过程 (寻找第3小的数所在的位置)
1 2 4 3(第2轮结果, min_index=3,只需要从位置2开始寻找)
1 2 4 3(4 > 3, 所以min_index=4)
1 2 3 4(第3轮结果,将3和4交换,也就是位置4和位置3交换)

至此,排序完毕。
总结及实现

选择排序对大小为N的无序数组R[N]进行排序,进行N-1轮选择过程。第i轮选取第i小的数,并将其放在第i个位置上。当第N-1次完成时,第N小(也就是最大)的数自然在最后的位置上。

下面给出选择排序的C语言实现。
#include<stdio.h>
#include<stdlib.h>
#define N 9
void select_sort(int a[],int n) /* 选择排序实现,n为数组a的元素个数*/
{ int i,j; /进行N-1轮选择/
for(i=0; i<n-1; i++)
{
int min_index = i; /找出第i小的数所在的位置/
for(j=i+1; j<n; j++)
{
if(a[j] < a[min_index])
{
min_index = j;
}
}
/将第i小的数,放在第i个位置;如果刚好,就不用交换/
if( i != min_index)
{
int temp = a[i];
a[i] = a[min_index];
a[min_index] = temp;
}
}
}
int main()
{
int num[N] = {89, 38, 11, 78, 96, 44, 19, 25};int i;
select_sort(num, N);
for(i=0; i<N; i++)
printf(“%d “, num[i]);
printf(”\n”);
system(“pause”);
getch();
}
注意:选择排序是一种不稳定的排序算法,可能会打乱两个相同数字的原有顺序。

例如,序列 5 8 5 2 9, 按照从小到大排序,第一轮会将第1个数字5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序是一种不稳定的排序算法。

C语言输出2的N次幂
输出 2 的 N 次幂:1, 2, 4, 8, … 一直到 2^N。

设N=16,代码如下:
#include <stdio.h>
#define N 16
int main(void)
{
int n; /记录当前指数/
long int val = 1; /保存 2^n 的结果/

printf("\t  n  \t    2^n\n");
printf("\t================\n");

for (n=0; n<=N; n++)
{
printf(“\t%3d \t %6ld\n”, n, val);
val = 2*val;
}
system(“pause”);
getch();
}

输出结果: n 2^n

0 1
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256
9 512
10 1024
11 2048
12 4096
13 8192
14 16384
15 32768
16 65536

C语言判断回文字符串
输入一个字符串,判断其是否为回文。

所谓回文字符串,是指从左到右读和从右到左读完全相同的字符串。

主要涉及知识点:字符数组的输入输出,及相应的处理。

这个问题,可以从字符串的两头开始比较,即第1个字符和倒数第1个字符比较,第2个字符和倒数第2个字符比较,以此类推…如果出现字符不相等的情况,说明不是回文,如果全部相等,说明是回文。

代码如下:
#include <stdio.h>
#include <string.h>
#include <string.h>
void main(){
char s[100]; /存放输入的字符串/
int i, j, n;
printf(“enter character string:\n”);
gets(s);

n=strlen(s);
for(i=0,j=n-1;i<j;i++,j--)
    if(s[i]!=s[j]) break;
    if(i>=j)
        printf("It is palindrome list\n");/*是回文串*/ 
    else
        printf("It is not palindrome list\n");/*不是回文串*/
 printf("%s\n",s);
 system("pause");

getch();
}
运行结果:
输入字符串:abcdedcba
是回文串
或者:
输入字符串:www.coderbbs.com
不是回文串

用C语言来统计文件中单词的个数 ?
文本检索是软件最常用的一个功能,用C语言写一段程序,统计某个文件中单词的个数。

提示:单词是以空格为分隔的。

文本检索是软件最常用的一个功能,下面的代码将教你如果使用C语言统计单词的个数。

代码实现:
纯文本新窗口
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
/argc: 统计运行程序时命令行参数的个数/
/* argv[]: 储存每个参数的字符串指针,每一个元素对应一个参数/
int main (int argc,char argv[])
{
int ch,bian=0,count=0;
char find[50],temp[1000];
FILE pt; /文件指针/
/判断是否输入文件/
if (argc != 2){
printf(“请使用格式: %s 文件名”,argv[0]);
exit(1); /非正常退出/
}
/
判断能否成功打开文件
/
if ((pt = fopen(argv[1],“r”))== NULL){ /将argv[1]赋值给指针pt/
printf(“打开文件 %s 失败”,argv[1]);
exit(1);
}
printf(“请输入要查找的单词:”);
gets(find);
while((ch=getc(pt))!=EOF){ /EOF 表示文件结束/
if ((ch!=’ ‘)&&(ch!=’\n’)){
temp[bian]=ch;
bian++;
} else {
temp[bian]=‘\0’;
if ((strcmp(find,temp))==0) count++;
bian=0;
}
}
printf(“共在文件%s中查找到字符串”%s" %d 个\n",argv[1],find,count);
getch();
}

代码分析上面的程序,需要在 dos 命令行下运行。 首先 cd 到程序的编译目录,然后输入程序名和文件名,例如,笔者编译后的程序位于 E:\cDemo\Debug\cDemo.exe,那么运行方式如下:

这里需要简单介绍一下 main() 函数。main() 函数是程序的入口函数,代码内部无法向其传参,只能在程序运行时由系统在向其传参。一般情况下不需要向main()函数传参,但是如果希望程序启动时可以读取有用数据,进行初始化处理,那么可以这样来传参:
int main (int argc, char *argv[])
argc 表示参数的个数,argv[] 以数组形式保存传递的所有参数。

注意,当前程序会作为第一个参数传递,例如上面输入 cdemo.exe demo.txt,那么 argc =2,argc[0]=cdemo.exe,argc[1]=demo.txt

还有一种简单的传参方式,就是将文件(图标)拖到程序上,程序就会立即运行,并将该文件作为一个参数,效果与 cdemo.exe demo.txt 相同。

关于main()函数的更多介绍请查看:C语言mian()函数详解

最后说一下实现单词搜索的思路,这是本程序的关键,这部分代码位于while循环内。

用gets读取用户输入的单词并保存到变量find,while((ch=getc(pt))!=EOF) 对文件进行读取,直到文件结束。

用if对读取的进程进行判断:将每次读取到的单个字符ch依次放入字符串数组temp[]中,直到遇到空格符或者换行符,则这个单词结束,添加’\0’结束标记。用strcmp()函数与用户搜索的单词find进行比较,如果匹配,则返回0,计数器count加1。最后令bian置0。

注意:英语书写时以空格来分隔每个单词,故我们以空格作为单词结束的标志。而之所以要加上换行符,是因为如果没有检测换行符,当单词在行首(或行末)时,就会和上一行(或下一行)的最后一个单词连在一起,视为1个单词与find比较,导致统计结果缺失。文章来源地址https://www.toymoban.com/news/detail-476213.html

到了这里,关于C语言数组应用举例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 字节数组(byte[])和整型(int)的相互转换

          恰巧碰到了字节数组和整型的转换问题,特在此总结一下。将 int 按照小端法映射到 byte[] 中。即最低 8 位放在 byte[0] 中,依次类推。       这个实现起来比较简单,先保存最低的 8 位到 byte 数组中,然后不断的右移 8 位,每次保存低 8 位数据即可,参考代码:(

    2023年04月12日
    浏览(72)
  • python实战应用讲解-【numpy数组篇】常用函数(八)(附python示例代码)

    目录 Python Numpy MaskedArray.cumprod()函数 Python Numpy MaskedArray.cumsum()函数 Python Numpy MaskedArray.default_fill_value()函数 Python Numpy MaskedArray.flatten()函数 Python Numpy MaskedArray.masked_equal()函数 numpy.MaskedArray.cumprod() 返回在给定轴上被屏蔽的数组元素的累积乘积。在计算过程中,被屏蔽的值在内部

    2024年02月02日
    浏览(58)
  • python实战应用讲解-【numpy数组篇】实用小技巧(五)(附python示例代码)

    目录   查找两个NumPy数组的并集 查找NumPy数组中的唯一行 扁平化 一个NumPy数组的列表 使用NumPy在Python中扁平化一个矩阵 从元素上获取NumPy数组值的幂 为了找到两个一维数组的联合,我们可以使用Python Numpy库的函数numpy.union1d()。它返回唯一的、经过排序的数组,其值在两个输

    2023年04月14日
    浏览(45)
  • python实战应用讲解-【numpy数组篇】实用小技巧(八)(附python示例代码)

    目录   如何在NumPy数组上映射一个函数 方法一:numpy.vectorize()方法 方法2:使用lambda函数 方法3:用一个数组作为函数的参数来映射一个NumPy数组 如何使用给定的索引位置重新排列二维NumPy数组的列 如何用NumPy删除只包含0的数组行 如何删除Numpy数组中包含非数字值的列

    2024年02月01日
    浏览(49)
  • 【C语言】-- 将一个数组逆序输出

    目录 题目 问题分析 代码 测试结果 欢迎各位大佬🤠🤠  将一个数组逆序输出 第一种方法:直接从最后一个元素进行输出即可,倒着输出。 第二种方法:将数组的第一个元素与最后一个元素交换,依次类推,然后正顺序输出。 

    2024年02月03日
    浏览(45)
  • C语言练习示例38:求一个3*3矩阵对角线元素之和

    题目:求一个3*3矩阵对角线元素之和 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。 程序源代码: 以上实例输出结果为

    2024年02月08日
    浏览(46)
  • 实现对象转成字节数组(整型支持按位写入,字符串则按字节写入)

    闲着无聊,写了一个对象转换成byte[]的工具类,支持整型按位写入(大大节省空间),具体步骤如下: 1. 定义实体类和注解 2. 工具类     3. 测试结果     参考文章: https://www.cnblogs.com/Dotnet9-com/p/17981055

    2024年01月23日
    浏览(48)
  • C语言数据存储 — 整型篇

    在C语言中,了解相关数据存储对一名优秀程序员来说是至关重要的! 通过相关原理,从而更加深入地理解计算机如何存储和操作数据,这对于编程人员来说是非常重要的。只有深入理解计算机存储和操作数据的原理,才能编写出更加高效、可靠的程序。 本文将详细介绍C语言

    2024年02月09日
    浏览(47)
  • 将一个简单的矩阵(二维数组)转置 并输出(C语言)

    描述: 输入一个3行4列的矩阵(二维数组)a,接着将矩阵a转置为矩阵b,然后输出矩阵b。 输入: 输入3行,每行输入4个整数,整数之间用空格隔开。 输出: 输出4行,每行输出3个整数,整数之间用空格隔开。 输入样例 1:  输出样例 1:

    2024年02月07日
    浏览(47)
  • 当前主流开发语言有哪些:了解其特性、应用与示例

    随着技术飞速发展,编程语言的丰富多样性为开发者提供了广泛的选择。每种语言都有其适用的场景和独特的特性。本文将综合探讨目前市场上最流行、最多人使用的几种主流开发语言,包括它们的特点、典型应用场景以及简单示例代码。 特点 Python 因其简洁明了的语法和强

    2024年02月22日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包