


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、? 一个班学生的学习成绩? 一行文字? 一个矩阵 这些数据的特点是: 1.具有相同的数据类型2.使用过程中需要保留原始数据C 语言为这些数据,提供了一种构造数据类型:数组。所谓数组就是一组具有相同数据类型的数据的有序集一维数组及其应用例 1 :一维数组元素赋值及输出练习main()int i,a10;/* 定义数组整型数组 a ,它含有十个元素。 */* 通过 for 循环依次为数组 a 中的每个for(i=0;i<=9;i+)ai=i;/* 通过 for 循环依次输出数组 a 中的每元素赋值。 */ for(i=9;i>=0;i-) 个元素的值。 */printf("%
2、3d ",ai);运行结果:9 8 7 6 5 4 3 2总结:程序使 a0 到 a9/* 请注意输出元素的顺序 */1 0的值为09,然后按逆序输出例 2 :用数组来处理 求 Fibonacci菲波那契)数列问题,求出前40 个数并以每行 4 个数输出。Fibonacci数列:F1 =1n=1F2 =1n=2Fn= Fn-1+Fn-2n>3即: 11 2 3 5813。#include <stdio.h>main ( ) int i;long f 40 = 1, 1;/*定义长整型数组 f存放40个Fibonacci数,对第一个和第二个元素先赋初值1 */for
3、( i = 2; i < 40; i+) /*从第三个元素起分别利用前两个元素求和得到其值*/f i = f i-2 + f i-1;/*利用循环依次输出40个数*/for ( i = 0; i < 40; i+)if (i % 4 = 0) printf (HnH);行符*/printf ("%16ld", f i);制符的写法*/精品广每输出4个数输出一个换广 要注意长整型数据的输出格式控精品运行结果:D:lyhTC20TC.EXE1123581321345589144233377610987159725844181676510946177112865746
4、368750251213931964183178115142298320491346269217830935245785702887922746514930352241578163908816863245984102334152例3 :找一批数中的最大值mai n()精品int i,max,a10;printf("input 10 numbers:n"); / 输入提示信息 “请输入 10 个数”for (i=0;i<10;i+)/ 输入 10 个数到数组中scanf("%d",&ai);max =a0;for (i=1;i<10;i
5、+)if(ai>max) max=ai;maxprin tf(Hmaxmum=%dnH,max);运行结果:in put 10 nu mbers: 829456371精品/从数组中找最大的数赋值给/输出max的值精品maxmum=9例 4 :冒泡法排序(从小到大排序) 思路:将相邻两个数进行比较,将小的调到前头。若 n 个数比较,要 比较 n-1 趟,用 j 表示趟数,则第 j 趟要比较 n-j 次。main()int a11;int i,j,t;printf(input 10 numbers : nfor (i=1;i<11;i+)scanf( %d ”&ai);prin
6、tf( Vn ”); for(j=1;j<=9;j+)for(i=1;i<=10-j;i+)精品);if (ai>ai+1)t=ai;ai=ai+1;ai+1=t;Printf( “the sorted numbers :n”);for(i=1;i<11;i)printf( d ,a i);printf( n );/* 程序结束 */运行结果:Input 10 numbers :1 0 4 8 12 65 -76 100 -45 123The sorted numbers :-76 -45 0 1 4 8 12 8 12 65 100 123本程序中,第一个 for 循
7、环,是表示要循环的趟数,第二个 for 循 环,是表示每一趟里面循环的次数。例 5 :有一个已经排好序的数组,今输入一个整数,要求按原来排序的规律将它插入数组中为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。假设排序是从大到小进行的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i 时,该元素之前即为插入位置。然后从数组最后一个元素开始到该 元素为止,逐个后移一个单元。最后把插入数赋予元素 i 即可。如果 被插入数比所有的元素值都小则插入最后位置 main()int i,j,p,q,s,n,a11=320,260,258,154,68,5
8、7,45,16,8,2; for(i=0;i<=10;i+)printf("%d ",ai); /* 先输出原始排好序的数据序列 */ printf("n Input a number:n");scanf("%d",&n); /* 输入一个数插入到序列中 */ if (n< a9) a10=n; elsefor(i=0;i<10;i+)if(n> ai) for(s=9;s>=i;s-)as+1=as;break;ai=n ;prin tf("n result:n");/*输出
9、结果*/for(i=0;iv=10;i+)prin tf("%d ",ai);prin tf("n");运行结果:踊 D;lyhTC20TC.EIEthe original numbers:320 260 258 154 68 57 65 16 8 2 Input a number:88result:320 260 258 154 88 68 57 45 16 8 2本程序首先输入要插入的整数元素逐个比较,如果发现有n> ain。再用一个for语句把n和数组 时,则由一个内循环把i以后各元 素值顺次后移一个单元。后移应按照从后向前依次进行 ( 从
10、a9 开始 到 ai 为止 )。 后移结束跳出外循环。插入点为 i ,把 n 赋予 ai 即 可。 如所有的元素均大于被插入数,则并未进行过后移工作。此时 i=10 ,结果是把 n 赋于 a10 。最后一个循环输出插入数据后的数组 各元素值。二维数组及其应用。例程序如下:#inelude <stdio.h>void main()int a:2:3=«1 , 2,int b:3:2,i, j;printf(array a:n);for (i=0;i<=1;i+)for (j=0;j<=2;j+)精品3, 4, 5, 6;运行结果如下:array a:12 345
11、 6array b:142536printf( ” %5d ,a ij);ji =a 门】j 1 ;printf( " n");printf( array b: n );for (i=0;i<=2; i+)for(j=0;j<=1;j+)printf("%5d,b :ij);printf( n ); /* 程序结束 */例7 :有一个3 X 4的矩阵,要求编程序求出其中值最大的那个元素的值,以及所在的行号和列号。程序: main ( ) int i,j, row=0, colum=0, max;-10,10,- 5, 2static int a34=1
12、,2,3,4,9,8,7,6, max=a00;for (i=0;i<=2; i+)for (j=0; j<=3; j+)if (aij>max) max=aij; row=i;colum=j ;row,printf( "max=%d,row=%d, colum=%dn ", max, colum);输出结果为: max=10, row=2, colum=1例 8 :打印出以下的杨辉三角形(要求打印出 10 行)1 11 2 113311464115 10 101oooooooo oooooooo oooooooo精品精品杨辉三角是 (a+b) 的 n 次
13、幂的展开式系数,如:(a+b)0 展开后的系数是 1(a+b)1 展开后的系统数是 1 1(a+b)2 展开后的系数是 1 2 1(a+b)3 展开后的系数是 1 3 3 1从而我们得到杨辉三解的系数规律 ( 指数为 n):1 、各行第一个数都是 12 、各行最后一个数都是 13 、若用二维数组存放系数,每行存放一组,则从第二行开始除精品最后一个数与第一个数外,每个数都是其所在行的上一行同一列与前 一列之和。可以这样表示:# define N 11main()int i,j,aNN;for(i=1;i<N;i+)ai1=1;for(i=3;i<N;i+)for(j=2;j<=
14、i-1 ;j+)aiU=ai-1U-1+ai-1Ul; for(i=1;i<N;i+)forQ=1;j<=i;j+)printf("%6d ",aij);精品printf("n");printf("n");字符数组及其应用例9 :输出一个字符串main()char x = T b , O , y ;inti;for(i=0;i<10;i+)am , a ,printf( “c” ci); printf( "%n ");运行结果:I am a boy例10 :输出一个钻石图形#include <
15、;stdio.h>void main() char diamond 5精品;运行结果int i , j;for (i=0;i<5;i+) for (j=0;j<5;j+)printf( c , diamond ij);printf( " n );例11 :输入一行字符,统计其中有多少个单词,单词之间用空格分 隔开程序如下:#include <stdio.h>void main()char string 81 ; /* 定义一个字符型数组 */int i , num=0 ,word=0;/* 定义几个整型常量, i 用来控制循环次数, num 表示单词个数
16、, word 相当于一个标志 */char c; /* 定义一个字符型变量 */gets(string); /* 获取用户输入的一句话,在这句话的末尾系统会 自动添加一个结束标志 '0'*/for (i=O;(c=string i )!= ' 0 ' ;i+)/* 从 string0 开始判断,只要它不是结束标志,就执行下面的语句 */if(c= ') word=0;/*判断当前字符是不是空格,比如Iam a boy ,第一个 I 不是空格,所以 就不执行 word=0 ,而执行下 一句*/else if(word=0)/* 判断 word 是不是等于
17、0(word=0 表示把 0 赋给 word , word=0 表示判断 word 等不等于 0),显然 是的,因为开始时赋给 word 的值是 0*/1 赋给 word ; word=1; /* 所以执行语句:“把 num+ ”,此时 num 为 1 。*/num+;printf( There are %d words in the line. n , num);运行情况如下:I am a boy. /There are 4 words in the line.总结:可以看出 word 的目的就是防止 num 重复相加 例 12 :有 3 个字符串 , 要求找出其中最大者 .程序如下 :#include<stdio.h>#include<string.h>void main ( )char string 20 ;char str 3 20 ;int i;for
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版变电站电气设备采购与安装合同
- 2025版餐饮连锁企业股权投资合同
- 2025年度文化展览场地租赁合同范本
- 医疗教育中的技术伦理与患者隐私保护
- 2025年度网络文学作品编剧签约合同范本
- 2025版交通枢纽保安劳务承包管理合同
- 2025版生物材料购销合同模板
- 二零二五年度安置房配套设施建设监理合同模板
- 2025版农产品国际贸易质量保障合同
- 二零二五年度特色产业园厂房转租合同
- 六君子汤的现代中药制剂研究
- 中职学校招生介绍课件
- 《绷带包扎法》课件
- 打印-初升高衔接教材物理
- (《管理学原理与方法》周三多-第七版)第04章-管理道德与社会责任
- 矿用防爆锂离子蓄电池无轨胶轮车安全技术要求常用版
- 拼音拼读音节带声调完全版
- 泌尿外科利用PDCA循环降低持续膀胱冲洗患者膀胱痉挛的发生率品管圈QCC成果汇报
- 中国古代安全文化发展及其启示
- 水泥皮带廊道封闭施工方案
- 道德与法治课程2022课标解读
评论
0/150
提交评论