实验4数组(答案解析)

合集下载

C语言-数组-实验题目及答案

C语言-数组-实验题目及答案

实验六数组程序设计【实验目的】1、掌握使用一维数组编程方法2、掌握使用二维数组进行程序设计【实验内容】一、上机验证程序,并分析结果要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。

1、#include <stdio.h>int main(){ int a[ ]={1,2,3,4,5} , i, j, s=0 ;j = 1;for ( i = 4 ; i>=0 ; i--){s = s+ a[i] * j ;j = j * 10 ;}printf(" s= %d \n" , s );return 0;}二、程序改错题1.下面程序的功能,是从键盘输入一个数组(数组长度为10),查找数组中正数的个数。

源代码如下,程序中存在错误,请将其改正。

#include <stdio.h>int main(){int a(10);/*定义数组*/int count,i;/* i循环变量 count 正数个数*/for(i=0;i<=10;i++){/*循环输入*/scanf("%d",a[i]);}count=1;for(i=0;i<=10;i++){/*查找正数*/if(a(i)>0)count++;}printf("数组中正数有:%d个\n",count);return 0;}三编写程序1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。

#include <stdio.h>#define N 30int main(){float score[N],sum=0,aver;int i;for(i=0;i<30;i++){scanf("%f",&score[i]);sum=sum+score[i];}aver=sum/30;printf("平均分为:%.2f\n",aver);for(i=0;i<N;i++)if(score[i]>aver)printf("%.2f ",score[i]);printf("\n");return 0;}2.编写程序:假设有13位评委参与评分工作。

C语言测试四(带有答案)

C语言测试四(带有答案)

测试四(数组)姓名:学号:一.选择题1.若有以下定义语句:int a[]={1,2,3,4,5,6,7,8,9,10}; 则值为5的表达式是:()a) a[5] b) a[a[4]]c) a[a[3]]d) a[a[5]]2.要求定义具有80个、char类型元素的一维数组,错误的定义语句是()a) #define N 80 b) int N=80;char s[N]; char s[N];c)#define N 40 d) char s[40+40];char s[2*N];3. 若有以下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10}; 则对a数组元素正确的引用是:()a) a[10] b) a[a[3]-5] c) a[a[9]]d) a[a[4]+4]4.若有以下定义语句:float a[11]={0,1,2,3,4,5,6,7,8,9,10}; 则以下叙述中错误的是:()a) a数组在内存中占44个字节b) a数组的最后一个元素为a[10]c) a数组的第一个元素为a[0]d) 以上定义语句给a数组所赋初值是整数,不能正确赋值5.若有以下定义语句:double a[5]; int i=0; 能正确给a数组元素输入数据的语句是:()a) scanf(“%lf%lf%lf%lf%lf”,a);b)for(i=0 i<=5 i++) scanf(“%lf”,a+i);c) while(i<5) scanf(“%lf”,&a[i++]);d) while(i<5) scanf(“%lf”,a+i);6. 以下关于数组的描述正确的是:()a) 数组的大小是固定的,但可以有不同数据类型的数组元素b) 数组的大小是可变的,但所有数组元素的数据类型须相同c) 数组的大小是固定的,且所有数组元素的数据类型须相同d) 数组的大小是可变的,且可以有不同数据类型的数组元素7. 若有说明:int a[10];,则对a数组元素引用不正确的是:()a) a[5+5]b) a[5.5] c) a[10-10]d) a[5]8. 执行int a[ ][3]={1,2,3,4,5,6,7};语句后,a[1][0]的值是()a) 1 b) 3 c) 5d) 49. 若有以下程序:void main(){ int k[9]={19,16,17,15,13,11,10,9}, i=1,s=0;while(i<9 && k[i]%3)s=s+k[i++];printf(“%d\n”,s);}程序执行后的输出结果是:()a) 33b) 52 c) 101d) 11010. 若有以下程序:void main(){ int m[ ][3]={1,3,2,4,5,7,6,8,9,10,11};int i,k=2;for(i=0;i<3;i++)printf(“%d”,m[k][i]);}程序执行后的输出结果是:()a) 4 5 7 b) 2 7 9 c) 9 10 11d) 6 8 911. 若有以下程序:void main(){ int a[3][4]={1,0,2,1,0,2,1,0,1,1,0,1};int i,j,sum=0;for(i=0;i<=2;i++)for(j=0;j<=i;j++)sum+=a[i][j]; }程序执行后的输出结果是:()a) 0 b) 4 c) 5d)312. 下面程序段的输出结果是( )。

C语言实验册完整答案

C语言实验册完整答案

实验2答案五.程序改错#include<stdi o.h>int main(void){int x=3,y;y = x*x;printf("%d = %d * %d\n",y,x,x); /* 输出*/printf("%d * %d = %d\n",x,x,y);return 0;}六、一般编程题6.1#include<stdio.h>int main(void){int x,y;printf("Input x: ");scanf("%d",&x);printf("Input y: ");scanf("%d",&y);printf("%d + %d = %d\n",x,y,x+y);printf("%d - %d = %d\n",x,y,x-y);printf("%d * %d = %d\n",x,y,x*y);printf("%d / %d = %d\n",x,y,x/y);printf("%d %% %d = %d\n",x,y,x%y);return 0;}6.2#include<stdio.h>int main(void){ float x; double y;printf("Input x: ");scanf("%f",&x);printf("Input y: ");scanf("%lf",&y);printf("%f + %f = %f\n",x,y,x+y);printf("%f - %f = %f\n",x,y,x-y);printf("%f * %f = %f\n",x,y,x*y);printf("%f / %f = %f\n",x,y,x/y);return 0;}6.3#include<stdio.h>int main(void){ char c;printf("Input c: ");scanf("%c",&c);printf("%c\n",c+32);return 0;}6.4#include<stdio.h>int main(void){int celsius,fahr;fahr = 150;celsius = 5*fahr/9 - 5*32/9;printf("fahr = %d, celsius = %d\n", fahr, celsius);return 0;} 如果使用公式9)32(5-⨯=f c 计算结果不一样,celsius = 65。

第4章_数组c++_习题答案解析

第4章_数组c++_习题答案解析

习题4一、单项选择题1.若有说明inta[3][4];则a数组元素的非法引用是【】A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]【答案】D【解析】数组下标从0开始,a[0][4]的列下标越界。

2.在C++语言中,引用数组元素时,其数组下标的数据类型允许是【】A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式【答案】C3.以下不正确的定义语句是【】A.doublex[5]={2.0,4.0,6.0,8.0,10.0};B.inty[5]={0,1,3,5,7,9};C.charc1[]={′1′,′2′,′3′,′4′,′5′};D.charc2[]={x1′0′x,a′′x,8′′};【答案】B【解析】初始值的个数大于数组的大小,系统会出现编译错误。

4.对以下说明语句的正确理解是【】inta[10]={6,7,8,9,10};A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值的个数不相同,所以此语句不正确【答案】B5.若有说明:inta[][4]={0,0};则下面不正确的叙述是【】A.数组a的每个元素都可得到初值0B.二维数组a的第一维大小为1C.当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小D.只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值【答案】D【解析】二维数组初始化时,行大小可以省略,被省略的大小根据初值的个数系统来确定,本题中,有2个初值说明是1行4列,所以第一维为1。

元素a[0][0]和a[0][1]赋初值为0,其余元素初值系统默认为0。

6.以下能对二维数组c进行正确的初始化的语句是【】A.intc[3][]={{3},{3},{4}};B.intc[][3]={{3},{3},{4}};C.intc[3][2]={{3},{3},{4},{5}};D.intc[][3]={{3},{},{3}};【答案】B【解析】二维数组初始化时,行大小可以省略,列大小不可以省略,所以A答案错误。

数组选择试题及答案解析

数组选择试题及答案解析

数组选择试题及答案解析一、选择题1. 下列关于数组的描述中,错误的是:A. 数组是一种基本的数据结构,可以存储相同类型的多个元素B. 数组在内存中是连续存储的C. 数组的大小在定义后可以改变D. 数组可以通过索引来访问元素2. 假设有一个整型数组 int[] arr = {1, 2, 3, 4, 5}; 以下哪个表达式是正确的:A. arr[0] = 10B. arr[5] = 6C. arr[-1] = 0D. arr[5]3. 在Java中,以下哪个方法可以用来获取数组的长度:A. length()B. size()C. count()D. total()4. 假设有一个数组 int[] numbers = new int[5]; 以下哪个操作是合法的:A. numbers[5] = 10B. numbers[-1] = 0C. numbers[4] = 100D. numbers[0] = 55. 在C语言中,以下哪个数组声明是正确的:A. int arr[] = {1, 2, 3};B. int arr[3] = {1, 2, 3};C. int arr[3] = 1, 2, 3;D. int arr = {1, 2, 3};二、答案解析1. 答案:C解析:数组的大小在定义后是不可变的,这是数组的一个基本特性。

2. 答案:A解析:数组索引从0开始,arr[0]是第一个元素,可以赋值为10。

3. 答案:A解析:在Java中,数组的长度通过length属性获取。

4. 答案:C解析:数组索引从0到数组长度减一,所以索引4是合法的,可以赋值为100。

5. 答案:A解析:在C语言中,数组的声明可以不指定大小,编译器会根据初始化列表的长度自动计算数组的大小。

选项A是正确的声明方式。

数组实验报告的总结

数组实验报告的总结

一、实验背景随着计算机科学的不断发展,数组作为一种基本的数据结构,在编程中得到了广泛的应用。

为了更好地理解数组的原理和特性,我们进行了数组实验,通过实际操作和理论分析,加深对数组概念的理解。

二、实验目的1. 理解数组的定义、特点和应用场景;2. 掌握数组的创建、访问、修改和删除等基本操作;3. 分析数组在编程中的优势与不足,提高编程能力。

三、实验内容1. 数组的定义与特点数组是一种有序集合,用于存储具有相同数据类型的元素。

数组的元素在内存中连续存放,通过索引访问元素。

数组具有以下特点:(1)元素类型相同:数组中所有元素的数据类型必须相同;(2)连续存储:数组元素在内存中连续存放,便于提高访问速度;(3)索引访问:通过索引快速访问数组元素;(4)动态创建:根据需要动态创建数组,节省内存空间。

2. 数组的创建与初始化在Java中,创建数组主要有以下两种方式:(1)声明数组:int[] array = new int[10]; // 创建一个长度为10的整型数组(2)声明并初始化:int[] array = {1, 2, 3, 4, 5}; // 创建并初始化一个包含5个整数的数组3. 数组的基本操作(1)访问元素:通过索引访问数组元素,如array[0]表示访问第一个元素;(2)修改元素:直接通过索引修改数组元素,如array[1] = 10;;(3)删除元素:在Java中,无法直接删除数组元素,但可以通过重新排序或覆盖元素来实现;(4)查找元素:通过遍历数组,比较元素值,找到目标元素。

4. 数组的应用实例(1)冒泡排序:通过比较相邻元素的大小,实现数组的升序排序;(2)查找算法:如二分查找、线性查找等,通过遍历数组,找到目标元素;(3)动态规划:利用数组存储中间结果,实现复杂问题的求解。

四、实验结果与分析1. 通过实验,我们掌握了数组的定义、特点和应用场景,加深了对数组概念的理解;2. 实验过程中,我们学会了创建、访问、修改和删除数组元素等基本操作,提高了编程能力;3. 在实际应用中,数组在排序、查找、动态规划等方面具有广泛的应用,为编程提供了便利。

C语言教材提纲

C语言教材提纲

C语言教材编写提纲(湘潭工学院计算机科学与技术系蒋清明徐建波)前言作者简介:蒋清明付教授,1964年出生,1987年毕业于湖南师大,并获得硕士学位,1989年考上清华大学硕士研究生,1992年获得硕士学位,现任湘潭工学院计算机科学与技术系付主任,主管教学工作。

毕业后长期从事计算机基础教学与研究,1998年参加《C程序设语言》教材的编写,排名第一,1995 年参加编写了煤炭部规划教材《C语言程序设计基础》,排名第七。

主持并完成院级教研项目《计算机基础》一项,现主管湖南省第三批重点课程建设项目《计算机技术基础》的研究。

主持并完成院级科研项目一项,参加并完成省科委项目一项(第二),参加并完成横向项目多项,公开发表论文10篇,其中第一作者5篇。

本书特点:C语言作为计算机入门基础课,有关C语言的教材也非常多,且许多C 语言教材内容繁杂,学生拿到这样的教材不好学,教师拿到这样的教材不好组织教学内容,况且还有一些书错误较多。

作者多年从事计算机基础教学与研究,有丰富的教学组织经验,教学效果好。

本书特点主要有:(1)简单、精炼、易学、实用,内容够用,编排上逐步加深。

(2)组织系统化,全书编写按照学生易学的方式系统组织,对于常用算法也分别在各章中进行,避免内容重复、遗漏。

(3)全书强调编程技术、方法,并在附录C介绍常用Turbo C调试技术、方法,在附录D介绍出错信息。

《C语言程序设计》目录第一章绪论第一节C语言发展过程一高级语言发展过程二C语言发展过程第二节C语言特点第三节C程序结构与书写格式一C程序结构(举例)二书写格式第四节Turbo C上机操作一高级语言程序的产生过程二上机操作习题一第二章基本数据类型与运算符第一节基本数据类型与数据范围一类型说明格式二整数类型1 带符号的整数2 不带符号的整数3 进制三实数类型1 单精度实数2 双精度实数四类型转换1 算术转换2 赋值转换3 强制类型转换第二节运算符一优先级与结合规则二算术运算三关系运算四逻辑运算五位运算六(复合)赋值运算七条件运算第三节输入与输出函数一格式化输入函数二格式化输出函数(含字符串常量)三字符输入与输出第四节问题与解答习题二第三章控制结构第一节程序结构框图一流程图二N-S图(?)三结构化程序设计第二节二分支结构——if~else一二分支结构——if~else二不平衡if结构——if~(一元二次方程求解)三多分支结构——else if~(成绩分段)第三节多分支结构——switch~case(成绩分段)第四节循环结构一for~循环(判断是否为素数,求两个数的最大公因子)二while~循环(求勾股数)三do~while循环(牛顿迭代法求解非线性方程)四循环嵌套(求1000范围内的素数)第五节break 与continue一break语句(三位数中的最小回数)二continue语句三goto语句(找两数组中公共元素)第六节问题与解答(逻辑判断、表达式猜测、水仙花数)习题三第四章数组第一节一维数组一一维数组说明格式与初始化二一维数组的输入与输出三字符型数组与字符串(字符串转换为整数)第二节二维数组一二维数组的说明格式二二维数组的应用(班级学积分统计)第三节多维数组(年级学积分排序)第四节数组举例(气泡排序,二分法查找元素值,模式匹配)第五节问题与解答(Joseph问题)习题四第五章函数第一节函数调用过程第二节函数一函数说明格式二函数定义格式(求两个数的最大公因子,辗转除法)三举例(数学级数展开)第三节递归函数一递归概念二递归举例1 求n的阶乘2 汉诺塔问题第四节函数与数组一函数与一维数组(字符串长度、字符串比较、atol、atof)二函数与二维数组(迷宫问题的回溯法求解、古纸残数求解)三函数与多维数组第五节存储类型、生命期、可见性一存储类型二自动型变量三外部型变量四静态型变量(统计函数调用次数或求解数)第六节编译预自理一#include二#define1 宏常量2 宏函数第七节问题与解答习题五第六章指针第一节指针与变量(交换函数)第二节指针与一维数组(字符串拷贝函数,插入排序,浮点数转换为字符串)第三节二级指针一二级指针二指向数组的指针第四节指针数组(字符串数组选择排序)第五节指针与函数一形参为指针(字符串函数)二返值为地址型三举例(单词个数与空白字符个数统计)第六节命令行参数第七节函数指针*(计算器功能实现)第八节问题与解答习题六第七章结构与联合第一节结构类型一结构类型的定义、初始化、使用二结构类型数组(多重排序)三结构类型的嵌套结构四自引用结构与链表第二节共用类型第三节枚举类型第四节位域*第五节自定义类型第六节问题与解答习题七第八章文件第一节文件的格式化输入与输出一文件的字符和字符串操作二文件的格式化输入与输出(文件拷贝)第二节文件的块操作一文件的块操作二举例(记录操作)第三节文件的低层操作第四节问题与解答习题八附录A ASCII表附录B 常用库函数附录C Turbo C上机操作一操作过程二调试技术附录D 出错信息解释《C语言程序设计实验指导与习题解答》目录第1部分C语言程序设计实验指导1实验1 Visual C++ 6.0 IDE上机操作过程1 1.1 实验目的1 1.2 实验范例1 1.3 实验步骤1实验2输入/输出操作3 2.1实验目的3 2.2实验范例3 2.3实验4实验3分支结构5 3.1实验目的5 3.2实验范例5 3.3实验7实验4循环结构8 4.1实验目的8 4.2实验范例8 4.3实验9实验5break/continue语句11 5.1实验目的11 5.2实验范例11 5.3实验12实验6函数13 6.1实验目的13 6.2实验范例13 6.3实验14实验7递归函数15 7.1实验目的15 7.2实验范例15 7.3实验16实验8存储类型16 8.1实验目的16 8.2实验范例17 8.3实验18实验9一维数组19 9.1实验目的199.2实验范例20 9.3实验20实验10二维与多维数组21 10.1实验目的21 10.2实验范例21 10.3实验24实验11指针24 11.1实验目的24 11.2实验范例25 11.3实验25实验12命令行参数26 12.1实验目的26 12.2实验范例26 12.3实验27实验13结构体28 13.1实验目的28 13.2实验范例28 13.3实验30实验14共用体31 14.1实验目的31 14.2实验范例31 14.3实验32实验15文件操作32 15.1实验目的32 15.2实验范例33 15.3实验33第2部分C语言程序设计习题与解答35题解1绪论35 1.1习题35 1.2习题解答36题解2基本数据类型与运算符36 2.1习题36 2.2习题解答39 题解3控制结构40 3.1习题40 3.2习题解答44题解4函数504.1习题50 4.2习题解答54题解5数组585.1习题58 5.2习题解答63 题解6指针686.1习题68 6.2习题解答73题解7结构与共用787.1习题78 7.2习题解答86题解8文件918.1习题918.2习题解答97第3部分C语言程序设计等级考试二级模拟试卷104试卷1 104 1.1笔试试题104 1.2上机操作试题115 1.3参考答案117试卷2 119 2.1笔试试题119 2.2上机操作试题129 2.3参考答案132试卷3 134 3.1笔试试题134 3.2上机操作试题146 3.3参考答案148试卷4 150 4.1笔试试题150 4.2上机操作试题161 4.3参考答案164附录常见出错信息及排错示例167参考文献175C语言教材编写规范:1.章标题:第一章,宋体2号,居中,加粗,字距:加宽1磅,行距:多倍行距2.4,段距:段前1.5行,段后1.5行,段前分页。

(完整版)数据结构实验答案及解析

(完整版)数据结构实验答案及解析

《数据结构》实验指导2013 / 2014 学年第 2学期姓名:______________学号:_________班级:______________指导教师:______________潍坊学院计算机工程学院2014预备实验 C语言的函数数组指针结构体知识一、实验目的1、复习C语言中函数、数组、指针和结构体的概念。

2、熟悉利用C语言进行程序设计的一般方法。

二、实验内容和要求1、调试程序:输出100以内所有的素数(用函数实现)。

#include<stdio.h>/*判断一个数是否为素数*/int isprime(int n){for(int m=2;m*m<=n;m++){if(n%m= =0) return 0;return 1;}/*输出100以内所有素数*/int main(){int i;for(i=2;i<100;i++)if(isprime(i)= =1) printf(“%4d”,i);return 0;}运行结果:2、调试程序:对一维数组中的元素进行逆序排列。

#include<stdio.h>#define N 10int main(){int a[N]={0,1,2,3,4,5,6,7,8,9},i,temp;printf(“the original Array is:\n ”);for(i=0;i<N;i++)printf(“%4d”,a[i]);for(i=0;i<N/2;i++){ /*交换数组元素使之逆序*/temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}printf(“\nthe changed Array is:\n”);for(i=0;i<N;i++)printf(“%4d”,a[i]);return 0;}运行结果:3、调试程序:在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素即为该二维数组的一个鞍点。

数组编程题实验报告

数组编程题实验报告

一、实验目的1. 熟悉数组的基本概念和操作。

2. 提高数组编程能力,掌握常见数组处理算法。

3. 培养逻辑思维和问题解决能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3. 开发工具:PyCharm三、实验内容本次实验主要涉及以下数组编程题:1. 数组元素逆序输出2. 数组中查找特定元素3. 数组元素求和4. 数组元素最大值查找5. 数组元素排序四、实验步骤1. 数组元素逆序输出(1)创建一个数组,初始化为[1, 2, 3, 4, 5]。

(2)编写一个函数,用于逆序输出数组元素。

(3)调用函数,输出逆序后的数组。

代码如下:```pythondef reverse_array(arr):return arr[::-1]arr = [1, 2, 3, 4, 5]reversed_arr = reverse_array(arr)print(reversed_arr)```2. 数组中查找特定元素(1)创建一个数组,初始化为[1, 2, 3, 4, 5]。

(2)编写一个函数,用于在数组中查找特定元素。

(3)调用函数,查找元素2在数组中的位置。

代码如下:```pythondef find_element(arr, target):for i in range(len(arr)):if arr[i] == target:return ireturn -1arr = [1, 2, 3, 4, 5]index = find_element(arr, 2)print(index)```3. 数组元素求和(1)创建一个数组,初始化为[1, 2, 3, 4, 5]。

(2)编写一个函数,用于计算数组元素的和。

(3)调用函数,计算数组元素的和。

代码如下:```pythondef sum_array(arr):return sum(arr)arr = [1, 2, 3, 4, 5]total = sum_array(arr)print(total)```4. 数组元素最大值查找(1)创建一个数组,初始化为[1, 2, 3, 4, 5]。

C语言习题集合4(数组)

C语言习题集合4(数组)

第四部分数组4.1 选择题1。

以下关于数组的描述正确的是( ).A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C。

数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素2. 以下对一维整型数组a的正确说明是( )。

A.int a(10);B. int n=10,a[n];C。

int n; D。

#define SIZE 10scanf("%d",&n); int a[SIZE];int a[n];3。

在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。

A。

整型常量B. 整型表达式C. 整型常量或整型表达式D。

任何类型的表达式4。

以下对一维数组m进行正确初始化的是( )。

A. int m[10]=(0,0,0,0);B. int m[10]={ };C。

int m[ ]={0}; D。

int m[10]={10*2};5。

若有定义:int bb[ 8];。

则以下表达式中不能代表数组元bb[1]的地址的是( )。

A. &bb[0]+1 B。

&bb[1] C. &bb[0]++ D. bb+16。

假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( ).A。

3 B。

6 C。

10 D. 207. 若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a’,d,g;则数值为4的表达式是( )A。

a[g—c] B。

a[4] C。

a['d'—’c'] D. a['d'-c]8。

以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。

#include〈stdio。

h〉main(){int a[10],i=0;while(i〈10) scanf(”%d",________ );┇}A。

数组实验报告实验小结

数组实验报告实验小结

一、实验背景随着计算机技术的不断发展,数组作为一种基本的数据结构,在编程领域得到了广泛的应用。

为了更好地理解和掌握数组的相关知识,我们进行了一系列的数组实验。

本次实验报告将对实验过程进行总结,并对实验结果进行分析。

二、实验目的1. 理解数组的基本概念和特点;2. 掌握数组的创建、访问和操作方法;3. 熟悉数组在编程中的应用;4. 培养实验操作能力和问题解决能力。

三、实验内容1. 数组的定义与创建2. 数组的初始化3. 数组元素的访问与修改4. 数组的排序与查找5. 数组的应用实例四、实验过程1. 数组的定义与创建实验一:定义一个整型数组,并初始化为10个元素。

代码如下:```c#include <stdio.h>int main() {int arr[10];// 初始化数组for (int i = 0; i < 10; i++) {arr[i] = i 2;}// 打印数组元素for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}printf("\n");return 0;}```2. 数组的初始化实验二:使用初始化列表直接初始化数组。

代码如下:```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};// 打印数组元素for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) { printf("%d ", arr[i]);}printf("\n");return 0;}```3. 数组元素的访问与修改实验三:访问和修改数组元素。

代码如下:```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5};// 访问数组元素printf("The first element is: %d\n", arr[0]);// 修改数组元素arr[0] = 10;printf("After modification, the first element is: %d\n", arr[0]); return 0;}```4. 数组的排序与查找实验四:使用冒泡排序算法对数组进行排序。

实验4-函数

实验4-函数

实验4 函数程序填空1.普通参数本题分值:4题目描述:输入日期的年份和月份,求该月有多少天。

要求编写函数int daynum(int year,int month),求出以year为年份、以month为月份的某个月的天数。

以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。

代码://通过日期求某月的天数。

#include<iostream>using namespace std;int main(){int daynum(int year,int month);int y,m,d;cin>>y>>m;if(y<1900 || y>=3000 || m<1 || m>12){cout<<"输入错误!"<<endl;return 0;}d=daynum(__(1)__); //以y、m作实参调用函数,求出该月的天数cout<<"此月的天数为"<<d<<endl;return 0;}int daynum(int year,int month){int days;switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12: days=31; break;case 4:case 6:case 9:case 11: days=30; break;case 2: if(year%4==0&&year%100!=0 || year%400==0)days=29;elsedays=28;break;}return __(2)__;}答案:(1) y,m(2) days每空分值:2参考答案:yx3-t1.cpp2.字符数组参数本题分值:4题目描述:编写一个函数,用来求字符串s的任意子串。

关于数组实验报告总结

关于数组实验报告总结

一、实验目的1. 熟悉数组的基本概念和操作方法。

2. 掌握数组的初始化、赋值、遍历、排序、查找等基本操作。

3. 培养编程思维和解决问题的能力。

二、实验内容本次实验主要围绕数组展开,包括以下内容:1. 数组的定义与初始化2. 数组元素的赋值与遍历3. 数组的插入与删除4. 数组的排序5. 数组的查找三、实验步骤1. 数组的定义与初始化(1)定义一个整型数组,命名为arr,大小为10。

(2)使用循环初始化数组元素,从0到9。

2. 数组元素的赋值与遍历(1)使用循环遍历数组,打印出每个元素的值。

(2)将数组的第5个元素赋值为20。

3. 数组的插入与删除(1)在数组的第3个位置插入一个新元素,值为15。

(2)删除数组的第6个元素。

4. 数组的排序(1)使用冒泡排序算法对数组进行排序。

(2)使用选择排序算法对数组进行排序。

5. 数组的查找(1)使用线性查找算法查找数组中值为15的元素。

(2)使用二分查找算法查找数组中值为15的元素。

四、实验结果与分析1. 数组的定义与初始化实验结果:成功定义了一个大小为10的整型数组arr,并使用循环初始化了数组元素。

分析:通过定义数组并初始化,我们可以存储一组有序或无序的数据,方便后续操作。

2. 数组元素的赋值与遍历实验结果:成功遍历了数组,并修改了数组的第5个元素。

分析:通过赋值和遍历操作,我们可以对数组元素进行修改和查询,满足实际应用需求。

3. 数组的插入与删除实验结果:成功在数组中插入了一个新元素,并删除了指定位置的元素。

分析:插入和删除操作可以改变数组的大小和元素顺序,满足实际应用场景。

4. 数组的排序实验结果:使用冒泡排序和选择排序算法对数组进行了排序。

分析:排序操作可以使数组元素按照特定顺序排列,便于后续查找和操作。

5. 数组的查找实验结果:使用线性查找和二分查找算法成功找到了数组中值为15的元素。

分析:查找操作可以快速定位到指定元素的位置,提高程序效率。

五、实验总结通过本次实验,我们掌握了数组的基本概念和操作方法,包括定义、初始化、赋值、遍历、插入、删除、排序和查找等。

实验内容解答

实验内容解答

实验四1.分析以下程序,并通过运行程序,得出程序中的else表示的情况是 B 。

#include <stdio.h>void main(void){int a ;scanf("%d",&a);if(a%2==0){if(a%3==0)if(a%4==0)printf("1"); //能被12整除输出“1”}2elseprintf("0"); //不能被2整除输出“0”} //其余整数无输出A)a 能被2整除B)a不能被2整除C)a不能被4整除D)a不能被12整除2.完成填空,使程序能实现判断输入的自然数是否既是3又是5的倍数。

#include <stdio.h>void main(void){int x;printf("input x:");scanf("%d", &x ); //注意&符号的写法if (x%3==0 && x%5==0 ) //非逗号,printf("yes");elseprintf("no");}5.根据以下函数关系,对输入的每个x 值,计算出相应的y 值。

050101010202020x x x x y x x x x -<⎧⎪+≤<⎪=⎨+≤<⎪⎪+≤⎩4#include <stdio.h>main( ){float x,y;printf("请输入x: ");scanf("%f",&x);if(x<0)y=-x;// printf("%f \n", y=-x);else if(x<10)y=x+5;else if(x<20)y=x+10;elsey=x+20;printf("y=%f\n",y); }不正确的写法:(1)f(x<0)y=-x;else if(x>=0&&x<10)y=x+5;else if(x>=10&&x<20)y=x+10;elsey=x+20;6(2)f(x<0)y=-x;else if(0<=x<10)y=x+5;else if(10<=x<20)y=x+10;elsey=x+20;(3)f(x<0)y=-x;else if(x>=0, x<10)y=x+5;else if(x>=10, x<20)y=x+10;elsey=x+20;其他方法:实验课本P61注意:(1)if之后的条件要用()括起来(2)最后一个else后面不再加条件if(x>=20)(3)复合语句要加大括号{ }(4)数学上的0<x<10关系在C语言中写成x>0&&x<10或0<x&&x<10 (5)scanf(“格式字符串”, &变量名);printf(“格式字符串”,变量名);例:printf(“y=%d”,y);8printf(y); ⨯printf y; ⨯实验五第三章流程控制习题四、找出下面程序中的错误,并对其予以改正:1.分析:原程序在编译的时候并没有出现相应的语法错误,而且程序也可以进行运行。

数组实验报告实验分析

数组实验报告实验分析

一、实验目的1. 理解数组的概念和基本操作。

2. 掌握数组的创建、初始化、访问和修改方法。

3. 学习数组的排序、查找和统计等常用算法。

4. 分析数组在实际应用中的优缺点。

二、实验内容1. 数组的创建与初始化2. 数组元素的访问与修改3. 数组的排序4. 数组的查找5. 数组的统计6. 数组在实际应用中的优缺点分析三、实验过程1. 数组的创建与初始化在实验中,我们首先学习了如何创建一个数组。

在C语言中,可以使用以下语句创建一个整型数组:int arr[10];这里创建了一个包含10个整数的数组,名称为arr。

接下来,我们学习了如何初始化数组。

初始化可以通过以下语句实现:int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};这里初始化了一个包含10个整数的数组,并将前10个整数依次赋值给数组元素。

2. 数组元素的访问与修改访问数组元素可以通过以下语句实现:int value = arr[3]; // 获取数组第4个元素的值修改数组元素可以通过以下语句实现:arr[5] = 20; // 将数组第6个元素的值修改为203. 数组的排序在实验中,我们学习了冒泡排序算法。

冒泡排序是一种简单的排序算法,其基本思想是通过比较相邻的元素,将较大的元素交换到数组的后面。

以下是冒泡排序算法的C语言实现:void bubbleSort(int arr[], int n) {int i, j, temp;for (i = 0; i < n - 1; i++) {for (j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}4. 数组的查找在实验中,我们学习了二分查找算法。

二分查找算法是一种高效的查找算法,其基本思想是将查找区间分为两半,每次查找时缩小查找范围。

程序设计1实验习题实验一

程序设计1实验习题实验一

程序设计1实验习题实验一程序设计(1)实验习题实验一(1)运行以下程序,并解释运行结果。

#includestdio.hintmain(void){intx=1;unsignedu=;printf(x=%u=%d\n,x,x);printf(u=%u=%d\n,u,u);return0;}(2)运行以下程序,解释运行结果,并修改程序以使结果正确。

#includestdio.hintmain(void){intx=;printf(x+1=%d\n,x+1);return0;}(3)运行以下程序,解释运行结果。

程序1:#includestdio.hintmain(void){floata;doubleb;a=123456.789e4;b=123456.7 89e4;printf(%f\n%f\n,a,b);return0;}程序2:#includestdio.hintmain(){floata,b;a=123456.789e5;b=a+20;printf(%f\n,a);printf(%f\n,b);return0;}(4)求平方根:输入1个实数x,计算并输出其平方根(保留1位小数)。

(5)华氏温度转换为摄氏温度::度输入华氏温度f,计算并输出相应的摄氏温度c(保留2位位小数)。

c=5/9(f-32).(6)三天打鱼两天晒网:中国有句俗语叫三天打鱼两天晒网。

假设某人从某天起,开第始三天打鱼两天晒网,问这个人在以后的第n天中是打鱼还是晒网?编写相应程序)(第一天就是当天)。

例如:输入:103输出:Fishinginday103输入:35输出:Dryinginday35(7)按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元元出罚款;若达到或超出50%,就要吊销驾驶证。

请编写程序根据车速和限速自动判别对该机动车的处理。

输入格式:在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。

编译原理实验4 算符优先语法分析- 解析

编译原理实验4  算符优先语法分析- 解析

步骤3:构造算符优先分析表
优先关系:
设G是一个不含 产生式的算符文法,令 a、b是任意两个VT , P、Q、R ∈ VN ,则:
(1) ab 当且仅当文法G中含有形如P …ab…或P …aQb…的产生式 (2) a<b 当且仅当G中含有形如P …aR…的产生式,R而Rb… 或R Qb… (3) a>b 当且仅当G中含有形如P …Rb…的产生式,R而R…a 或R …aQ
<
i
i )#
#N*(N+ i >
)
)#
#N*(N+N >
)
)#
*i ⋖⋖ ⋗⋖ ⋗ ⋖⋖ ⋗ ⋖⋖
动作
移进
归约
移进
移进
移进
归约
移进
移进
归约
归约
()
#
⋖⋗ ⋗
⋖⋗ ⋗
⋗⋗

⋗⋗

最左素短语
i
i
i N+N
分析过程
示例:描述句子i*( i+i )的 分析过程。

关系 当前符
+ +⋗ *⋗ i⋗ (⋖ )⋗ #⋖
如何识别最左素短语?
• 素短语
– 是指这样一种短语,它至少包含一个终结符,并且除 自身之外,不再包含其它更小的素短语。
• 最左素短语
– 句型最左边的那个素短语。
如何识别最左素短语?
定理:
一个OPG文法G的任何句型: #N1a1N2a2…NnanNn+1# (其中Ni可空) 的最左素短语Nj aj … Ni ai Ni+1 是满足如下三个条件的最 左子串: (1)aj-1 ⋖ aj (2)aj =·aj+1 =·… =·ai-1 =·ai (3)ai ⋗ ai+1

数组习题及答案

数组习题及答案

构造数据对象——数组一、填空题1.数组是一组相同的集合。

2.数组名代表数组的。

3.数组元素在数组中的位置序号称为它是从开始整数。

4.有int a[ ]={4,6,2,12,435,-9,76,0,0};该数组元素值最大的下标为。

5.定义数组tw,其能存储23个长整形数的语句为。

6.有说明语句int a[10]={1,2,3,4,5,6};则元素a[9]的值为。

7.数组char c[ ]=”abcd”中有个元素,最后一个元素是。

8.”a”在内存中占个存储单元。

9.定义一个能存放下字符串Vocation的字符数组enm的语句为。

10.定义一个可保存100个整型数的数组pn,并把每个元素初值设为0的语句是。

11.与puts(ss)等价的printf函数调用是。

二、选择题1.下面关于数组的说法,不正确的是()A.数组总为一个整体,可以参加算术运算B.数组中的数组元素相当于一个简单变量C.数组可以用来保存字符串D.数组是一组连续的,类型相同的数据集合2.下列说法不是数组特性的是()A.数组元素类型相同B.数组长度固定C.数组占用连续的内存空间D.数组可作为一个整体参与运算3.定义一个具有8个元素的整形数组,应使用语句()A.int a[8]; B.int a[2,4];C.int a[ ]; D.int *a[8];4. 以下能正确定义一维数组的选项是()A.int num[ ];B.#define N 100 int num[N];C.int num[0..100];D.int N=100;5.下面对s的初始化,不正确的是()A.char s[5]={“abcd”};B.char s[5]={‘a’,’b’,’c’};C.char s[5]=””;D.char s[5]=”abcd”;6.对以下说明语句正确的理解是()int a[10]={6,7,8,9,10,12};A.将6个初值依次赋值给a[1]至a[5];B.将6个初值依次赋值给a[0]至a[5];C.将6个初值依次赋值给a[5]至a[10];D.因数组长度和初值的个数不同,所以此语句不正确7.用scanf语句为数组a中的第二个数组元素输入数据,格式正确的是()A.scanf(“%d”,a[2]);B.scanf(“%d”,&a[2]);C.scanf(“%d”,&a[1]);D.scanf(“%d”,a(1));三、判断题1.数组在内存中占用的空间是不连续的。

实验(6)-数组-参考答案

实验(6)-数组-参考答案

实验(6)-数组-参考答案C语⾔程序设计实验教学(6)【实验⽬的】数组的应⽤是很重要的⼀章。

通过实验掌握⼀维数组的主要应⽤,并理解数组的存储。

对⼆维数组的处理要⽐较熟悉。

【实验要求】⼀维数组的题⽬要求全⾯掌握,应⽤循环结构完成⼀维数组的输⼊、处理和输出。

⼆维数组能够完成简单的数据处理和应⽤。

【实验课时】8.0【实验内容】⼀维数组:1、定义⼀个10个元素的int数组a,输⼊10个数,并输出。

main(){int i,a[10];for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)printf("%5d",a[i]);printf("\n");}2、⽤数组来保存Fibonacci数列前20项数值,以每5个数据为⼀⾏进⾏输出。

main(){int i; long f[20];f[0]=1;f[1]=1;for(i=2;i<20;i++)f[i]=f[i-1]+f[i-2];for(i=0;i<20;i++){if(i%5==0) printf("\n");printf("%10ld",f[i]);}printf("\n");}3、计算整数数组num中的最⼤值及其所在的下标。

main(){int i,max,p,a[10];printf("please enter 10 data:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);max=a[0];p=0;for(i=1;i<10;i++)if(a[i]>max) {max=a[i];p=i;}printf("max is:%d\n",max);printf("point is:%d\n",p+1);}4、在包含10个整数的数组中找出最⼤者,并与第⼀个元素交换。

第四章 数组习题集答案

第四章 数组习题集答案
A)120B)113C)140D)126
20.若已有定义char s[10]; int i;下列输入函数调用中错误的是【】。
A)for (i=0; i<10; ++i) s[i]=getchar( ) ;
B)for (i=0; i<10; i++) scanf("%c",s[i] );
C)scanf("%s",s);
#include <stdio.h>
main()
{
int i=0,x=0;
int a[][4]={0,2,0,3,0,3,4,0,4,5,6,7,6,5,0,0};
while (i<4)
{
x+=【】;
i++;
}
printf("%d\n",x);
}
A)a[3-i][3-j]B)a[i][3-i]C)a[i][i]D)a[3-i][4]
printf ("%d\n",strlen(s1));
A)5B)2C)6D)7
37.定义如下变量和数组:
int i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句输出结果是【】
for(i=0;i<3;i++) printf("%d",x[i][0]);
A)1 4 7B)3 57C)3 6 9D)1 5 9
第四
一、选择题
1.如果char型变量占两个字节的存储单元,则按照如下方式定义的数组x占用的字节数是【】。
char x[50]={2,4,6,8,10};
A)50B)100C)10D)5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四数组实验课程名:高级语言程序设计4 数组专业班级:学号:姓名:实验时间:2016年4月27日实验地点:K4 指导教师:(3)结果分析:当i能被3整除时,就换一次行。

(二)实验任务2(1)程序代码:#include <stdio.h>void main( ){int i,a[5],sum=0;for(i=0;i<=4;i++)scanf("%d",&a[i]);for(i=0;i<=4;i++)sum+=a[i];printf("sum=%d\n",sum);}(2)程序运行结果:(3)程序分析:使用for循环依次输入5个数,并使5个数相加。

(三)实验任务3(1)程序代码:#include <stdio.h>int main( ){ int i,j,row=0,colum=0,max;int a[3][4] = {{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}};max=a[0][0];for(i=0;i<=2;i++)for (j=0;j<=3;j++)if(a[i][j]>max){max=a[i][j];row=i;colum=j;}printf(" Max=%d, Row=%d, Colum=%d\n", max, row, colum);return 0;}(2)程序运行结果:(3)程序分析:分别将这12个元素同max相比较,当某个元素的值大于max时,则将此元素的值赋值给max,最后输出max及最大值的下标。

(四)实验任务4(1)程序代码:#include <stdio.h>void main( ){ int i, x, a[10]={1,2,3,4,5,6,7,8,9,10};scanf("%d",&x); /*输入x变量的值*/for ( i=0; i<10; i++ )printf("%4d",a[i]);printf("\n");for(i=0;i<10;i++) /* 循环查找与x相等的元素*/if ( x==a[i] )printf("%d\n",i); /* 输出查找结论,输出下标值*/else printf("Not found %d\n",x);}(2)运行结果:(3)程序分析:通过for循环查找与x相等地元素。

(五)实验任务5(1)程序代码:# include<stdio.h>#define N 11(3)程序分析:使用起泡算法将这10个数由大到小的顺序排列出来,后使用for循环语句把插入元素后的数组由大到小的顺序排列。

(六)实验任务6(1)程序代码:#include<stdio.h>int main(){int a[10];int i,k;printf("请输入10个整数:");for(i=0;i<10;i++)scanf("%d",&a[i]);k=0;for(i=1;i<10;i++)if(a[k]<a[i])k=i;for(i=k;i<9;i++)a[i]=a[i+1];for(i=0;i<9;i++)printf("%d ",a[i]);printf("\n");}(2)运行结果:(3)程序分析:该程序先将输入的10个数有小到大的顺序列出来,最后输出前9个数。

(七)实验任务7(1)程序代码:#include <stdio.h>void main(){ float x[1000], sum=0.0, ave, a;int n=0, i;printf ("Enter mark : \n");scanf("%f", &a);while (a>=0.0 && n<1000){ sum+=a;x[n]= a ;n++;scanf("%f", &a);}ave= sum/n ;printf ("Output : \n");printf ("ave = %f\n", ave);for (i=0; i<n; i++)if ( x[i]<ave )printf("%f\n", x[i]);}(2)运行结果:(3)程序分析:输入若干个数,以负数为结束标志。

使用while选择语句,求出输入的整数的平均值。

(八)实验任务8(1)程序代码:#include<stdio.h>void main(){int i,j,a[6][6];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-1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];}for(i=0;i<6;i++){for(j=0;j<=i;j++)printf("%d ",a[i][j]);printf("\n");}}(2)运行结果:(3)程序分析:这可以看做一个6*6的矩阵,通过使用数组级for循环语句将杨辉三角表示出来。

(九)实验任务9(1)程序代码:#include <stdio.h> #include <string.h>void main(){ char a[10],b[10];int c,d,k,ch;scanf("%s",&a);scanf("%s",&b);printf("a=%s,b=%s\n",a,b);c=strlen(a);d=strlen(b);if(c>d){printf("a=%s\n",b);printf("b=%s\n",a);}else{printf("a=%s\n",a);printf("b=%s\n",b);}}(2)运行结果:(3)程序分析:运行程序的时候先输入country,再输入side,经过程序的运行,实现了将side连接到country的后面形成新的单词countryside,即实现了将第二个字符串连接到第一个字符串的后面从而·形成一个新的字符串的功能。

(十一)实验任务11(1)程序代码:#include "stdio.h"void main (){char str1[100],str2[100];int i,s;printf("\n Input string 1:\n");gets(str1);printf("\n Input string 2:\n");gets(str2);i=0;while((str1[i]==str2[i])&&(str1[i]!=" "))i++;s=str1[i]-str2[i];printf("%d\n",s);0020}(2)运行结果:(3)程序分析:先输入abcdefg,后输入abceef,让后求出两个字符数组中第一个不同元素的ASCII码之差。

(十二)实验任务12(1)程序代码:#include <stdio.h>#include <ctype.h>void main(){int num[26],i;char c;for(i=0;i<26;i++)num[i]=0;while ((c=getchar())!='#') /* 统计从终端输入的大写字母个数*/if (isupper(c)) num[c-65]+=1; //检查ch是否为大写字母//for (i=0;i<26;i++) /* 输出大写字母和该字母的个数*/if (num[i])printf("%c:%d\n",i+65,num[i]);}(2)运行结果:(3)程序分析:(十三)实验任务13(1)程序代码:#include<stdio.h>#include<string.h>void main(){char a[50][100]; //字符数组a[50][100]//int i=0,max=0,k;printf("请输入字符串,每次输入完成后请按一次“Enter”:\n");while(gets(a[i])&&strcmp(a[i],"stop")) //比较两个字符串//{if(strlen(a[i])>max) //统计字符数组中字符的个数//{max=strlen(a[i]);k=i;}i++;}printf("最长的字符串是:\n%s\n",a[k]);}(2)运行结果:(3)程序分析:运用while循环及if条件语句,测出每次输入字符串的长度,并比较他们的大小,最后输出最长的字符串。

(十四)实验任务14(1)程序代码:#include <stdio.h>#include <string.h>void insert(char *p1,char *p2,char pos){int m,n,i;char temp[20];m=strlen(p1);n=strlen(p2);for(i=0;i<n;i++){if(pos==*(p1+i)){strcpy(temp,p1+i+1);*(p1+i+1)='\0';strcat(p1,p2);strcat(p1,temp);puts(p1);break;}}}void main(){char s1[20], s2[20];char pos;printf("Please input s1:");gets(s1);printf("Please input s2:");gets(s2);printf("Please input pos:");pos=getchar();putchar(pos);insert(s1,s2,pos);}(2)运行结果:(3)程序分析:通过使用strcpy函数把str2指向的字符串复制到str1中1去。

相关文档
最新文档