第七章数组上机作业

合集下载

C语言程序设计(第3版)何钦铭 颜 晖 第7章 数组

C语言程序设计(第3版)何钦铭 颜 晖 第7章  数组

第7章数组【练习7-1】将例7—3 程序中的break 语句去掉,输出结果有变化吗?假设输入数据不变,输出什么?解答:当去掉break 语句后,一旦找到数据将不跳出循环,而是继续往下找值为x 的元素,因此程序输出会有变化。

当输入数据仍为2 9 8 1 9 时,输出将是index is 1 index is 4。

【练习7—2】将数组中的数逆序存放.输入一个正整数n(1<n<=10),再输入n个整数,存入数组a中,输出最大值及其对应的最小下标,下标从0开始.试编写相应程序。

解答:#include<stdio。

h〉int main(void){int i,n,temp;int a[10];printf("Input n:");scanf(”%d",&n);printf(”Input %d integer:",n);for(i=0;i<n;i++)scanf(”%d”,&a[i]);printf(”After reversed:");for(i=0;i〈n/2;i++){temp=a[i];a[i]=a[n—1—i];a[n-1—i]=temp;}for(i=0;i〈n;i++)printf("%d ”,a[i]);return 0;}【练习7-3】求最大值及其下标.输入一个正整数n(1〈n<=10),再输入n个整数,存入数组a中,将先数组a中的这n个数逆序存放,在按顺序输出数组a中的n各元素.试编写相应程序.解答:#include〈stdio.h>int main(void){int i,index,n;int a[10];printf("Enter n:”);scanf(”%d",&n);printf(”Enter %d integrs:”,n);for(i=0;i〈n;i++)scanf("%d",&a[i]);for(i=n—1;i〉=0;i++)printf("%d ”,a[i]);return 0;}【练习7-4】找出不是两个数组共有的元素。

上机作业 - 6-7

上机作业 - 6-7
第6次上机作业:数组
1、将一个a[10]数组中的值按逆序存放后输出。 2、输入一个字符串,统计字母、数字、空格和其它字符的个数。 3、将一个字符串中的前M个字符复制到另一个字符串,输出该字符串。 将一个字符串中的前N个字符移出,输出移出后的结果。 (不得用字符串处理函数) 4、编程生成一个对角线元素为0,上三角元素为-1,下三角元素为1的10*10的二维数组。 5、用二维数组实现5行5列矩阵的转置,并求转置前(后)主、副对角线上元素之和。 注意,两条对角线相交的元素只加一次。
第7次上机作业:函数
2、输入18位身份证编号字符串,用下面的方法编程检验输入的身份证号是否正确。 即:将前17位数字依次与数组int aW[17] ={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2} 对应元素相乘,求和,再以11为模求余数, 再以余数为校验数组int aXY[11]={1,0,10,9,8,7,6,5,4,3,2}的下标找出校验值,与最后一 位相比较,如果不等表示输入的身份证号码有问题,此时提醒重新输入。 注:身份证号码最后一位等于X的,表示值为10。 运行要求: 检验至少三个人的身份证号 3、在N个身份证号码中找出所有年龄为18岁的身份证号码。 (N<二维数组的应用
编程实现两个矩阵相乘,要求矩阵元素从键盘输入。
第7次上机作业:函数
注意:本章所有上机作业题要求: I:在主函数中输入、 P:在主函数中调用自编的函数、 O:在主函数中输出。
1、编写myf_ex函数,(ex = 1+x+x2/2!+....+xn/n!) 在主函数中求解x在[-5,5]范围内(每间隔0.1 取一值)的双曲函数值(公式如右), (每行输出10组值)

《C语言程序设计基础与实训教程》第7章:数组

《C语言程序设计基础与实训教程》第7章:数组

/webnew/
7.1.4 一维数组的应用举例
例7.5 将数组中的数按颠倒的顺序重新存放。要求,在操 作时只能借助一个临时存储单元而不能另外开辟数组。 分析:题目要求是按颠倒的顺序重新存放数据,而不是按 逆序输出。 可以使用两个变量i和j,i和j的初值分别为0和9,将a[i] 与a[j]对调,然后i++,j--,接着再将a[i]与a[j]对调。如些 重复操作,直到i>=j时,对调完成。 程序
分析:该数组元素的值是有规律的序列, ( 从 开始算起 开始算起) 分析 : 该数组元素的值是有规律的序列 , 第 i(i从0开始算起) 个 元素的值为: 元素的值为:10+2*i。 。 输出该数组时,由于该数组有30个元素,在一行中输出不太美观, 输出该数组时,由于该数组有 个元素,在一行中输出不太美观, 个元素 所以,这里我们选择每行输出6个元素。 所以,这里我们选择每行输出 个元素。 个元素
/webnew/
7.1.3 一维数组元素的引用
2.一维数组的输入与输出 一维数组的输入与输出 如何给数组元素赋值以及如何将数组元素的值输出是数 组最基本的操作。下面将讨论一维数组元素的输入与输出。 例7.1 定义一个五个元素的字符型数组,通过键盘给每 个元素赋值,并以相反的顺序的输出。 程序1 程序2 从上面的例子可以看出,一个数组中往往往包含较多的 数组元素,相同的赋值或输出操作将被重复多次进行,所以, 一维数组元素的输入与输出一般通过一重循环来实现。
/webnew/
7.1.3 一维数组元素的引用
注意: (1)数组元素的引用方式与数组说明符的形式非常相近,都是 “数组名[表达式]”形式,但两者的意义完全不同。 出现的位置不同。定义数组时,“数组名[表达式]”出现在 定义语句中,表示的是定义了一个名为“数组名”的数组,表达式的值 表示该数组中所包含元素的个数。作为数组元素的引用方式时,“数组 名[表达式]”出现在其它执行语句中,表示是数组中的下标为“表达式” 值的那个元素。 表达式的格式不同。定义数组时,“表达式”必须为常量表 达式。作为数组元素的引用方式时,表达式可以变量、常量或函数构成 的合法C表达式。 (2)在C语言中,起始下标规定为0,最大值应为:数组长度-1。 如果发生了下标越界的现象,可能破坏了其它存储单元的数据,甚至破 坏程序代码。 (3)下标必须是整型表达式,若为小数,则自动取整。如a[2.6] 系统自动默认为a[2]。

第七章 数组

第七章  数组

例题1:求10名同学的平均分。7_2.c
main( ) { int a[10]; int i ,sum=0,ave; for (i=0;i<10;i++) scanf("%d",&a[i]); /*类型说明符 数组名[常量表达式]
数组名为a,此数组有10个整型元素*/
/* a[0], a[1], a[2], a[3], a[4]
3. 如果输入多个字符串,则可用空格隔开
char str1[20],str2[20],str3[20]; scanf(“%s%s%s”,str1,str2,str3); 输入为 How are you str1中为“How”, str2 中为“are”, str3中为 “you”。
7.3.3字符数组举例: 从键盘输入一行字符串(<20),求字符串中 小写字母的个数。7-6.c main() {char str[20],len=0,i; 求这个字符串 scanf ("%s",str); 的长度? for (i=0; str[i]!='\0';i++) if (str[i]>='a'&&str[i]<='z') len++; printf ("\n%d",len); }
1 2 3 4 5 6 7 8 9 a[8] 10 a[9]
a[0] a[1] a[2] a[3] a[4]
a[5] a[6] a[7]
2. 不允许对数组的大小作动态定义,即数组的大 小不能是变量。 例如:下面是不合法的: int n; float a[n]; 3. 数组元素的使用与变量是一样的。可以赋值, 也可作各种运算,还可以输入和输出。 例如:a [0]=1 ; a[1]=a[0]型_char、实 型_float)的数据外, C语言还提供了构造类型 的数据,它们有:数组类型、结构体类型、共用 体类型。构造类型数据是由基本类型数据按一定 规则组成的。

南昌大学第七章数组答案

南昌大学第七章数组答案

A.int a[]="string";B.int a[5]={0,1,2,3,4,5};C.char a="string";D.char a[]={0,1,2,3,4,5};A.1DB.3C.9D.A. B.\"c:\\abc.dat\" C."c:\abc.dat" D."c:\\abc.dat"A. B.C. D.A. B.C. D.A. a[2][4]B. a[lC. a[l+l][0]D. a(2)(1) 确定A. a[0][2*1]B. a[l][3]C. a[4-2][0]D. a[0][4]A. 2B. 3C. 4D.A. 3 5 7B. 3 6 9C. 1 5 9 D 1 4 7A. j*m+iB. i*m+jC. i*m+j-1D. i*m+j+1 确定A. B.C. D.A.1DB.3C.9D.A. B.\"c:\\abc.dat\" C."c:\abc.dat" D."c:\\abc.dat"A. if(s1>s2)B. if(strcmp(s1,s2))C. if(strcmp(s2,s1)>O)D. if(strcmp(s1A. B.C. D.A. int a[3][ ];B. float a(3C. double a[1][4];D. float a(3)(4);A. a[2][4]B. a[lC. a[l+l][0]D. a(2)(1)A. 2B. 3C. 4D.A. 3 5 7B. 3 6 9C. 1 5 9 D 1 4 7A BC DA BC DA BC DA BC DA BD C整体赋值A BC DA BC DA BC DA BC DA BC DA BCD 值A B C DA B C DA B C DA B C DA) abcdefA) abcdA) abcdA) abcdef确定[C] 教师批改:36、给出以下定义:char x[ ]="abcdefg";char y[ ]={…a…,…b…,…c…,…d…,…e…,…f…,…g…};则正确的叙述为A)数组X和数组Y等价B)数组x和数组Y的长度相同C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度确定[C] 教师批改:37、设有static char str[ ]="Beijing";则执行printf("%d\n", strlen(strcpy(str,"China")));后的输出结果为A) 5 B) 7C) 12 D) 14确定[A] 教师批改:38、请选出以下程序段的输出结果#include<stdio.h>main(){ char sl[10], s2[10], s3[10], s4[10];scanf("%s%s",s1,s2); gets(s3); gets(s4);puts(s1); puts(s2); puts(s3); puts(s4);}输入数据如下:(此处<CR>代表回车符)aaaa bbbb<CR>A bbbbB bbbbC) aaaa bbbbD ccccA BC DA不可以直接用数组名对数组进行整体输入或输出BC数组元素的下标超出所定义的下标范围时,系统将给出DA BC DA B C DA B C DA B C DA BC DA B C D。

C语言--数组上机及答案

C语言--数组上机及答案

程序一:传值void swap(int a,int b){ int t;t=a; a=b; b=t;}main(){ int x=10,y=20;printf(“%d,%d\n”,x,y);swap(x,y);printf(“%d,%d\n”,x,y);}程序二:传地址void swap(int *a,int *b){ int t;t=*a; *a=*b; *b=t;}main(){ int x=10,y=20;printf(“%d,%d\n”,x,y);swap(&x,&y);printf(“%d,%d\n”,x,y);}上机练习1:现在一个数组存放10个整型数据(可以有相同),要求用户输入一个数,然后把数组中与其输入相同的数删除。

然后输出结果。

上机练习2:数组中有10个数,要求对数组进行排序,输出结果。

上机练习3:有10个学生的成绩存在数组中,请统计大于等于平均成绩的人数。

上机练习4:有10个学生的成绩存在数组中,请统计最高分,最低分,并将最高分和最低分学生的下标输出到屏幕上。

上机练习5:求a[M][N]数组四周的和。

#include <stdio.h>#define M 4#define N 5main( ){ int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};…….}程序一:传值void swap(int a,int b){ int t;t=a; a=b; b=t;}main(){ int x=10,y=20;printf(“%d,%d\n”,x,y);swap(x,y);printf(“%d,%d\n”,x,y);}程序二:传地址void swap(int *a,int *b){ int t;t=*a; *a=*b; *b=t;}main(){ int x=10,y=20;printf(“%d,%d\n”,x,y);swap(&x,&y);printf(“%d,%d\n”,x,y);}上机练习1:现在一个数组存放10个整型数据(可以有相同),要求用户输入一个数,然后把数组中与其输入相同的数删除。

C语言程序设计上机指导第7章答案

C语言程序设计上机指导第7章答案

C语言程序设计上机指导第7章答案上机报告课程名称计算机程序设计基础(C语言) 专业班级电气1044姓名学号100441上机题目二维数组程序设计实验室机房同组人数 1 实验时间年月日成绩指导教师一、实验目的1、掌握二维数组的定义、引用和初始化方法。

2、掌握数组在实际问题中的应用。

二、实验内容(均要求给出运行结果)1、改错题(1)以下程序分别统计字符串str中大写字母和小写字母的个数,请改正程序中的错误。

#include “stdio.h”#include “string.h”void main(){ char str[80];int a,i;gets(str);for(i=0;str[i]!=’.’;i++){ if(str[i]>=’a’&& str[i]<=’z’) a++;if(str[i]>=’A’&& str[i]<=’Z’) a++;}printf(“%d,%d\n”, a, b);}程序清单:#include "stdio.h"#include "string.h"scanf(“%d”,&a[i][j]);for(i=1; i<n; i++)for(j=1; j<n; j++)printf(“%3d”, a[n][n]);printf(“\n”);}程序清单:#include "stdio.h"void main(){int a[3][3],i,j,n;scanf("%d",&n);for(i=0; i<n;i++)for(j=0; j<n; j++)scanf("%d",&a[i][j]);for(i=0; i<n; i++){for(j=0; j<n; j++)printf("%3d", a[i][j]); printf("\n");}}运行结果:2、填空题(1)以下程序是将字符串s中所有的空格字符删去,请填空。

C-数组上机作业和参考答案

C-数组上机作业和参考答案

实 验 报 告 五一【实验目的】1.掌握一维数组、二维数组的概念及元素的各种表示方法 2.正确掌握数组输入输出等的基本操作。

3.掌握数组和指针的关系和有关操作 4.掌握数组掌握字符串的处理方法 5.掌握数组中的一些常用算法。

二【实验内容】【实验5-1】从键盘输入6个同学计算机课程期末考试成绩,并统计出平均分、最高分、最低分,以及统计超过平均分的人数,并实现正确输出。

【实验5-2】随机产生10个学生的计算机课程的成绩(30~100),按照从大到小的顺序排序,分别显示排序前和排序后的结果。

提示:#include<stdlib.h>,包含实用工具函数后,可以使用随机函数产生成绩如:for(i=0;i<10;i++) score[i]=rand ( )%71+30;[真题17套] 请编写程序实现功能:把s 所指字符串中的内容逆置。

例如:字符串中原有的字符串为:abcdefg ,则执行后, 串s 中的内容为:gfedcba 。

[真题10套] 请编写程序实现,将s 所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t 所指数组中。

例如,当s 所指字符串中的内容为:"ABCDEFGHIJK",在t 所指数组中的内容应是:"BDFHJ"。

[真题13套]请编写程序实现功能:使数组左下三角元素中的值乘以n 。

例如:若n 的值为3,a 数组中的值为⎪⎪⎪⎭⎫⎝⎛654832791则返回主程序后a 数组中的值为⎪⎪⎪⎭⎫ ⎝⎛181512896793 [真题58、76套]请编写程序实现功能:求出一个2×4整型二维数组中最大元素的值,并将此值输出。

(int arr[2][4]={5,8,3,45,76,-4,12,82} ;)[真题65套] 请编写程序实现功能: 求出二维数组周边元素之和并输出。

610753189********97531则函数值为为例如:二维数组中的值⎪⎪⎪⎪⎪⎭⎫⎝⎛ [真题67套] 编写程序, 实现矩阵(3行3列)的转置(即行列互换)例如, 输入下面的矩阵: ⎪⎪⎪⎭⎫ ⎝⎛900800700600500400300200100 程序输出:⎪⎪⎪⎭⎫⎝⎛900600300800500200700400100 [真题68套] 编写程序, 实现:求出小于或等于lim (lim=50)的所有素数并放在aa 数组中,函数返回所求出的素数的个数。

第7章--c++数组

第7章--c++数组

第七章数组数组是相同数据类型数据的集合。

通过数组名和下标可以访问数组中指定的元素。

7.1 一维数组一维数组只有一个下标,它可用于表示一个线性的数据队列。

在程序设计中要先声明数组,对它进行初始化,然后才能使用数组。

7.1.1 一维数组的声明一维数组的声明要解决三个问题。

第一、确定数组的数据类型。

第二、给数组定义一个名字,以便在程序中使用。

第三、指明数组的大小,也就是数组中元素的个数。

声明一维数组的一般形式如下:数据类型数组名[常量表达式]={初值表};7.1.2 一维数组的使用访问一维数组元素的一般形式是:数组名[下标表达式]下标表达式是一个整型表达式。

它是一个由整型常量、整型变量以及运算符组成的式子,也可以是返回值为整型值的函数调用。

C++规定,数组的下标从0开始,因此对于大小为N的一维数组,其下标的取值范围是0到N-1,其中0称为数组的下界,N-1称为数组的上界。

下标表达式的值应该在下标的取值范围之内,否则会产生不可预计的问题。

7.1.3一维数组的初始化通过在初值表中给出初值可以对数组元素进行初始化。

初值用一对花括号界定,初值之间用逗号进行分隔。

例7-4 int y[5]={1,2,3,4,5};1,2,3,4,5为初值表,该语句把y[0]、y[1]、y[2]、y[3]、y[4] 分别初始化为1、2、3、4、5。

通过初值表中初值的个数决定数组的大小,省略常量表达式。

例7-5 double d[]={1.5,2.3,5.6};该声明语句省略了常量表达式,数组的长度由初值表中初值的个数决定。

它说明了有三个元素的双精度数组d。

并且d[0]=1.5, d[1]=2.3, d[2]=5.6。

7.1.4 数组的运算以及数组作为函数参数1 数组的运算数组的运算最终都要归结到对数组元素的操作。

因此,数组的运算与其元素的数据类型以及系统或程序对该数据类型提供何种操作有关。

对于int、float、以及double类型的数组,赋值运算、各种算术运算、++、--等都是允许的,原因是C++提供的这些操作的操作语义支持这些数据类型的运算。

7章数组-上机练习题 -

7章数组-上机练习题 -

第七章数组——上机练习题
1、求20个整数的最大值、最小值以及平均值;
2、对N个整数进行升序或降序排列,N采用符号常量的形式定义。

3、编写程序,将数组a 内容按颠倒的次序重放。

4、求一个5*5的整型矩阵的左右两条对角线之和。

5、求一个已知二维数组中的数值最小的那个元素的值,并输出该元素所在的行号和列号。

6. 输出以下的杨辉三角形(要求输出10行)
【提示:分析各元素与其上一行元素在数值上的关系,以及它们的行列关系】7.从键盘上输入2个字符串,比较它们的大小,要求输出时按以下格式要求:
字符串1“……..”> (或< 或=) 字符串2“……..”
8.输入5个字符串,找出其中最小的那个字符串并输出。

9.输入5个字符串,找出其中长度最长的那个字符串并输出。

10.有一篇文章,共有3行文字,每行80个字符,要求分别统计出英文大写字母、英文小写字母、数字、空格以及其他字符的个数。

【选做题】已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入到数组中。

【注意:定义数组的大小】
【提示:先判断输入的那个数num是否大于数组中的最大数,若大于将其放在数组的末尾;如果不大于,利用for循环将其与数组的各个元素a[i]比较,若某个元素a[i]大于此数num,将此数num放在a[i]的位置,并将第i个元素之后的所有元素下标依次加1,此时借用另一个中间变量j 】。

C语言第7章 数组

C语言第7章 数组

第7章数组17.以下能正确定义二维数组的是____。

A、int a[][3];B、int a[][3]={2*3};C、int a[][3]={};D、int a[2][3]={{1},{2},{3,4}};答案:B难易程度:初级章节:7.3.2 二维数组的定义21.s1和s2已正确定义并分别指向两个字符串。

若要求:当s1 所指串大于 s2所指串时,执行语句S;则以下选项中正确的是____。

A、if(s1>s2)S;B、if(strcmp(s1,s2))S);C、if(strcmp(s2,s1)>0)S;D、if(strcmp(s1,s2)>0)S;答案:D难易程度:初级章节:7.4 字符数组60.有以下程序main( ){ char a[]="abcdefg",b[10]="abcdefg";printf("%d %d\n",sizeof(a),sizeof(b));}执行后输出结果是____。

A、7 7B、8 8C、8 10D、10 10答案:C难易程度:初级章节:7.4字符数组64.有以下定义#include <stdio.h>char a[10],*b=a;不能给a数组输入字符串的语句是____。

A、gets(a)B、gets(a[0])C、gets(&a[0]);D、gets(b);答案:B难易程度:初级章节:7.5 字符数组73.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是____。

A、char s[10]="abcdefg";B、char t[]="abcdefg",*s=t;C、char s[10];s="abcdefg";D、char s[10];strcpy(s,"abcdefg");答案:C难易程度:初级章节:7.5 字符数组101.以下不能正确定义二维数组的选项是____。

c语言 第7章 数组(4)

c语言 第7章 数组(4)

void sort( int b[],int k) {int i,j,t,flag; for (j=0;j<k-1;j++) {flag=0; for (i=0;i<k-j-1;i++) if (b[i]>b[i+1]) { t=b[i]; b[i]=b[i+1]; b[i+1]=t; flag=1; } if (flag==0) break; } }
上一页 下一页
for(i=0;i<26;i++) if(c[i]) {if(m%8==0)putchar('\n');m++; printf("%c: %-d ",i+'A',c[i]); } printf("\n"); for(i=0;i<26;i++) if(c[i+26]) {if(m%8==0)putchar('\n');m++; printf("%c: %-d ",i+'a',c[i+26]); } }
第四讲:
第 七 章 数组
7.1 7.2 7.3 7.4 7.5 7.6 一维数组 二维数组 数组的应用 字符数组与字符串 数组作为函数的参数 程序举例
7.5 数组作为函数的参数
数组作为函数参数主要有两种情况: 数组元素作为函数的实参:这种情况与普通变量 作实参一样,是将数组元素的值传给形参。形 参的变化不会影响实参数组元素,我们称这种 参数传递方式为“值传递”。 数组名作实参:要求函数形参是相同类型的数 组或指针,这种方式是把实参数组的起始地址 传给形参数组,形参数组的改变也是对实参数 组的改变,称这种参数传递方式为“地址传 递”。

C语言程序设计(第三版)谭浩强习题与答案 第七章

C语言程序设计(第三版)谭浩强习题与答案   第七章
printf("\n");}
7.6打印出以下杨辉三角形(要求打印出10行)。
1
11
121
1331
14641
15101051


main()
{ static int m,n,k,b[15][15];
b[0][1]=1;
for(m=1;m<15;m++)
{for(n=1;n<=m;n++)
{ b[m][n]=b[m-1][n-1]+b[m-1][n];
for(i=0;i<10;i++)
printf("%5d",a[i]);
}

main()
{static int a[10],i,j,k,t;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=1;i<=10-j;j++)
if (a[i]>a[i+1])
{ i=i-1;
j=j+1;
if((i<1)&&(j>n))
{ i=i+2;
j=j-1;
}
else
{ Байду номын сангаасf(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;

资料:《数组》上机实践内容

资料:《数组》上机实践内容

《数组》上机实践内容一、根据课上讲解内容,完成演示示例和课堂练习1、求数组最大值需求说明:使用数组和循环获取5位学员的成绩,使用int max;变量存储最大值。

以课上讲解的“打擂台”的思路使用循环求出数组的最大值,并如图所示输出。

2、向数组中插入一个元素需求说明:按照如下操作向数组中插入元素,实现效果如图所示:(1)将成绩保存在数组中;(2)通过比较找到插入位置;(3)该位置元素往后移一位;(4)插入新成绩;3、获取最低价手机价格需求说明:按照如下步骤:(1)定义数组存储价格,并利用循环输入;(2)定义变量min保存当前的最低价;(3)将min和数组中的其余元素依次比较;求出4家店的最低手机价格,显示效果如下图所示。

4、冒泡排序需求说明:冒泡排序时注意以下关键点:(1)5个数字如何存放:(数组,数组.length = 5)(2)控制比较多少轮:(外层循环,循环变量 i)(3)控制每轮比较多少次:(内层循环,循环变量 j)(4)交换数据;使用二重循环实现如图所示的冒泡排序。

5、冒泡排列学员成绩需求说明:在作业4的基础上,使用冒泡排序对键盘输入的5名学员成绩进行降序排列,排列效果如图所示。

6、Arrays类排序数组需求说明:正确使用Arrays的sort()方法为数组进行排序,效果如下图所示。

降序排列的写法可以参考for(int i=scores.length-1;i>=0;i--){}7、Arrays类排列字符需求说明:正确使用Arrays类的sort()方法排列一组字符,并使用Arrays 类的binarySearch(array, val)方法查找某个特殊字符在升序后数组中的位置,输出效果如下图所示。

8、二维数组计算班级成绩需求说明:根据3个班各5名学生某门课程的成绩,正确使用二维数组计算如图所示3个班各自的总成绩。

在这个程序中二维数组的第一维是班级,第二维是各班级的学生,与之对应的双重循环中,外层循环i为班级,内层循环j为各班级的学生。

第七章数组1、一维数组1、整形数组的说明例如inta[10]

第七章数组1、一维数组1、整形数组的说明例如inta[10]
2
例 int i=15; 例 int data[5]; int data[i]; (不能用变量定义数组维数) data[5]=10; //C语言对数组不作越界检查,使用时要 注意
一维数组的引用
数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用整个数组 数组元素表示形式: 数组名[下标] 其中:下标可以是常量或整型表达式 例 int a[10]; printf(“%d”,a); ( ) 必须 for(j=0;j<10;j++) printf(“%d\t”,a[j]);
()
3
一维数组的初始化
初始化方式
int a[5]={1,2,3,4,5}; 在定义数组时,为数组元素赋初值 等价于:a[0]=1; (在编译阶段使之得到初值) a[1]=2; a[2]=3; a[3]=4; a[4]=5;
说明: 数组不初始化,其元素值为随机数 对static数组元素不赋初值,系统会自动赋以0值 只给部分数组元素赋初值 当全部数组元素赋初值时,可不指定数组长度
23
4、常用的字符串处理函数
1、 include <stdio.h> char *gets(char s[ ]); 功能:从键盘上读一行字符串,并以’\0’取代换行符。 注意:与scanf( )的区别? gets()可以读取空字符 #include <stdio.h> main( ) { char string[80]; printf(“请输入一个字符串:"); gets(string); printf(“您输入的字符串是: %s\n", string); }
元素个数=行数*列数
数组元素的存放顺序 例 int a[3][4]; float b[2][5]; 原因:内存是一维的 int c[2][3][4]; 二维数组:按行序优先 int a[3,4]; ( ) 多维数组:最右下标变化最快

c语言复习题及答案第七章数组

c语言复习题及答案第七章数组

第七章数组(8学时)学习目的与要求:1、 重点掌握一维数组的定义和引用;2、 基本掌握二维数组的定义和引用;3、 重点掌握字符型数组的定义与引用;4、 能正确使用字符串处理函数;5、 学会使用数组解决实际问题。

重点:1、 一维数组的定义与引用;2、 二维数组的定义与引用;3、 字符数组的定义与引用;第1讲知识归纳:1、一维数组的定义:类型说明符数组名[常量表达式];(1) (1)数组名后必须用方括弧[],用其他括弧均错误 ;(2) 方括弧中的常量表达式表示数组的元素个数;(3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量;二、填空题1、下面fun 函数的功能是将形参 x 的值转换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其它依此类推。

请填空。

fun(int x,int b[]){ int k=0,r;do{ r=x% 2;b[k++]=r;x/= 2j } while(x); }( 1996 年 4 月) 2 22、以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相2、一维数组的引用:数组名[下标r ■」 \ for ( i =0 ; i<7 ; i printf((2)将整个字符串一次输入输出,用格式符 如^ chaLG1f10]; scanf (“ %s ” , c1); int num[N];(2003 年 9 月)25、有以下程序main (){ char a[ ]={ ‘a ' , ‘b ' , ‘c ' , ‘d ',i=sizeof(a); j=strle n( a);printf( “%d,%d b ” i,j);} 程序运行后的输出结果是()。

A ) 9,9B )8,9(2002 年 9 月) 21、C 22、C 23、D 24、B 25、D “ %c , c1[ i ]); %s ; 100]; D) int N=100; e ' , ‘f ' , ‘g ' , ‘h ' , ‘ 0' }; int i,j; C ) 1, 8 D ) 9, 8同字符的ASCII码之差。

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

第七章数组通过本章实验作业应达目标1.学习并掌握一维数组与二维数组的定义、使用及初始化方法。

2.学习数组作为函数参数的用法。

3.熟练掌握字符数组和字符串的使用方法。

4.掌握数组的一种排序算法。

本章上交作业程序7_1.c、7_3.c、7_5.c、7_7.c上传至211.64.135.121/casp。

实验一一维数组的定义和简单应用【实验目的】学会定义一维数组,掌握一维数组的遍历操作,掌握在一组数组中求最大值、最小值的方法。

【实验内容】从键盘读入5个成绩到一个数组中,求其中的最大值,最小值和平均成绩。

在屏幕上显示输入成绩的提示信息,用键盘输入一个成绩,接着提示输入下一个,直到结束。

以7_1.c命名本程序并上交。

程序运行界面【实验提示】求最大(小)值通常用“打擂台”的方法。

首先设计两个变量,如max和min分别用来存放最大值和最小值,并将数组的首元素赋给这两个变量,这就是到目前为止的最大(小)值,然后利用循环依次比较其他的元素,总是将当前最大(小)值赋给max和min,直至比较到最后,max和min中的数据就是最大值和最小值。

求平均值还要设置一个变量sum,用来累加各元素的值。

实验二一维数组的排序【实验目的】熟练掌握一维数组三种基本排序方法:选择法,冒泡法,比较法。

【实验内容】从键盘上接收10个成绩,存放到一个一维数组score中,分别利用三种排序方法,将数组从小到大排序并在屏幕上显示排序结果。

分别以7_2_1.c、7_2_2.c和7_2_3.c命名三个程序。

【实验提示】所谓排序是指把一组杂乱无章的数据按照大小顺序排列。

将被排序的n个数据存放在一个数组中, 假如按升序排列。

我们将数组定义为a[n],数据存放在a[0] 到 a[n-1] 中。

1.比较排序法将a[0]与a[1]比较,若a[1]<a[0],则a[0]与a[1]交换,否则不变,再将a[0]与a[2]比较,同样小者交换到a[0],……如此比较下去至到a[0]与a[n-1]比较,小者放到a[0]中,第一轮比较n-1次,a[0]中的值就是n个数中最小者。

然后a[1]再与a[2]比较,方法同上,小者交换到a[1],……第二轮比较n-2次,这样a[1]也就确定了,第三轮a[2]与其后面的数比较,……,共比较n-1轮以后,数组中各元素的值就按升序排列好。

2.选择排序法选择排序法就是对比较法的改进。

它的算法思想是:仍然是a[i]与其后的a[j]进行比较,但是当比较出a[j]小于a[i]时,先不急于交换(因为a[j]并不一定是这一轮中最小的,可能还有更小的),用一个变量p记下j的下标(即第几个数),继续比较下去,将最小数的下标j存放在p中,一轮比较完毕,a[p]便是最小的,这样只要a[i]与a[j]交换即可。

一轮只交换一次,大大提高了程序的效率. 其中,一维数组既是数据的存放位置,也是交换的场所,这样可以很好的利用数据的内存空间。

3.冒泡排序法将要排序的数放在某一个数组中,如a[0]~a[n-1],然后比较数组相邻两元素的值,即a[0]与a[1]比较,假如按升序排列,且a[0]>a[1],则二者交换,否则不变,a[1]再与a[2]比较,前者大就交换,…,依次两两比较至到a[n-2]与a[n-1]比较,经过一轮以后,最大者“沉”到了最后,小数往上“冒”,所以得名“冒泡法”。

第二轮比较数组的前n-1个,即a[0]~a[n-2] 。

重复此过程,直到所有的元素比较完毕。

实验三一维数组元素的调换【实验目的】进一步加强对数组的应用。

【实验内容】找出数组中的最大数和最小数,并把最大数和a[0]中的数对调、最小数和a[1]中的数对调,其余数据位置不变。

例如,程序运行时若输入:2 4 6 11 3 9 7 0 5 8,则输出:0 2 6 11 3 9 7 4 5 8。

以7_3.c命名本程序并上交,部分程序如下。

#define N 10main(){int a[N],i;for(i=0;i<N;i++)scanf("%d",__________ );………… /* 编写程序,实现功能 */for(i=0;i<N;i++)printf("%d ",a[i]);printf("\n");}【实验提示】本题既可以套用选择法排序,只排序两轮。

也可以两次求最值再互换。

实验四一维数组的查找【实验目的】掌握数组的基本查找方法:顺序法和折半查找法。

【实验提示】查找是计算机中经常要遇到的一种操作,其含义是在一组数据中查找到所查数据的位置。

比较简单的是顺序查找法,效率较高的是折半查找法。

1.顺序查找法顺序查找也叫线性查找,当一组数据无序时,一般采用顺序查找。

其基本思想是:从数据集的第一个元素开始,依次将关键字x与数据集中的每一个元素进行比较,直到找到要找的数据。

或者数据集遍历完毕,没有找到匹配元素。

2.折半查找法若是已经排好序的数据,最好采用折半查找法。

折半查找法的基本思想是:首先取第一个元素a[low]和最后一个元素a[high]中间的那个元素a[mid]与x比较(其中mid=(low+high)/2 ),如果a[mid]==x则正好找到,否则要看x比a [mid]大还是小,因假设数组已按降序排好,则当x>a[mid]时,则要查找的x在数组的前半部分,这样数组的后半部分就不用去查找了,查找范围缩小为一半。

然后在前半部分再找一个中点,与x比较,如此一半一半缩小,如果x在数组当中,终能找到x==a[mid]。

由于每次缩小近一半的范围,所以数组的上、下界是要变化的,不妨用变量low、high、mid分别表示数组当前的上界、下界和中点。

问题:如果x不在数组当中,最终怎样知道?【实验内容】在一个已经排好序的数组(升序)中,从键盘上输入某数x,查找x是否在数组内,若在,则在屏幕上输出其下标值。

若不存在,则在屏幕上显示“Not found!”。

假设数组a[10] 的每个元素分别为{1,2,3,4,6,7,9,10,11,15},若从键盘上读入数x为9,则在屏幕上输出“the number’s position is 7”,若读入数为8,则屏幕上输出“Not found!”。

1. 顺序查找法编写的程序如下,请完善程序,并以7_4_1.c命名本程序。

# include<stdio.h>#define N 10void main( ){int a[N]={1,2,3,4,6,7,9,10,11,15};int i,x;scanf("%d", &x);for(i=0;i<N;i++)if ( _________ ){printf("the number's position is %d\n",i+1);_________ ;}if(i==N)printf("Not found!\n");}2. 折半查找法编写的程序如下,请完善程序,并以7_4_2.c命名本程序。

#include<stdio.h>#define N 10void main( ){int a[N]={1,2,3,4,6,7,9,10,11,15};int low, high, mid, i, x;scanf("%d", &x );for(low=0,high=N-1;; ){mid =_________ ;if(a[mid]==x){printf("the number's position is %d\n",mid+1);break;}if( _________ ) { printf("Not found\n"); _________ ; }if (a[mid]< x ) low=mid+1;if (a[mid]> x ) _________ ;}}【讨论与思考】比较一下两种两种查找方法的优缺点。

实验五统计指定字符个数【实验目的】熟悉字符串的存取和结束标记。

【实验内容】编写程序从键盘上输入一个字符串和一个字符,统计所指定字符的个数。

例如:从键盘输入字符串为"abaaAAbcaaaca",指定字符为'a',则在屏幕上输出结果是7。

以7_5.c命名本程序并上交。

下面给出程序的部分代码。

#include <stdio.h>void main( ){char a[200], b;int num;puts("Please inp ut a string:");gets(a);puts("Please enter a character:");b=getchar( );………… /* 编写程序,实现功能 */pirntf(“The result is %d\n”, num);}实验六从字符串中删字符【实验目的】熟悉字符串的存取和结束标记。

并掌握从一维数组中删除元素的方法。

【实验内容】编写程序从键盘上输入一个字符串和一个字符,实现从字符串中删除该字符。

例如:从键盘输入字符串为"abaaAAbcaaaca",要删除的字符为'a',则在屏幕上输出"bAAbcc"。

下面给出程序的部分代码。

请完善程序,并以7_6.c命名本程序。

void main( ){char s[20], ch;int i,j;printf("Please input a string:\n");gets(s);printf("Please input a character:\n");ch=getchar();for( i=0; _________; i++ ){ …………/* 编写程序,实现功能*/}puts(s);}【实验提示】要考虑被删除的字符在字符串出现多次,而且连续排列的情况。

实验七数据加密【实验目的】学习通过字符数据的ASCII值进行加密的方法。

【实验内容】某个单位要传递机密数据,数据是10位以内的整数(从键盘输入)。

在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用该和除以10的余数代替该数字。

在屏幕上显示加密后的数字。

以7_7.c命名本程序并上交。

例如:输入数据327895123,显示结果为:872340678。

【实验提示】1.应用字符数组来解决该问题。

2.主程序中将各位数字以字符的形式存放,在加密的过程中应该注意‘0’跟0 的区别。

实验八将数字字符串转换为相应实数【实验目的】学习数字字符串与数值之间的转换问题。

相关文档
最新文档