为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

数组

2013-06-15 31页 ppt 230KB 10阅读

用户头像

is_859771

暂无简介

举报
数组null编程练习编程练习1、输入任一年份,判断该年是否闰年 #include"stdio.h" main() { int year; printf("请输入一个年份:"); scanf("%d",&year); if((year%4==0&&year%100!=0)||(year%400==0)) printf("%d是闰年!\n",year); else printf("%d不是闰年!\n",year); } 编程练习编程练习2、输入一个字符,判断它是否大写...
数组
null编程练习编程练习1、输入任一年份,判断该年是否闰年 #include"stdio.h" main() { int year; printf("请输入一个年份:"); scanf("%d",&year); if((year%4==0&&year%100!=0)||(year%400==0)) printf("%d是闰年!\n",year); else printf("%d不是闰年!\n",year); } 编程练习编程练习2、输入一个字符,判断它是否大写字母,如果是,将它转换成小写字母,如果不是不转换,然后输出最后的字符。 #include"stdio.h" main() { char ch; scanf("%c",&ch); ch=(ch>='A'&& ch<='Z')?(ch+32):ch; printf("%c\n",ch); } 编程练习编程练习3、判断m是否素数 #include”stdio.h” #include”math.h” main() {int m,i,k; scanf(“%d”,&m); k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1)printf(“%d是素数”,m); else printf(“%d不是素数”,m); } 求100~200间的全部素数#include"stdio.h" #include"math.h" main() { int m,i,k,n=0; for(m=101;m<=200;m++) {k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1) {printf("%d ",m);n=n+1;} if(n%10==0) printf("\n"); } } 编程练习编程练习4、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个,到了第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。#include"stdio.h" main() { int t1,t2,day; t2=1; for(day=9;day>=1;day--) { t1=(t2+1)*2; t2=t1; } printf("%d\n",t1); } null第六章 数 组 数组是内存中的一种数据集合,用于存贮较大量的相同类型的数据元素,在程序中数组有一个名字,并通过下标访问数组的某个元素。 6.1 一维数组 一、一维数组的定义 语法格式:元素类型名 数组名[元素个数]; 如:int a[5],b[8];double y[15],c[20]; #define N 10 long pos[N];int c[N+1];/*正确*/ 例如:int n=10,a[n];/*错误*/只能是整型常量表达式 int n; scanf(“%d”,&n); int a[n];null 二、一维数组元素的引用 语法格式:数组名[下标表达式] 如:若有定义 int a[4]; 则元素a[0],a[1],a[2],a[3]是数组的有效元素。a[4]并非有效元素,属于下标超范围。下标超范围会引起死机或程序错误,但C语言不自动检查下标是否超范围,故必须在设计阶段从程序逻辑上保证下标不超范围。必须是整型常量或整型表达式数组下标固定从0开始编号6.1 一维数组int a[10]; /*定义数组长度为10*/ t=a[6]; /*引用a数组中序号为6的元素,此时 6不代表数组元素*/ a[0]=a[5]+a[7]-a[2*3] 数组元素的引用数组元素的引用#include “stdio.h” main() { int i,a[10]; for(i=0;i<=9;i++) a[i]=i; for(i=9;i>=0;i--) printf(“%d”,a[i]); printf(“/n”); }null一维数组的元素在内存中是连续存放的。 例如:若有int a[10];,则a数组中包含的10个元素在内存中的存储情况如下:三、一维数组存贮空间分析:如: double a[5]; 该数组共5个元素,存贮5个double型实数,共占用40字节存贮空间。6.1 一维数组null四、一维数组的初始化1、在定义数组时对数组元素赋予初值。例如: int a[10]={0,1,2,3,4,5,6,7,8,9}; 2、可以只给一部分元素赋值。例如: int a[10]={0,1,2,3,4}; 3、如果想使一个数组中全部元素值为0,可以写成: int a[10]={0,0,0,0,0,0,0,0,0,0}; 或 int a[10]={0}; 4、对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。例如: int a[5]={1,2,3,4,5};或 int a[]={1,2,3,4,5}; 但是若数组长度与提供初值的个数不相同,则数组长度不能省略。 int a[10]={1,2,3,4,5};只初始前5个元素,后5个元素为07.1 一维数组null例6.1 将数值5,3,4,5,3,6,6,4,3,2,9赋予数组a并求其和。 程序: #include main() {int a[]={5,3,4,5,3,6,6,4,3,2,9}; int sum,i; sum=0; for (i=0;i<=10;i++) sum+=a[i]; printf("sum=%d\n",sum); } 6.1.3 一维数组应用举例null例6.2 计算5个学生成绩的平均分,并计算每个学生成绩与平均分之差,最后将全部成绩打印出来。6.1.3 一维数组应用举例# include "stdio.h" main() { int i,j=0,a[5]; printf("输入成绩="); for(i=0;i<5;i++) { scanf("%d",&a[i]); j=j+a[i]; } j=j/5; printf("平均成绩=%d\n",j); printf("成绩 与平均成绩之差\n"); for(i=0;i<5;i++) printf("%d %d\n",a[i],a[i]-j); }经典例题经典例题1.以下能正确定义一维数组的选项是________。 A)int num[]; B)#define N 100; int num[N]; C)int num[0…100] D)int N=100; int num[N]; 正确答案:B(知识点:一维数组的定义) 2.假设int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占的字节数是________。 A)3 B)6 C)10 D)20 正确答案:D(知识点:一维数组的定义) null3.以下程序运行后的输出结果是________。 main() { int i,n[]={0,0,0,0,0}; for(i=1;i<=4;i++) { n[i]=n[i-1]*2+1; printf("%d ",n[i]); } 正确答案:1 3 7 15(知识点:一维数组的定义与引用) null 一、二维数组的定义 语法格式: 元素类型名 数组名[下标1维数][下标2维数]; 如:int a[5][8];  /*5行8列整型数组*/ 又如:#define N 6 long m[N][N]; /*N行N列长整型数组*/ 行数列数6.2 二维数组null二、二维数组元素的引用 语法格式: 数组名[行下标][列下标] 其中,下标表达式必须是整型表达式;下标固定从0开始编号。 如: 若有定义int a[3][4]; 则左上角元素下标为a[0][0], 右下角元素下标为a[2][3]。 C语言不自动检查下标是否超范围,故必须在设计阶段从程序逻辑上保证下标不超范围。null例如,若有int a[2][3];,则a数组中包含的二行三列共6个元素在内存中的存储情况如下: 三、二维数组存贮空间分析:null初始化方法: 标准int a[2][3]={{1,2,3},{4,5,6}}; 注意:用内层{}表示行,每行可视作一个一维 数组,并按行初始化。 2.对所有元素初始化可以缺省行数和内层{} 如:上述初始化可写为 int a[][3]={{1,2,3},{4,5,6}}或 int a[][3]={1,2,3,4,5,6}; 或 int a[2][3]={1,2,3,4,5,6};6.2.2、二维数组的初始化null(3)每行可以只对前几列元素进行初始化,余下的元素初值自动为0。 如: int a[][3]={{1},{2,3}};则 矩阵元素初值如下:(4)指定行数时,可以只初始化前面几行,余下各行元素初值自动为0. 如: int a[4][3]={{1},{2,3,4},{5,6}}; 则矩阵初值如下:1 0 0 2 3 01 0 0 2 3 4 5 6 0 0 0 06.2.2、二维数组的初始化null例6.4 将下表存入数组a,按行求元素之和并显示。 25 13 32 10 54 536.2.3 应用举例 程序: #include main() { int a[2][4],i; a[0][0]=25;a[0][1]=13;a[0][2]=32; a[1][0]=10;a[1][1]=54;a[1][2]=53; for (i=0;i<=1;i++) a[i][3]=a[i][0]+a[i][1]+a[i][2]; for (i=0;i<=1;i++) printf("%d %d %d %d \n",a[i][0],a[i][1],a[i][2],a[i][3]); }null例6.5:输入一个三行四列的矩阵A,计算其转 置矩阵B,输出矩阵B。b[j][i]=a[i][j]6.2.3 应用举例 null6.2.3 应用举例 #include main() { int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; printf("array a:\n"); for (i=0;i<=1;i++) { for (j=0;j<=2;j++) { printf("%5d",a[i][j]); b[j][i]=a[i][j]; } printf("\n"); } printf("array b:\n"); for (i=0;i<=2;i++) { for (j=0;j<=1;j++) printf("%5d",b[i][j]); printf("\n"); } } 程序:null例6.6 编写一程序,求全班40个学生每个学生三门功课的平均成绩。 1.定义数据结构 ①40个学生3门功课的存放:int a[40][3]; ②每个学生三门功课的平均成绩存放:int v[40]; 2.输入学生成绩 3.求每个学生平均成绩: v[i]= (a[i][0]+a[i][1]+a[i][2])/3, 4.输出结果.分析:6.2.3 应用举例 null程序: #include main() { int a[40][3],s,i,j,v[40]; for(i=0;i<40;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<40;i++) { s=0; for(j=0;j<3;j++) s=s+a[i][j]; v[i]=s/3; } for(i=0;i<40;i++) printf("%d %d\n",i,v[i]); } null例6.7 在N行M列的二维数组x中,找出数组的最大值以及此最大值所在的行、列下标。 分析:1.定义二维数组:int x[N][M]; 定义变量 max:存放最大值 line:存放最大值行号 col:存放最大值列号 2.找最大值:max初始值= x[0][0], line及col的初始值为0, 再将二维数组x中的元素逐个与max进行比较,确定新的max和line及col的值,直到二维数组x中的元素全部处理完。 3.输出数据6.2.3 应用举例 null程序运行结果如下: input array numbers: 12 31 40 20 67 80 max=80 line=1 col=2程序: #define N 2 #define M 3 #include "stdio.h" main() { int i,j,x[N][M],max,line,col; printf("input array numbers:\n"); for(i=0;i试题
分析:二维数组初始化时,对数组第一维的长度可以不指定,但第二维的长度不能省略。 null2.有以下程序: main () { int aa[4][4]={ {1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,s=0; for(i=0;i<4;i++) s+=aa[i][l] printf("%d\n",s) } 执行后的输出结果是________。 A)11 B)19 C)13 D)20 正确答案:B(知识点:二维数组的定义、引用及初始化) 试题分析:该程序是求aa[0][l]、aa[1][l]、aa[2][l]、aa[3][l]之和并输出。 null3、有如下程序: main() { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for (i=1;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf(“%d\n”,s); } 该程序的输出结果是( )。 A 18 B 19 C 20 D 21答案:Anull4、程序填空,以下程序求数组a中最大值与最小值。 main() {int i,j=0,max,min,a[]={38,4,8,20,5}; max=min=a[0]; for(i=0;i<5;i++) {if(maxa[i])_____; } Prntf(“max=%d,min=%d\n”,max,min); } 运行结果: Max=38,min=4 答案:min=a[i]null以下程序运行后输出的结果是: Main() { int i,j,a[][3]={1,2,3,4,5,6,7,8,9}; For(i=0;i<3;i++) For(j=i+1;j<3;j++) a[i][j]=0; For(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%d”,a[i][j]); Printf(“\n”); }A 1 2 3 B 1 0 0 C 1 2 3 D 1 0 0 0 5 6 2 5 0 4 5 6 4 5 0 0 0 9 3 6 9 7 8 9 7 8 9答案:Dnull以下函数rotate的功能是:将a所指的N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。#define N 4 Void rotade(int a[][N],int b[][N]) {int i,j; for(i=0;i
/
本文档为【数组】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索