第4章 数组
- 格式:ppt
- 大小:6.79 MB
- 文档页数:45
第4章 数组与指针有关的题目,请主动略过!4.1内容概述本章主要介绍了数值数组和字符数组的定义、初始化、元素引用和数组数据的输入与输出,字符数组实现字符串、字符串函数的实现与调用。
指针数组与数组指针定义、元素引用。
利用一维数组实现如挑数、排序、求和等实际应用问题。
利用二维数组实现矩阵的应用问题。
利用字符数组实现字符串的各种操作。
本章知识结构如图4.1所示。
图4.1 第4章知识结构图考核要求:掌握一维数组、二维数组、字符数组和 的定义和初始化;掌握数组元素存储地址计算;掌握数组元素的下标法、指针法引用;掌握字符数组与字符串的区别与联系;掌握有关字符串处理函数的使用方法;能利用一维数组、二维数组解决向量、矩阵等实际应用问题。
重点难点:本章的重点是一维数组、二维数组和字符数组的定义、初始化、元素引用,字符串处理函数的使用。
本章的难点是字符串与字符数组的区别, 和数组元素的指针法引用。
核心考点:数组的定义、初始化和数组元素的引用方法,一维数组、二维数组和字符数组的实际应用,字符串的处理方法。
4.2 典型题解析【例4.1】以下对一维数组a 的定义中正确的是( )。
A. char a(10);B. int a[0..100];C. int a[5];D. int k=10;int a[k];解析:一维数组定义的一般形式为:类型标识符 数组名[常量表达式]其中,常量表达式可以是任意类型,一般为算术表达式,其值表示数组元素的个数,即数组长度。
答案:C数组数值数组 定义 初始化元素引用 数组元素输入和输出 字符数组 定义 初始化 元素引用 数组元素输入和输出【例4.2】以下对一维数组的定义中不正确的是()。
A. double x[5]={2.0,4.0,6.0,8.0,10.0};B. int y[5]={0,1,3,5,7,9};C. char ch1[ ]={'1', '2', '3', '4', '5'};D. char ch2[ ]={'\x10', '\xa', '\x8'};解析:可以对一维数组的全部元素或部分元素赋初值。
1.在一个从小到大的数列中插入一个数,不改变原来顺序。
#define N 5#include"stdio.h"main(){int a[N]={1,2,8,10},x,i;scanf("%d",&x);printf("原数组为:");for(i=0;i<N-1;i++)printf("%d ",a[i]);for(i=N-2;i>=0;i--)if(a[i]>x)a[i+1]=a[i];else {a[i+1]=x;break;}printf("\n新数组为:");for(i=0;i<=N;i++)printf("%d ",a[i]);}2.将一个数列中的数逆序存放。
#define N 5#include"stdio.h"main(){int a[N],x,i,j,t;for(i=0;i<=N-1;i++)scanf("%d",&a[i]);printf("原数组为:");for(i=0;i<=N-1;i++)printf("%d ",a[i]);for(i=0,j=N-1;i<j;i++,j--){t=a[i];a[i]=a[j];a[j]=t;}printf("\n新数组为:");for(i=0;i<=N-1;i++)printf("%d ",a[i]);}3.打印杨辉三角形。
(1)#include"stdio.h"main(){int a[6][6],i,j;for(i=0;i<6;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<6;i++)for(j=1;j<i;j++)a[i][j]=a[i-1][j]+a[i-1][j-1];for(i=0;i<6;i++){for(j=0;j<=i;j++)printf("%5d",a[i][j]);printf("\n");}}(2)中间#include"stdio.h"main(){int a[6][6],i,j;for(i=0;i<6;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<6;i++)for(j=1;j<i;j++)a[i][j]=a[i-1][j]+a[i-1][j-1];for(i=0;i<6;i++){for(j=0;j<7-i;j++)printf("%5c",' ');for(j=0;j<=i;j++)printf("%5d%5c",a[i][j],' ');printf("\n");}}4.打印某年的日历#include "stdio.h"main(){int year,week,j,i,m,day,k=0;intmaxday[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31 }};printf("请输入年份");scanf("%d",&year);printf("请输入该年第一天是星期几(0=星期天,…,6=星期六)");scanf("%d" ,&week);if(year%4==0&&year%100!=0||year%400==0)k=1;m=week;for(j=1;j<=12;j++){printf("\n= = = = = =%d年%2d月= = = = = =\n", year,j);printf(" SUN MON TUE WED TUR FRI SAT\n");for(i=0;i<m;i++)printf("%4c",' '); /*将该月份的第一天准确定位于所在的星期的位置*/ for(day=1;day<=maxday[k][j];day++){printf("%4d",day);week=(week+1)%7;if(week==0)printf("\n");}m=week;}}。