备课数组.docx
《备课数组.docx》由会员分享,可在线阅读,更多相关《备课数组.docx(40页珍藏版)》请在冰豆网上搜索。
![备课数组.docx](https://file1.bdocx.com/fileroot1/2023-8/19/c0005253-2e1a-4bef-a75d-1e51205023a1/c0005253-2e1a-4bef-a75d-1e51205023a11.gif)
备课数组
课题序号
授课班级
12计一、12计二班
授课课时
2课时
授课形式
理论
授课章节
名称
一维数组的定义及引用
使用教具
教学目的
1.一维数组的定义
2.一维数的引用
3.一维数组的初始化
教学重点
1.一维数的引用
教学难点
1.一维数的引用
课外作业
教学后记
课堂教学安排
教学过程
主要教学内容及步骤
(一)前堂回顾
(二)导入新课
(三)新授
五)作业布置:
例:
求1+2+…+10的值。
1.使用for循环进行编程main()
{intsum,i;
sum=0;for(i=1;i<=10;i++)
sum=sum+i;printf(“1+2+…+10=%d”,sum);}
运行结果:
1+2+…+10=55
2.使用while循环进行编程
main(){
intsum,i;
sum=0;i=1;
while(i<=10)
{sum=sum+i;i++;}
printf(“1+2+…+10=%d”,sum);}
运行结果:
1+2+…+10=55
迄今为止,我们用于编程的数据类型都是C语言的基本数据类型。
实际上除了整型、字符型和浮点型数据以外,C语言还提供了构造类型的数据,它是由基本数据类型按一定规则组成的,因此有的书又称它为导出类型。
本章我们就来学习一下数组的作用。
一:
数组的引入
1.数组:
有序数据的集合。
2.使用说明
1)数组中的每个元素数据类型相同。
2)每个特定元素都应使用带方括号[]的下标访问。
3)数组都以0作为第一个元素的下标。
4)数组的下标是连续递增的。
5)数组整体不能参加数据处理。
二:
一维数组的说明
1.定义方式:
类型说明符数组名[常量表达式]例如:
inta[10];
1)int为数组的类型。
2)a为数组名。
3)数组有a[0]~a[9]10个元素。
3.说明:
1)定名规则和变量命名相同,遵循标识符的命名规则。
2)2)数组名后用方括号,不能用圆括号。
如:
inta(10);×
3)常量表达式表示元素的个数,即数组长度。
4)常量表达式中包括常量和符号常量,不能包含变量。
例如:
intn;inta[n];×
三:
一维数组的初始化
1.在定义数组时对数组元素赋以初值。
2.例:
staticinta[10]={0,1,2,3,4,5,6,7,8,9};
相当于a[0]=0,a[1]=1,…,a[9]=9
3.可以给一部分元素赋值。
例:
staticinta[10]={0,1,2,3,4};
相当于a[0]=0,a[1]=1,…,a[4]=4,a[5]=0,…,a[9]=0
3.不对数组赋初值,则系统对所有数组元素自动赋以0。
例:
staticinta[10];相当于a[0]~a[9]全为0。
4.在对全部数组元素赋初值时,可以不指定数组长度。
例:
staticinta[]={0,1,2,3,4};因为花括号中只有五个数,所以a[]相当于a[5]。
习题:
写出下列数组中每个元素的值。
Inta[5]={1,2,3,4,5};
Inta[5]={1,2,3};
Inta[]={1,2,3,4,5};
Inta[5]={3*1};
程序编写:
已知数组的第一项为1,第二项为1,求出数列的前十项。
四:
一维数组的引用例:
将0~9倒序输出。
main()
{inti,a[10];
for(i=1;i<10;i++)
a[i]=i;
for(i=9;i>=0;i--)
printf(“%d”,a[i]);}
分析:
当前元素的前一个:
当前元素的后一个:
当前元素:
当前值*2
输入数组元素的语句:
输出数组元素的语句:
针么数组的每一个元素进行操作:
一、选择题
1.在C语言中,引用数组元素时,其数组下标的数据类型允许是。
A)整型常量B)整型常量或整型表达式
C)整型表达式D)任何类型的表达式
2.以下对一维整型数组a的正确说明是。
A)inta(10);B)intn=10,a[n];
C)intn;scanf(“%d”,&n);inta[n];
D)#defineSIZE10inta[SIZE];
3.
3.以下能对一维数组a进行正确初始化的语句是。
A)inta[10]=(0,0,0,0,0);
B)inta[10]={};
C)inta[]={0};
D)inta[10]={10*1};
4.不是给数组的第一个元素赋值的语句是。
A)inta[2]={1};B)inta[2]={1*2};
C)inta[2];scanf(“%d”,a);D)a[1]=1;
5.下面程序的运行结果是。
main()
{inta[6],i;
for(i=1;i<6;i++)
{a[i]=9*(i-2+4*(i>3))%5;
printf("%2d",a[i]);
}
}
A)-40404B)-40403C)-40443D)-40440
课题序号
授课班级
12计一、12计二班
授课课时
2课时
授课形式
理论
授课章节
名称
一维数组的引用
使用教具
教学目的
1.分析数组的程序
2.根据数组的特点写程序
3.各类程序编写
教学重点
1.根据数组的特点写程序
教学难点
1根据数组的特点写程序
课外作业
教学后记
课堂教学安排
教学过程
主要教学内容及步骤
(一)前堂回顾
(二)导入新课
(三)新授
五)作业布置:
分析下列程序,写出程序的运行结果:
1.staticinta[]={5,3,7,2,1,5,4,10};
ints=0;k;
for(k=0;k<8;k+=2)
s+=a[k];
printf(“s=%d”,s);
2.main()
{intn[3],i,j,k;
for(i=0;i<3;i++)
n[i]=0;
k=2;
for(i=0;ifor(j=0;jn[j]=n[i]+1;
printf("%d\n",n[1]);
}
main( )
{ int i, s=90, a[]={3, 5, 7, 9, 11};
for (i=1;i<5;i+=2)
s-=a[i];
printf("%d\n", s); }
5.
main()
{inta[21],i,j,n=0;
for(i=2;i<20;i++)
a[i]=i;
for(i=2;i<10;i++)
{if(a[i]==0)continue;
for(j=i+1;j<=20;j++)
if(a[j]%a[i]==0)a[j]=0;}
for(i=2;i<=20;i++)
if(a[i]!
=0){printf(“%4d”,a[i]);n=n+1;}
if(n%4==0)printf(“\n”);
}
程序填空:
下面程序以每行4个数据的形式输出a数组,请填空。
#defineN20
voidmain()
{
inta[N],i;
for(i=0;ifor(i=0;i{
if(________)_________i%4==0printf("\n");
printf("%3d",a[i]);
}
printf("\n");
}
下面程序的功能是生成并打印某数列的前20项,该数列第1,2项分别为0和1,以后每个奇数编号的项是前两项之和,偶数编号的项是前两项差的绝对值。
生成的20个数存在一维数组x中,并按每行4项的形式输出。
请填空。
voidmain()
{
intx[21],i,j;
x[1]=0;x[2]=1;
i=3;
do{
x[i]=________;x[i-1]+x[i-2]
x[i+1]=________;fabs((double)(x[i-1]-x[i]))
i=________;i+2
}while(i<=20);
for(i=1;i<=20;i++)
{
printf("%5d",x[i]);
if(i%4==0)
printf("\n");
}
}
设数组a包括10个整型元素。
下面程序的功能是求出a中各相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。
请填空。
voidmain()
{
inta[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(________;i<10;i++)i=1
________b[i]=a[i]+a[i-1]
for(i=1;i<10;i++)
{
printf("%3d",b[i]);
if(________==0)printf("\n");(i%3)
}
}
下面程序将十进制整数转换成n进制。
请填空。
voidmain()
{
inti=0,base,n,j,num[20];
printf("Enterdatathatwillbeconverted\n");
scanf("%d",&n)
printf("Enterbase\n");
scanf("%d",&base);
do{
i++;
num[i]=n________base;%
n=n________base;/
}while(n!
=0);
printf("Thedata%dhasbeenconvertedintothe%d--basedata:
\n",n,base);
for(________)j=i;j>=1;j--
printf("%d",num[j]);
}
课题序号
授课班级
12计一、12计二班
授课课时
2课时
授课形式
理论
授课章节
名称
一维数组的算法
使用教具
教学目的
1.统计
2.求最值
3.查找指定元素
教学重点
1.根据数组的特点写程序
教学难点
1根据数组的特点写程序
课外作业
教学后记
课堂教学安排
教学过程
主要教学内容及步骤
(一)前堂回顾
(二)导入新课
(三)新授
五)作业布置:
1.统计。
输入十个元素。
求出平均值。
注意输入、输出
2.求最值。
输入十个数,求出最大值,求出最小值
两种方法。
A.求值。
B.求位置。
3.查找:
输入十个数,找出指定的数。
一般查找法:
下面程序用“顺序查找法”查找数组a中是否存在某一关键字。
请填空。
voidmain()
{
inta[8]={25,57,48,37,12,92,86,33};
inti,x;
scanf("%d",&x);
for(i=0;i<8;i++)
if(x==a[i])
{
printf("Found!
Theindexis:
%d\n",--i);________;break
}
if(________)i==8
printf("Can'tfound!
");
快速查找法:
下面程序用“快速顺序查找法”查找数组a中是否存在某一关键字。
请填空。
voidmain()
{
inta[9]={25,57,48,37,12,92,86,33};
inti,x;
scanf("%d",&x);
________;i=0;a[8]=x
while(a[i]!
=x)i++;
if(________)printf("Found!
Theindexis:
%d\n",i);i<8
elseprintf("Can'tfound!
\n");
}
折半查找法:
#include
voidmain()
{
chara[12]="adfgikmnprs",c;
inti,top,bot,mid;
printf("Inputacharacter\n");
scanf("%c",&c);
printf("c=\'%c\'\n",c);
for(top=0,bot=10;top<=bot;)
{
mid=(top+bot)/2;
if(c==a[mid])
{
printf("Thepositionis%d\n",mid+1);
break;
}
elseif(c>a[mid])top=mid+1;
elsebot=mid-1;
}
if(top>bot)printf("**\n");
}
课题序号
授课班级
12计一、12计二班
授课课时
2课时
授课形式
理论
授课章节
名称
一维数组的算法《二》
使用教具
教学目的
1.删除指定元素
2.插入指定元素
3.排序
教学重点
1.根据数组的特点写程序
教学难点
1根据数组的特点写程序
课外作业
教学后记
课堂教学安排
教学过程
主要教学内容及步骤
(一)前堂回顾
(二)导入新课
(三)新授
五)作业布置:
1.删除指定元素。
第一种方法:
借助中间数组保存数据。
第二种方法:
将后面的元素往前移
2.插入指定的元素
从前往后比较,插入元素
从后往前,边移动,边插入元素。
3.排序
起泡法排序:
以当前元素为标准,两相邻个元素进行比较,小数往上浮,大数往下沉。
冒泡法排序:
以当前元素为标准,与后面每一个元素进行比较,选择出最小值,进行交换。
选择法排序:
以当前元素为标准,与后面每一个元素进行比较,选择出最小值的下标,进行交换。
插入法排队序:
假定第1个元素菜排好序,从第二个元素开始,插入到前面排好序的数组中。
课题序号
授课班级
12计一、12计二班
授课课时
2课时
授课形式
理论
授课章节
名称
一维数组的算法《三》
使用教具
教学目的
1.移位
2.进制转换
3.统计元素个数
教学重点
1.根据数组的特点写程序
教学难点
1根据数组的特点写程序
课外作业
教学后记
课堂教学安排
教学过程
主要教学内容及步骤
(一)前堂回顾
(二)导入新课
(三)新授
1.移位操作:
从前往后移位:
从后往前移位:
2.进制转换:
十进制转换成二进制进制:
十进制转换成八进制进制:
十进制转换成十进制进制
方法1:
方法2:
3、统计个数:
输入一批整数,统计01234的个数。
课题序号
授课班级
12计一、12计二班
授课课时
2课时
授课形式
理论
授课章节
名称
字符串《一》
使用教具
教学目的
1.字符串的定义
2.字符串的特点
教学重点
1.根据字符串的特点写程序
教学难点
1根据字符串的特点写程序
课外作业
教学后记
课堂教学安排
教学过程
主要教学内容及步骤
(一)前堂回顾
二)导入新课
(三)新授
1.对一个一维数组a的正确说是(D)
A.inta(10);
B.intn=10,a[n];
C.intn;
D.#defineSIZE10scanf(“%d”,&n);
inta[SIZE];inta[n];
2.a[5]表示________个元素,分别是________________。
上堂课我们学习了一维数组的使用方法,以数学的思想来讲,一维可以看作一条直线上的点,确定一个点只要一个位置就可以了,正如我们所学的数组元素a[3],若想确定其存储地址,只要知道首地址就可以了。
那么多维数组又该如何理解呢?
这节课我们就来了解一下多维数组的使用方式以及字符数组的一些相关知识。
一:
字符数组的引入
1.C语言没有字符串变量。
2.使用一维数组对字符串进行存储和处理。
二:
字符数组的定义
1.定义方式:
staticcharc[6];
2.使用说明:
1)c[6]表示的是c[0]~c[5]六个元素。
2)最多可存放5个字符。
注:
一个长度为n的字符串,其占用的内存为n+1个字节空间。
三:
字符数组的初始化
1.使用字符初始化例:
staticcharc[]={‘a’,‘b’,‘c’}
1)字符数组长度为3。
2)c[0]=‘a’;c[1]=‘b’;c[2]=‘c’;
3)字符使用‘’作为定界符。
2.使用字符串常量进行初始化例:
staticcharc[]=“abc”
1)字符数组长度为4。
因为系统自动加上\0。
2)c[0]=‘a’;c[1]=‘b’;c[2]=‘c’;c[3]=‘\0’;
3)字符串使用“”作定界符。
习题:
1.当运行以下程序时,从键盘输入AabD,则下面程序的运行结果是:
__________________AzySD_____________________
#include
main()
{chars[80];
intI=0;
gets(s);
while(s[I]!
='\0')
{if(s[I]<='z'&&s[I]>='a')
s[I]='z'+'a'-s[I];
I++;}
puts(s);}
2.下面程序的运行结果是
(1)
#include
main()
{charch[7]={“12ab56”};intI,s=0;
for(I=0;ch[I]>=’0’&&ch[I]<=’9’;I+=2)
s=10*s+ch[I]-‘0’;
printf(“%d\n”,s);}
3.下面程序的运行结果是(LBLMNP)
#include
#include
main()
{chara[80]="AB",b[80]="LMNP";
intI=0;
strcat(a,b);
while(a[I++]!
='\0')b[I]=a[I];
puts(b);}
4.下面程序的运行结果是:
____t*M___________
#include
#include
main()
{intI;
chara[]="Time",b[]="Tom";
for(I=0;a[I]!
='\0'&&b[I]!
='\0';I++)
{if(a[I]==b[I])
{if(a[I]>='a'&&a[I]<='z')
printf("%c",a[I]-32);
elseprintf("%c",a[I]+32);
}
elseprintf("*");
}
}
5.下面程序的运行结果是:
_______s__________
#include
main()
{intI,r;
charsl[80]="bus";
chars2[80]="book";
for(I=r=0;sl[I]!
='\0'&&s2[I]!
='\0';I++)
if(sl[I]==s2[I])I++;
else{r=sl[I];break;}
printf("%c",r);}
选择题:
1、对两个数组a和b进行如下初始化
chara[]="ABCDEF";
charb[]={'A','B','C','D','E','F'};
则以下叙述正确的是(D)
(A)a与b数组完全相同
(B)a与b长度相同
(C)a和b中都存放字符串
(D)a数组比b数组长度长
2、有两个字符数组a、b,则以下正确的输入语句是(B)
(A)gets(a,b);(B)scanf("%s%s",a,b);
(C)scanf("%s%s",&a,&b);(D)gets("a"),gets("b");
3、有字符数组a[80]和b[80],则正确的输出语句是(D)
(A)puts(a,b);
(B)printf("%s,%s",a[],b[]);
(C)putchar(a,b);
(D)puts(a),puts(b);
4、下面程序段的运行结果是(D)
chara[7]="abcdef";
charb[4]="ABC";
strcpy(a,b);
printf("%c",a[5]);
(A)空格(B)\0(C)e(D)f
5、有下面的程序段
chara[3],b[]="China";a=b;printf("%s",a);
则(D)
(A)运行后将输出China
(B)运行后将输出Ch
(C)运行后将输出Chi
(D)编译出错
6、下面程序段的运行结果是(B)
charc[]="\t\v\\\0will\n";
printf("%d",strlen(c));
(A)14(B)3(C)9
(D)字符串中有非法字符,输出值不确定
课题序号
授课班级
12计一、12计二班
授课课时
2课时
授课形式
理论
授课章节
名称
字符串《二》
使用教具
教学目的
1.字符串函数的功能
2.字符串函数的格式
3.字符串函数的灵活应用
教学重点
1.利用字符串函数编写程序
教学难点
1.利用字符串函数编写程序
课外作业
教学后记
课堂教学安排
教学过程
主要教学内