一维数组程序设计

合集下载

C_C++语言程序设计基础-7-1一维数组

C_C++语言程序设计基础-7-1一维数组
(2)部分元素赋初值,未赋初始值的数组元素初值为0: int a[5]={5,4};
a[0]=5,a[1]=4,a[2]=0, a[3]=0, a[4]=0
(3)对全部元素赋初值时,可以不指定数组长度,系统自 动根据初值个数来决定数组长度。例如:
int a[ ]={0,1,2,3,4};等价 int a[5]={0,1,2,3,4};
今天教大家一个新的数据类型: 一个变量名称可以代表成百上千个 同种类型的数据,即数组。
源程序:从键盘输入3个整数,顺序(反序)输出。
#include<stdio.h> main() { int x1,x2,x3;
scanf("%d%d%d",&x1,&x2,&x3); pprriinnttff((""%%dd %%dd %%dd \\nn"",,xx13,,xx22,,xx31));; }
但不能省略[] int a={0,1,2,3,4}; 是错误的 (4)对数组进行初始化时,不允许初始化的元素个数超过 数组的长度,如: int a[5]={0,1,2,3,4,5}; 是错误的
数组课堂练习2:
14.若有定义语句:int m[5]={5,4,3,2,1},i=4;,则下面对m数组元素
long num[N]; short w[2*N]; 5. inintt ppeerrssoonn((1100));; 错误 6. int n=10, a[n]; 错误 7. float a[10.5]; 错误
7.1.2 一维数组元素的引用
数组必须先定义再引用
int a[5];
数组元素引用形式为: 数组名 [下标];
3/50

C语言程序设计PPT课件 第5章 数组程序设计

C语言程序设计PPT课件 第5章 数组程序设计
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
例5-3 用一维数组生成Fibonacci数列的前20项,并输出。
#include<stdio.h> void main() {
long int fib[21]; int i; fib[1]=1; fib[2]=1; for(i=3;i<=20;i++)
{
if(str[i]>='0'&&str[i]<='9')
digital[j++]=str[i];
i++;
}
digital[j]='\0';
printf("Output: %s\n",digital);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
/* program e5-6.c*/
5.2.1 字符##串iinncc的lluudd输ee<<入ssttrd输iniog出.h.h>>
}
for(i=0;i<N;i++) printf("%d ",a[i]);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
数组的初始化,是在定义数组的时对数组的各个元素赋初值。 1. 全部元素的初始化 格式
数据类型 数组名[数组长度]={数组全部元素值表} 数据类型 数组名[]={数组全部元素值表} int a[6]={10,20,30,40,50,60}; float r[]={12.5,-3.11,8.6}; 2. 部分元素的初始化 格式 数据类型 数组名[数组长度]={数组前部元素值表} int b[10]={1,2,3}

1.6编程基础之一维数组(15)

1.6编程基础之一维数组(15)

1.6编程基础之一维数组01:与指定数字相同的数的个数总时间限制:1000ms内存限制:65536kB描述输出一个整数序列中与指定数字相同的数的个数。

输入输入包含三行:第一行为N,表示整数序列的长度(N <= 100);第二行为N个整数,整数之间以一个空格分开;第三行包含一个整数,为指定的数字m。

输出输出为N个数中与m相同的数的个数。

样例输入样例输出02:陶陶摘苹果总时间限制:1000ms内存限制:65536kB描述陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。

苹果成熟的时候,陶陶就会跑去摘苹果。

陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。

现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。

假设她碰到苹果,苹果就会掉下来。

输入包括两行数据。

第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。

第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

输出包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。

样例输入样例输出来源NOIP2005复赛普及组第一题03:计算书费总时间限制:1000ms内存限制:65536kB描述下面是一个图书的单价表:计算概论28.9 元/本数据结构与算法32.7 元/本数字逻辑45.6元/本C++程序设计教程78 元/本人工智能35 元/本计算机体系结构86.2 元/本编译原理27.8元/本操作系统43 元/本计算机网络56 元/本JAVA程序设计65 元/本给定每种图书购买的数量,编程计算应付的总费用。

输入输入一行,包含10个整数(大于等于0,小于等于100),分别表示购买的《计算概论》、《数据结构与算法》、《数字逻辑》、《C++程序设计教程》、《人工智能》、《计算机体系结构》、《编译原理》、《操作系统》、《计算机网络》、《JAVA程序设计》的数量(以本为单位)。

《C语言程序设计课件》第四章-数组

《C语言程序设计课件》第四章-数组
提示:程序在读入数时将其存储在一个数组中, 然后通过数组反向开始一个接一个地显示出数组 元素。
#include <stdio.h> #define N 10 int main(void)
{ int a[N], i; printf("Enter %d numbers: ", N);
for (i = 0; i < N; i++)
for(i=0;i<1;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
a[0]
20
a[1]
02
a[2]
44
a[3]
55
a[4]
88
a[5]
99
for(i=0;i<5;i++) if (a[i]>a[i+1]) { ……}
for(i=0;i<4;i++) if (a[i]>a[i+1]) { ……}
4.2 一维数组
一维数组主要用来存储一组类型相同并且数量一定 的数据。其中,每个数据称为数组的一个元素。
4.2.1 一维数组定义 一维数组的定义形式如下: 类型名 数组名[常量表达式]; int x[100]; char string[10]; double data[10];
常量表达式给出了数组的长度,在C语 言中定义数组时必须确定数组的长度。
600
xxx[[[654]]]
700
xxx[[[765]]]
800
xxx[[[876]]]
900
xxx[[[987]]]

C语言程序设计 练习题参考答案 第四章 (1) 一维数组

C语言程序设计 练习题参考答案 第四章 (1) 一维数组
printf("%4d",a[i]);
printf("\n请输入要插入的整数,输入之后按回车键,如要结束请输入-1\n");
scanf("%d",&x);
}
}
/* 4.15 将十进制数转换成二进制数,并按位存到数组中。(限正整数) */
C语言程序设计 练习题参考答案 第四章 (1) 一维数组
/* 4.11 fibonacci数列,前15项 1,1,2,3,5,。。。。。*/
#include "stdio.h"
void main()
{
int f[15]={1,1}, i;
for(i=2;i<=14;i++) /* 计算 */
f[i]=f[i-2]+f[i-1];
printf("fibonacci数列,前15项\n"); /* 输出 */
for(i=0;i<=14;i++)
{
printf("%5d",f[i]);
if((i+1)%5==0)
for(i=0;i<=9;i++)
printf("%3d",a[i]);
}
/* 4.13 有序数列中插入若干个数,仍然保持有序 */
#include "stdio.h"
void main()
{
int a[100]={1,4,8,10};
int i,k,x,count=4;/* i,k 循环变量, x 输入整数,count 有多少整数*/

实验六 一维数组实验报告

实验六 一维数组实验报告

***软件类实验报告课程名称:C语言程序设计学号:姓名:班级:指导教师:开课学期:学院:***教务处⑷一维数组排序。

四、实验过程及内容:(运行结果请抓图到对应题目的下方)1. 先分析以下程序,写出运行结果,再上机检验。

2.程序填空题。

下面程序的功能是9个评委给某个参赛选手打分,去掉一个最高分和一个最低分,求该参赛选手的平均分。

填空完成程序。

实验结果:3. 程序填空题。

有数列1,1,2,4,7,13,24…,该数列的规律是从第4项起,每项是它的前三项之和。

下列程序的功能是将该数列的前30项存放在一维数组中,输出时每行输出5个数。

填空完成程序。

实验结果:4. 程序改错题。

下面程序的功能是将数组中的数按从大到小排序后输出。

改正程序中的错误。

实验结果:5. 程序改错题。

某公司从用公用电话传递数据,数据是四位的整数,在传递过程中需要加密,加密规则为每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

改正程序中的错误。

实验结果:6. 小楚参加了一个研究生考试培训班,共30次课,由于路途较远,每次都是打车去上课,来回的车费分别存储在数组a和b中,其中-1表示未去上课。

编程计算小楚参加培训班共打车花费多少钱?(要求保留1位小数,用循环实现)输出结果的形式为:s=1234.5a数组和b数组定义如下:doublea[30]={31.0,32.0,30.3,32.8,30.5,30.6,31.0,32.8,-1,31.8,31.9,31.5,32.3,32.3,31.8,32.5 ,31.5,30.3,30.4,32.5,30.2,30.2,30.7,32.1,32.1,31.4,31.9,31.9,-1,30.5};doubleb[30]={30.2,30.2,30.3,31.6,32.7,31.5,30.4,32.4,-1,31.0,31.8,32.1,31.6,31.4,32.4,32.1 , 32.5,32.3,32.5,31.4,31.2,30.3,32.3,30.7,31.3,30.2,31.1,30.5,-1,31.9};五、实验小结。

一维、二维数组及应用程序设计习题

一维、二维数组及应用程序设计习题

一维、二维数组及应用程序设计习题1、 【字符统计问题】题目描述:试统计用户键盘输入的一串英文字符中每种英文字符个数。

题目要求:⑴相同英文字符的大小写形式视为同一种统计对象;⑵遇到任意非英文字符时统计终止;⑶输出数据时每行仅输出10个数据。

输入数据:abcdeABCDElKlhmn2输出数据:A(2) B(2) C(2) D(2) E(2) F(0) G(0) H(1) I(0) J(0)K(1) L(0) M(1) N(1) O(0) P(0) Q(0) R(0) S(0) T(0) U(0) V(0) W(0) X(0) Y(0) Z(0)2、 【约瑟夫(猴子选大王)问题】题目描述:有M(1000以内)个猴子围成一圈,每个有一个编号,编号从1到M 。

打算从中选出一个大王。

经过协商,决定选大王的规则如下:从第一个开始,每隔N(任意正整数)个,数到的猴子出圈,最后剩下来的就是大王。

题目要求:从键盘输入M 、N(均为正整数),试编程计算哪一个编号的猴子将成为大王。

输入数据:15 3 输出数据:5 200 55 93 3、 【行列互换问题】题目描述:试编程将一个二维数组行和列元素互换,存到另一个二维数组中。

例如:A =B = 4、 【矩阵初始化问题】题目描述:矩阵是线性代数中的重要概念及研究工具,在计算机算法设计中,我们常常选用二维数组之类的数据结构来描述矩阵。

下图是两个4×4的下三角方阵(即行列相等)初始化后的状态,请编程输出任意方阵(用户从键盘输入方阵的行列值)的这类初始化状态。

A 4×4 =B 4×4 =5、 【杨辉三角问题】题目描述:杨辉三角(出自其1261年所著的《详解九章算法》,也叫贾宪三角或帕斯卡三角),它可以简单解释为由两个未知数和的幂次方运算后按某个未知数的降幂排列(或另一未知数的升幂排列)后的系数表(二项式定理)。

比如(x+y)0=1,系数为(1);(x+y)1=x+y ,系数为(1、1);(x+y)2=x 2+2xy+y 2,系数为(1、2、1);(x+y)3=x 3+3x 2y+3xy 2+y 3,系数为(1、3、3、1)以及四次、五次、……等运算后所得的系数表,如下图(仅举5行):题目要求:⑴利用一维数组试求用户给定行数的杨辉三角形;⑵利用二维数组试求用户给定行数的杨辉三角形(请尽力严格按照上图要求的输出格式)。

《C语言程序设计》教案 第四章 数组—一维数组

《C语言程序设计》教案 第四章 数组—一维数组
for(i=1;i<=100;i++)
if(a[i]>average)
printf(“%f\n”,a[i]);
(2)在这里,a代表数组名,a[i]代表a数组中的一个元素,i是数组元素的下标,当i的值为1时,a[i]代表a[1];当i的值为2时,a[i]代表a[2]。在循环中当i从1变化到100时,a[i]也就逐个代表a[1]到a[100]。
if(a1>average)printf(“%f\n”,al);
if(a2>average)printf(“%f\n”,a2);
……
if(a100>average)printf(“%f\n”,a100);这样的程序是无法让人接受的。
解决上述问题方法:(1)在C语言中,我们可以定义一个名叫a的变量,它不代表一个单一的成绩值,而是代表整个成绩组。使用数组元素a[1]、a[2]、…、a[100]来代替a1、…、a2、…、a100,则程序就会简单得多,只需要用一个for循环就能完成100次比较:
每个数组元素也都可以作为单个变量使用。
3、一维数组(45分钟)
(1)一维数组的定义(先定义后使用)
格式:类型说明数组名[常量表达式]
例如:
int grades[10]; /*定义了一个数组grades,元素个数为10,数组元素类型为整型。*/
说明:1)数组的类型就是数组各个元素的类型,对于一个数组,所有元素的数据类型都是相同的。
(3)数组的下标:是数组元素的位置的一个索引或指示。
(4)数组的维数:数组元素下标的个数。根据数组的维数可以将数组分为一维、二维、三维、多维数组。
例如:int a[10];
定义了一个一维数组a,该数组由10个数组元素构成的,其中每一个数组元素都属于整型数据类型。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实训六一维数组程序设计一、实训目标熟练掌握使用一维数组的编程方法和常用算法。

1、掌握数组的定义、输入和输出方法。

2、掌握下标变量的使用方法。

3、掌握求极值、分类统计、排序、查找、移动等常用算法。

4、进一步熟练程序的调试和测试方法。

5、*学习数组作为函数参数的编程方法。

二、语法练习1、数组是把同类型的变量组织在一起。

2、 int a[5]; 表示定义了 5 个整形类型的变量,分别为:a[2]、a[3]、 a[4] 、 a[0] ,各元素在内存中连续存放,数组名a表示数组在内存中的初始地址。

3、在C语言中对一维整型数组的正确定义为 D 。

A)int a(10); B)int n=10,a[n];C)int a[ ]; D)#define N 10int a[N];4、以下能对一维数组a进行初始化的语句是: ( C )A. int a[5]=(0,1,2,3,4,);B. int a(5)={} ;C. int a[3]={0,1,2};D. int a[5]={5*1};5、已知:int a[10]; 则对a数组元素的正确引用是( D )。

A、a[10]B、a[3.5]C、a(5)D、a[0]6、若有以下数组说明,则数值最大的和最小的元素下标分别是( B )。

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};A.1,12B.0,11C.1,11D.0,127、若有以下数组说明,则i=4;a[a[i]]元素数值是( A )。

int a[6]={ 8,11,3,6,2,12};A.3B.2C.6D.118、设有定义int a[5],i;用for循环结构分别写出数组的输入和输出程序段。

for(i=0;i<5;i++)scanf(“%d”,&a[i]);for(i=0;i<5;i++)printf(“%d”,&a[i]);三、实训内容和步骤1、定义一个具有10个元素的一维整型数组,从键盘给各元素赋值,并以每行4个数的格式输出。

源程序#include<stdio.h>#define SIZE 10void main(){int i,a[SIZE];printf(“Input 10 integers:\n”);for(i=0;i<10;i++)scanf(“%d”,&a[i]);for(i=0;i<10;i++){printf(“%d ”,a[i]);if((i+1)%4==0)printf(“\n”);}}语法错误:测试数据预期结果实际结果(连续运行时)调试过程:(指编译通过,无语法错误,但运行结果不对时)思考:(结合上一个实验内容)1)int a[10]; 未初始化时,各数组元素的值是多少?2)int a[10]={1,3};则a[0]~a[9]的值分别为:2、改错(教育在线上需改错的程序文件夹中err6_1.cpp),程序功能为:在数组a中查找与x相同的元素,如找到,输出x在数组中的下标。

(要求画出流程图)有错的源程序#include <stdio.h>int main(){int i, x, n;int a[n];printf("输入数组元素的个数:");scanf("%d", &n);printf("输入数组%d个元素:",n);for(i = 0; i < n; i++)scanf("%d", &a[i]);printf( "x= " ); //断点1scanf("%d", &x);for(i = 0; i < n; i++)if(a[i] != x) break; //断点2if(i!=n)printf( "没有找到与%d相等的元素!\n", d);elseprintf( "和%d相同的数组元素是a[%d]=%d\n", x, i, a[i]);return 0; //断点3}修改后的源程序#include <stdio.h>#define SIZE 100int main(){int i, x, n,flag;int a[SIZE];flag=1;printf("输入数组元素的个数:");scanf("%d", &n);printf("输入数组%d个元素:",n);for(i = 0; i < n; i++)scanf("%d", &a[i]);printf( "x= " ); //断点1scanf("%d", &x);for(i = 0; i < n; i++)if(a[i] == x) {printf(“与x相同的元素的下标为%d”,i);flag=0;}if(flag)printf(“没有与x相同的元素”);return 0; //断点3}语法错误:测试数据预期结果实际结果(连续运行时)调试过程:(指编译通过,无语法错误,但运行结果不对时,借助3个断点)在断点1处,查看数组各元素的值与你输入的数据是否一致3、从键盘输入一个班的成绩(最多20人),具体人数由键盘输入。

要求:找出最高分及序号、计算平均分、统计不及格的人数流程图#include<stdio.h>#define SIZE 20void main()int i,n,index,count;float a[SIZE],s,avg;printf(“Input n:\n”);scanf(“%d”,&n);printf(“Input %d grades:\n”,n);for(i=0;i<n;i++)scanf(“%f”,&a[i]);index=0;s=0;count=0;for(i=1;i<n;i++)if(a[i]>a[index])index=i;printf(“最高分=%f,序号=%d”,a[index],index); for(i=0;i<n;i++)s=s+a[i];avg=s/n;printf(“平均分=%f”,avg);for(i=0;i<n;i++)if(a[i]<60)count++;printf(“不及格人数=%d”,count);}源程序语法错误:测试数据预期结果实际结果(连续运行时)调试过程:(指编译通过,无语法错误后,但运行结果不对时)4、定义一个长度为6的数组,从键盘输入6个数据给数组,并显示;然后输入一个新数据x,原数组中数据逐次前移,即a[1]→a[0],a[2]→a[1],……,a[5]→a[4],新数据x→a[5],输出新的数组。

流程图#include<stdio.h>#define SIZE 6void main(){int a[SIZE],i,x,temp;printf(“Input 6 integers:\n”);for(i=0;i<6;i++)scanf(“%d”,&a[i]);for(i=0;i<6;i++)printf(“%d\n”,a[i]);printf(“Input x:\n”);scanf(“%d”,&x);for(i=1;i<6;i++)a[i-1]=a[i];a[5]=x;for(i=0;i<6;i++)printf(“%d”,a[i]);}语法错误:测试数据实际结果(连续运行时)调试过程:(指编译通过,无语法错误后,但运行结果不对时)思考:数据移动时,若按照:a[5]→a[4] ,……,a[2]→a[1] ,a[1]→a[0]的顺序编程,结果如何?a[4]=a[3]=a[2]=a[1]=a[0]=a[5]5、*(选做)输入一个班的成绩(最多20人),具体人数由键盘输入,按分数从高到低排序并输出。

流程图源程序#include<stdio.h>#define SIZE 20void main(){int i,n,index,k;float a[SIZE],temp;printf(“Input n:\n”);scanf(“%d”,&n);printf(“Input %d grades:\n”,n);for(i=0;i<n;i++)scanf(“%f”,&a[i]);for(k=0;k<n;k++){index=k;for(i=k+1;i<n;i++)if(a[i]>a[index])index=i;temp=a[index];a[index]=a[k];a[k]=temp;}for(i=0;i<n;i++)printf(“%f”,a[i]);}语法错误:测试数据实际结果(连续运行时)调试过程:(指编译通过,无语法错误后,但运行结果不对时)6、*(选作)把内容3中求最平均分的功能用一个函数去实现,如何改写?函数接口函数名:形参:返回值:源程序#include<stdio.h>float avg(float b[],int n);#define SIZE 20void main(){int i,n,index,count;float a[SIZE],s;printf(“Input n:\n”);scanf(“%d”,&n);printf(“Input %d grades:\n”,n);for(i=0;i<n;i++)scanf(“%f”,&a[i]);index=0;s=0;count=0;for(i=1;i<n;i++)if(a[i]>a[index])index=i;printf(“最高分=%f,序号=%d”,a[index],index);s=avg(a,n);printf(“平均分=%f”,s);for(i=0;i<n;i++)if(a[i]<60)count++;printf(“不及格人数=%d”,count);}float avg(float b[],int n){float all,result;int i;all=0;for(i=0;i<n;i++)all=all+b[i];result=all/n;return result;}语法错误:测试数据实际结果(连续运行时)调试过程:(指编译通过,无语法错误后,但运行结果不对时)四、分析与思考五、体会与建议。

相关文档
最新文档