c语言 利用数组处理数据,C语言利用数组处理数据.ppt

第6章 利用数组 处理批量数据 数学科学学院:汪小平 [email protected] 2/31 一维数组概述 n C语言简单变量无法表示下标,当要表示数学中一 系列数:a0,a1,a2,……,an时,就无能为力,如果用单 个变量表示,很难简便的表达算法。 #include int main() { int i,a1,a2,a3,sum=0; scanf(“%d%d%d“, for(i=1;i int main() { int i,a[3],sum=0; scanf(“%d%d%d“, for(i=0;i int main() { int i; char a[10]; for(i=0;i=0;i--) printf(“%c“,a[i]); return 0; } 6/31 一维数组的初始化 n 三种数组的初始化非常相似。数组在定义时就可以 初始化元素,格式为: 数组类型 数组名[常量表达式]={对应类型元素列表} 例如:int a[4]={1,2,3,4}; n 数组元素如果没有初始化,其值是不定的。 n 初始化规则有下面几条: v 列表元素个数可以少于数组元素个数,这时剩下元 素初始化为0(字符类型相当于’\0’)。切记不能多于定 义的元素个数,否则编译会报错 例:int a[10]={0}; 7/31 一维数组的初始化 v 利用初始化,也可以不定义数组长度,通过初值列 表确定元素的个数。 例:char ch[]={‘C’,’h’,’i’,’n’,’a’}; 8/31 一维数组应用举例 例1 输出以下的杨辉三角形(要求为12行) 9/31 一维数组应用举例 #include #define N 12 int main(void) { int i,j; int a[N]={1};//第一个元素为1,其余元素为0 printf(“%-5d\n“,a[0]); for(i=1;i0;j--) a[j]+=a[j-1]; for(j=0;j int main(void) { int k,i=0; unsigned kk; char ch[32]={0}; scanf(“%d“, kk=k; //直接传送,转化为无符号数 do { ch[i]=kk%2; kk=kk/2; i++; }while(kk!=0); for(i=31;i=0;i--) printf(“%d“,ch[i]); return 0; } scanf (“%d“, 12/31 一维数组应用举例 例3 输入10个数,进行排序,升序输出。 分析:排序方法很多,简单的有:直接插入排序、 冒泡法、简单选择排序。这里用简单选择排序。 13/31 一维数组应用举例 #define N 10 #include int main(void) { int i,j,k,t,a[N]; for(i=0;i int main(void) { int i,j,t,a[3][3]={8,1,6,3,5,7,4,9,2}; for(i=0;i int main(void) { int i,j,t,a[3][3]={8,1,6,3,5,7,4,9,2}; for(i=0;i int main(void) { int i,j,k,a[4][4],b[4][4],c[4][4]={0}; for(i=0;i10); a[i][j]=k; while((k=rand())10); b[i][j]=k; } 19/31 二维数组举例 for(i=0;i int main(void) { int i,j,row=0,col=N/2,data[N][N]={0}; for(i=1;i=N)/*已在右上角*/ { row=1; col=N-1; } else/*只在第0行上*/ row=N-1; } 23/31 二维数组举例 else if(col=N)/*只可能在右列外*/ col=0; if(data[row][col]0)/*如果当前位置已填充*/ { row+=2; col--; }/*到此已找到正确的填充位置row和col*/ data[row--][col++]=i; } for(i=0;i int main(void) { char str[20],newstr[20]; int i,k; printf(“Please input a string:“); scanf(“%s“,str); printf(“%s“,str); for(k=0;str[k]!='\0';k++); for(k--,i=0;k=0;k--,i++) newstr[i]=str[k]; newstr[i]='\0'; printf(“\n%s\n“,newstr); return 0; } 27/31 字符串及其使用 #include int main(void) { char str[20]; int i; printf(“Please input a string:“); scanf(“%s“,str); for(i=0;is2,返回一个大于0的数 ,若s1 int main(void) { char ch[81]={'\0'}; int i,k=0; for(i=79;(ch[i]=getchar())!='.';i--) if(ch[i]'9' printf(“\n%s,%d“, return 0; } 32/31 习题 P168 2、4、8、12、13、14、15

展开阅读全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值