C语言程序设计 数 组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

for(k=0;;k++){ q=a1/a2; r=a1%a2; q_array[k]=q; finish=0; for(i=0;i<k;i++){ if (r==r_array[i]) { 将新得到的 finish=1; 余数与记录 start=i+1; 的所有余数 break; 比较 } } if (finish==1) break; r_array[k]=r; 将余数记录下来 a1=r*10; 并作为新的被除数 } for (i=0;i<k+1;i++) { if (i==1) printf("."); if (i==start) printf("["); printf("%1d",q_array[i]); } printf("]\n"); }

float Ms.Smth[15]; int 341401[34];
1. 只能由字母、数字、下划线组成; 2. 第一个字符不能是数字; 3. 不能使用保留字。


必须指明长度;


int number[10]; double x[3*4+5]; char name[]; int a(10); long b{4};
int b[6]={1,2,3,,5,6}; int i; float data[i]={3,2,1}; float x; float data[x]={3,2,1};

完整初始化的简略方式:
float x[ ]={1.5, 2, 3.5, 4}; int a[ ]={1,2,3,4,5,6,7,8,9,10};
可以是常量或常量表达式


方括号是数组的标志; 只有一个名字; 同类型变量的集合.

数组的初始化

例: int a[4]={1,2,3,4};
a
1
a[0]
2
a[1]
3
a[2]
4
a[3]
数组的初始化

完整初始化:
float x[3]={1.5, 2, 3.5}; int a[4]={0,1,2,3};
数组的应用

例6.用筛选法求质数
思路: 1 2 3 4 5 6
7
13 19
8
14 20
9
15 21
10
16 22
11
17 23
12
18 24
25
31
26
32
27
33
28
34
29
30
… 100
注意:数组的下标从零开始
#include <stdio.h> main () { int data[100],i,j,step; for (i=0;i<100;i++) data[i]=i+1; for (i=1;i<100;i++) { if (data[i]!=0) { step=data[i]; 删除 for (j=i+step;j<100;j+=step) data[j]=0; 操作 } } for (i=0;i<100;i++) { if (data[i]!=0) printf("%d,",data[i]); } }
二维数组的初始化

完全初始化:
int a[2][3]={{1,2,3},{4,5,6}}; (分行初始化) int a[2][3]={1,2,3,4,5,6}; (顺序初始化)

完全初始化的简略形式:
int a[][3]={{1,2,3},{4,5,6}}; int a[][3]={1,2,3,4,5,6};
#include <stdio.h> main () { int a[100],i; for (i=0;i<100;i++) { a[i]=i; } }
数组的应用

例3:输入一个大数,计算其位数并逆向打印
#include <stdio.h> main() { char c; int data[100],k,n=0; while ((c =getchar())!=‘\n’) { data[n]=c-48; n++; } printf(“%d\n”,n); }
!_ |*~=-., |_,-'` | | /^\ !_ / \ |*`~-., /, \ |.-~^` /#" \ | _/##_ _ \_ _ _| _ _ _ [ ]_[ ]_[ ]_[ ] [ ]_[ ]_[ ]_[ ]_[ ] |_=_-=_ - =_| !_ |_=_ =-_-_ = =_| !_ |=_= | |*`--,_- _ | |*`~-.,= [] | |.-'|= [] | !_ |_.-"`_| | |_=- | |*`~-., | |=_| /^\ |=_= | |_,-~` /^\ |_ - =[] | _ / \_|_=- _ _ _| _| _ / \|=_| [ ]/, \[ ]_[ ]_[ ]_[ ]_[ ]_[ ]_/, \[ ]=| |/#" \_=-___=__=__- =-_ -=_ /#" \| _ [] | _/##_ _ \_-_ = _____ _/##_ _ \_ |\ [ ]_[ ]_[ ]_[ ]=_0~{_ _ _}~0 [ ]_[ ]_[ ]_[ ]=| \ |_=__-_=-_ =_|-=_ | , | |_=-___-_ =-__|_ | \ | _- =|-_ | ((* | |= _= | |___\ |= -_= |= _ | ` | |_-=_ |=_ |/+\| | =_ |_ = _ `-.-` | =_ = = |=_||+|| |-_=- _ |=_ = |=_= -_ | = ||+|| |=_- /+\ | -= |_=- /+\ |=_ |^^^| |=_ |+|+| |= - -_,--,_ |_= |+|+| | -_ |= | | -|+|+| |-_= / | | \ |=_ |+|+| |-=_ |_-/ |=_=|+|+| | =_= | | | | |_- |+|+| |_ = |=/ | _ ^^^^^ |= - | | <&> |=_=^^^^^ |_=|/ |=_ = | =_-_| | | | | =_ | -_ |
常见错误:
int a[4]={1,2,3,4,5}; int @sohu[3]={1,2,3};

部分初始化:
float x[5]={1.5, 2, 3.5}; char name[30]={‘N’,’o’,’ ’,’N’,’a’,’m’,’e’}; 部分初始化只能在前部
float data[10]={};

部分初始化:
int a[3][3]={{2},{},{3,1}};
wk.baidu.com
2 0 0 0 0 0 3 1 0
二维数组的应用

例1. 二维数组的赋值 0
4 8
#include <stdio.h> main() { int i,j,array[3][4]; for (i=0;i<3;i++) for(j=0;j<4;j++) array[i][j]=i*3+j; }

无初始化:
float x[4]; int a[3];
数组的使用

与基本变量相同的用法:
int num[4]={0,0,0,0}; num[0]=1; num[1]=5; num[2]=2;

数组中的变量必须是相同类型的:
num[1]=1; num[2]=3.14; → num[2]=3; num[3]=‘a’; → num[3]=97;
if (c>‘0’ && c<’9’) { data[n]=c-48; n++; } if (n>=100) break;
for(k=n-1;k>=0,k--) printf(“%d”,data[k]);
较高的程序
容错性是一个优秀程序区别于普通程序的重要标志之一。
数组的应用
例4:选择法排序
1. 2. 3. 4. 5. 确定搜索范围; 遍历数据,选出其中的最大值; 将最大的数据和最前面的数据交换; 搜索范围减小一个; 重复步骤2和3,直至排序完毕。
// --------------sort-----------------for (i=0;i<num;i++) { max=data[i];imax=i; for (k=i;k<num;k++) { if (data[k]>max) 选出一个 { 最大的 max=data[k]; imax=k; } } temp=data[i]; data[i]=data[imax];交换 data[imax]=temp; } for (i=0;i<num;i++) printf("%f\n",data[i]); }
1
5 9
2
6
3
7
10 11
#include <stdio.h>
二维数组的应用

void main() { int a[ ][3]={{1,2,3},{4,5,6},{7,8,9}};
矩阵运算
1 2 3 1 4 7
int b[ ][3]={{1,4,7},{2,5,8},{3,6,9}};
int c[3][3]; int i,j; for (i=0;i<3;i++) { for(j=0;j<3;j++) { c[i][j]=a[i][j]*b[i][j]; printf("%d ",c[i][j]); } printf("\n"); }
定义:
数据类型 数组名[数组长度]
例:
int w[10]; float data[100]; long class[34]; char name[30]; double number, a[5], i, b[4];
W[0] W[1] W[8] W[9]
W
……
注意事项


命名规则与基本类型变量相同;

使用与定义的区别:
int a[3]; a[3]=3; → 定义语句 → 赋值语句

数组的边界:
下标的变化范围从0开始。 num[0]=1; num[1]=5; num[2]=2; num[3]=0;
数组的存贮方式
计算机内存是线性空间
int a[6]; int b[5];
int c[2];
a
b
c
a[0] a[1] a[2] a[3] a[4] a[5] b[0] b[1] b[2] b[3] b[4] c[0]
二维数组的定义
定义:
数据类型 数组名[长度1][长度2]
int w[2][3];
W[0][0] W[0][1] W[0][2]
W[0][0] W[0][1] W[0][2] W[1][0] W[1][1] W[1][2]
W[1][0] W[1][1]
W[1][2]
计算机的内存是线性空间。 右边的下标变化较快。
c[1]
注意:
C语言中,数组的越界使用是最常见的隐形错误,是程序调试的难点。
数组的使用

例1. 数组基本操作

例2. 数组基本操作
#include <stdio.h> main () { int a[10],i; a[0]=1; a[1]=2; a[2]=a[0]+a[1]; a[3]=a[2]*a[1]; printf(“%d,%d,%d,%d”, a[0],a[1],a[2],a[3]); }
}
num=i;
for (;;) { 变动标志 change=0; for (k=0;k<num-1;k++) { 相邻两数比较 if (data[k]<data[k+1]) { temp=data[k]; 交换 data[k]=data[k+1]; data[k+1]=temp; change=1; 变动标志 } } if (change==0) break; } for (i=0;i<num;i++) printf("%f\n",data[i]); }
C语言程序设计
数组
数组是程序处理大量数据的重要手段
数据类型

基本数据类型:
整 型:int, unsigned int, long 实 型:float, double, long double 字符型:char

构造数据类型:
数 组:无关键字 结 构:struct 共用体:union
数组的定义
数组的本质:一组相同类型的变量的顺序集合。
数组的应用

例5. 冒泡法排序
1.扫描数组,相邻元素相比较,将较大的 调换到前面。 2.重复扫描,直至没有需要交换的元素。 #include <stdio.h> void main() { float data[100],temp; int i,k,change,num; for (i=0;i<100;i++) { scanf("%f",&data[i]); if (data[i]==-9999.0) break;
#include<stdio.h> void main() { float data[100],temp,max; int i,k,imax,num; // ----------input data -------------for (i=0;i<100;i++) { scanf("%f",&data[i]); if (data[i]==-9999.0) break; 读入数据 } num=i; // -----data number
a
4 5 6 7 8 9
b a•b
1 8 21 8 25 48
2 5 8 3 6 9
a′
1 4 7
a×b
14 32 50 32 77 122
2 5 8
3 6 9
21 48 81
50 122194 }
矩阵运算与计算机绘图是二维数组的典型应用
二维数组的应用
图形处理、 数学计算、 数据库等。
((`'-"``""-'`)) ) - ( / (o _ o) \ \ ( 0 ) / _'-.._'='_..-'_ /`;#'#'#.-.#'#'#;`\ \_)) '#' ((_/ #. .# '#. .#' / '#. .#' \ _\ \'#. .#'/ /_ (((___) '#' (___)
数组的应用

例7.计算循环小数
思路:
1.记录每次除法的余数; 2.和以前的记录比较,直至发现重复为止。
#include <stdio.h> void main() { int a1,a2,q,r,q_array[1000],r_array[1000]; int i,k,start,finish=0; scanf("%d",&a1); scanf("%d",&a2);
相关文档
最新文档