实验6 数组(含函数调用)

实验6 数组(含函数调用)
实验6 数组(含函数调用)

试验六数组

一、实验目的

1.了解数组的特点,掌握一维数组的定义、初始化及其使用方法。

2.掌握字符串的输入输出方法,熟悉常用的字符串操作函数。

3.掌握二维数组的定义、初始化及其使用方法。

二、所涉及到的知识点

1.一维数组的定义。考虑数组定义的格式,数组元素在内存中的存储形式及地址分配,数组名的意义,数组元素的维数(数组元素的个数)等。

2. 一维数组的初始化。数组初始化赋值的形式,考虑初始值多于数组维数,少于数组维数以及数组维数缺省的情况下,初始赋值的意义理解。

3. 二维数组的定义。考虑二维数组定义的格式,尤其是行和列变化,二维数组在内存中如何存储,地址如何分配,二维数组如何转化为一维数组,数组下标如何变化?

4. 二维数组的初始化。二维数组初始化的形式,考虑行下标和列下标在什么情况下可以缺省,缺省时的意义有何不同?

5. 字符数组的定义和初始化。理解字符数组和字符串之间的联系和区别。尤其是字符串结束标志‘\0’的意义。分析字符串长度、字符串所占内存空间的大小这两种描述的区别。

6. 字符数组的输入输出,字符串的输入输出,并比较二者的异同。

三、实验内容

(一)阅读并调试下列程序,给出程序结果,并指明程序的功能是什么。

1.求最大值问题。

#include "stdio.h"

#define N 10

void main()

{

int a[N]={20,9,10,-16,-9,18,96,7,11,33};

int i,max=a[0],m=0;

for(i=1;i

if(max

{

max=_a[i]_______;/* 将比较后的数组元素的较大值赋给max变量*/

m=__i________; /*将比较后较大的数组元素下标赋给m变量*/

}

printf("max=%d,为第%d个元素\n",max,m+1);

}

此数列作用就是将数列中的最大项找出

2.数据分类问题。

#include "stdio.h"

#define N 10 /*这是宏定义语句,表示后面程序中出现的N均为10*/

void main()

{

int a[N],b[N],i,j=0,k=N-1;

printf("请输入数据:\n");

for(i=0;i

scanf("%d",&a[i]);

for(i=0;i

{

printf("%d ",a[i]);

if(a[i]<0)

b[j++]=a[i]; /* 将负数放在b的前部*/

else

b[k--]=a[i]; /* 将其他数放在b的后部*/

}

printf("\n");

for(i=0;i

printf("%d ",b[i]);

}

程序调试

①调试程序时通常先将N定义为一个小数值,当程序调试成功后再将N定义为常数10,这样可以提高程序的调试效率。

②在设计调试用数据时,应考虑各种数据情况,以便提高程序的可靠性。

程序运行结果:

3.字母统计问题。输入一个长度小于80的字符串,统计其中字母的个数。

/* 字母统计问题程序*/

#include "stdio.h"

void main()

{

char s[20];

int i=0,counter=0;

printf("请输入字符串:\n");

gets(s);

while(s[i]!='\0')

{

if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')

counter++;

i++;

}

printf("Total: %d\n",counter);

}

程序调试

① 运行程序,输入一个长度不足20的字符串,察看并分析程序运行结果。

②运行程序,输入一个长度恰好是20的字符串,察看并分析程序运行结果。

③运行程序,输入一个长度超过20的字符串,察看并分析程序运行结果。

④运行程序,输入一个全是字母的字符串,察看并分析程序运行结果。

⑤运行程序,输入一个没有字母的字符串,察看并分析程序运行结果。

⑥运行程序,只输入一个回车符,察看并分析程序运行结果。

⑦运行程序,输入你认为最有特点的一个字符串,察看并分析程序运行结果。

4.奇偶数问题。设有一维整型数组共有20个元素,且偶数与奇数各占一半,将该数组变换为2×10的二维数组且偶数和奇数各成一行。

/* 二维数组问题程序*/

include "stdio.h"

void main()

{

int a[20],b[2][10];

int i,j,col1=0,col2=0;

printf("请输入数据:\n");

for(i=0;i<20;i++)

scanf("%d",&a[i]);

for(i=0;i<20;i++)

{

if(a[i]%2==0)

b[0][col1++]=a[i]; /* 偶数存储在b[0]数组*/

else

b[1][col2++]=a[i]; /* 奇数存储在b[1]数组*/

}

for(i=0;i<2;i++)

{

for(j=0;j<10;j++)

printf("%6d",b[i][j]);

printf("\n");

}

}

程序调试

① 输入一组数据,其中偶数个数与奇数个数相等,察看并分析程序的运行结果。

②输入一组数据,其中偶数个数与奇数个数不相等,看程序能否正常运行,并对运行结果进行分析。

分析:当连续的奇数输入时,他将把数组的空间挤占,使得其他数组元素无法进入。

③调试完善程序,使得对任何输入数据,程序都能正常运行:或者给出一个正确的执行结果,或者给出一个恰当的提示信息。

(二)编制下列程序

1.只使用一个一维数组,实现本实验的数据分类问题。

2.分别使用scanf()函数的“%c”格式和“%s”格式输入字符串,实现本实验的字母统计问题。

3.修改奇偶数问题程序,使得一维整型数组的20个元素保存在10×2的二维数组中,且偶数与奇数分别存储在两列上。

4. 写一个函数,使给定的一个二维整型数组(3×3)转置,即行列互换。

5. 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。

四、思考题

1.为什么要引入数组?引入数组的意义是什么?要从数组的定义和数组元素的引用去分析。用数组去完成一个多数据的任务,对多数据的引用处理更方便。

2. 如何理解一维数组的维数和二维数组的维数。

维数就是几个变量,一维就是一串数,二维就是一个面的数。

3. 字符数组和字符串的联系和区别是什么?从他们的定义和输入输出来分析。

字符数组是没有结束标志的,而字符串是有长度的。

例如定义数组长度为15,因此输入的字符串长度必须小于15,以留出一个字节用于存放字符串结束标志`\0`。应该说明的是,对一个字符数组,如果不作初始化赋值,则必须说明数组长度。还应该特别注意的是,当用scanf函数输入字符串时,字符串中不能含有空格,否则将以空格作为串的结束符。

.用字符数组存放字符串

例如:

char str[10]

表示str是一个字符型数组,可以存放10个字符。为了表示一个字符串的结束位置,可以用'\0'作标志。

说明一个字符数组时,有不同的初始化方式:

①逐个字符对数组元素赋初始值:

char str1[10] = { 'S', 't', 'u', 'd', 'e', 'n', 't' };

②用串常量初始化

char str2[10] = { "Student" };

char str3[] = { "Student" }; 或者省略{ }:

char str3[] = "Student" ;

字符串用scanf(“%s”,~~~~~);数组用for循环依此输出。

实验6+过程_函数和程序...

实验6过程、函数和程序包 姓名:学号: 专业:班级: 同组人:无实验日期:2013/7/21 【实验目的与要求】 ?掌握过程的创建与调用 ?掌握PL/SQL函数的编写与调用 ?熟悉程序包的使用 【实验内容与步骤】 6.0.实验准备工作:PL/SQL程序文件的编辑与执行 1.使用文档编辑器编辑以下文件,并保存为aa.sql: 2.以scott身份登录,在SQ L Plus中执行@aa命令运行程序: 注:测试时,文件名请用全名(即包含路径,如:@c:\aa) 给出运行结果:

6.1.存储过程 1.最简单的存储过程编写与执行 (1)创建测试表 drop table Exam_Table; create table Exam_Table( e_id number(5), e_name varchar2(20), e_salary number(8,2) ); (2)创建存储过程 create or replace procedure insert_salary (v_id number,v_name varchar2,v_salary number) is begin insert into Exam_Table values (v_id,v_name,v_salary); commit; dbms_output.put_line('数据插入成功'); end; / (3) 执行(调用)存储过程 exec insert_salary(6,'g',2000); (4)查询执行结果

select * from Exam_Table; 给出执行的最后结果: 2.参数的使用:in/out/in out参数 阅读以下程序,理解不同类型参数使用的不同,运行程序,给出运行结果。 (1) 用两个参数:in ,out 传入一个姓名,输出:某某人你好: create or replace procedure mp(v_in varchar2,v_out out varchar2) is begin v_out:=v_in||'你好'; end; declare v_name varchar2(10); begin mp('scott',v_name); dbms_output.put_line(v_name); end;--输出:scott你好 给出运行结果:

实验六 一维数组程序设计

实验六一维数组程序设计 一、实验学时 2学时 二、实验目的 (一)掌握一维数组的定义、初始化方法; (二)掌握一维数组中数据的输入和输出方法; (三)掌握与一维数组有关的程序和算法; (四)了解用数组处理大量数据时的优越性。 三、预习要求 (一)理解数组的概念、利用数组存放数据有何特点; (二)一维数组的定义、初始化方法; (三)一维数组中数据的输入和输出方法。 四、实验内容 (一)下面的几个程序都能为数组元素赋值,请输入程序并运行。比较一下这些赋值方法的异同。 1.在定义数组的同时对数组初始化。 /* c6-1.c */ /*在定义数组的同时对数组初始化*/ #include "stdio.h" void main( ) { int a[4]={0,1,2,3}; printf("\n%d %d %d %d\n",a[0],a[1],a[2],a[3]); } 2.不使用循环对单个数组元素赋值。 /* c6-2.c */ /*不使用循环对单个数组元素赋值*/ #include "stdio.h" void main( ) { int a[4]; a[0]=2;a[1]=4;a[2]=6;a[3]=8; printf("\n%d %d %d %d\n",a[0],a[1],a[2],a[3]); } 3.用循环结构,从键盘输入为每个数组元素赋值,输出各数组元素。 /* c6-3.c */ /*利用循环通过键盘对数组元素赋值*/ #include "stdio.h" void main( ) { int i,a[4]; for(i=0; i<4; i++) scanf("%d",&a[i]); printf("\n"); for(i=0; i<4; i++) printf("%d ",a[i]);

实验六 高层绘图操作答案

实验六 高层绘图操作 实验目的: 1. 掌握绘制二维图形的常用函数 2. 掌握绘制三维图形的常用函数 3. 掌握绘制图形的辅助操作 实验内容: 1. 1. 设x x x y cos 2^1sin 35.0????? ? ++=,在π 2~ 0=x 区间取101点,绘制函数曲 线。 x=0:pi/100:2*pi; y=(0.5+3*sin(x)./(1+x..^2)).*cos(x); plot(x,y); 2. 已知2 1x y = ,)2cos(2x y =,213y y y ?=,完成下列操作: (1) 在同一坐标系下用不同的颜色和线型绘制三条曲线。 (2) 以子图形式绘制三条曲线。 (3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。 (1).在同一坐标系下用不同的颜色和线型绘制三条曲线。 x=0:pi/1000:2*pi; y1=x.^2; y2=cos(2*x); y3=y1.*y2;

plot(x,y1,'r',x,y2,'b-.',x,y3,'k--'); (2). 以子图形式绘制三条曲线。 x=0:pi/10:2*pi; y1=x.^2; subplot(2,2,1);plot(x,y1,'r'); title('y1=x^2'); y2=cos(2*x); subplot(2,2,2);plot(x,y2,'b-.'); title('y2=cos(2*x)'); y3=y1.*y2; subplot(2,2,3);plot(x,y3,'k--'); title('y3=y1.*y2'); (3). 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。x=0:pi/10:2*pi; y1=x.^2; subplot(2,2,1);bar(x,y1,'r'); title('y1=x^2'); subplot(2,2,2);stairs(x,y1,'r'); title('y1=x^2'); subplot(2,2,3);stem(x,y1,'r'); title('y1=x^2'); subplot(2,2,4);fill(x,y1,'r');

C语言程序设计实验报告(数组)

C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。

3算法描述流程图

4源程序 #include #include void catStr(char str1[],char str2[]) { int i,j; for (i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j]; str1[i+j]='\0'; } lenStr(char m[] ) {int i;

for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。

实验 6-3 数组

实验6-3 数组(三) 1 【实验目的】 (1)掌握字符数组的定义、赋值和输入输出的方法 (2)掌握字符数组和字符串函数的使用 (3)掌握数组的基本操作和排序算法 【实验要求】 (1)熟悉掌握字符数组的定义、赋值和输入输出方法 (2)掌握字符数组和字符串函数的使用 (3)掌握数组的增加元素和删除元素的操作 (4)掌握数组的排序算法(比较、选择和冒泡三种算法,要求至少会一种) 【实验环境】 (1) Microsoft XP操作系统 (2) Microsoft VC++ 6.0 【实验内容】 1、Palindromes_easy version https://www.360docs.net/doc/9f9668466.html,/acmhome/problemdetail.do?&method=showdetail&id=1384 描述 “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。

输入 输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串,每个字符串的长度不超过30。 输出:如果一个字符串是回文串,则输出"yes",否则输出"no". 样例输入: 4 level abcde noon haha 样例输出: yes no yes no 2、分割整数https://www.360docs.net/doc/9f9668466.html,/acmhome/problemdetail.do?&method=showdetail&id=1173 描述:从键盘输入一个长正整数(不超过10位),从高位开始逐位分割并输出。 输入:正整数n,不含前导零。 输出:分割的整数序列,各整数之间用空格格开。注意,最后一个数字后面没有空格! 样例输入:654321 样例输出:6 5 4 3 2 1

C语言程序设计实验答案数组、指针与字符串

实验06 数组、指针与字符串(4学时) (第6章数组、指针与字符串) 一、实验目的 二、实验任务 6_1(习题6-25)编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。 6_2(习题6-26)使用动态内存分配生成动态数组来重新完成上题(n阶方阵),使用指针实现函数的功能。 6_3 编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 6_4 使用string类声明字符串对象,重新实现上一小题。 6_5(习题6-27)声明一个Employee类。 其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。 6_6(习题6-27)声明包含5个元素的对象数组,每个元素都是Employee 类型的对象。 6_7 修改实验4中的people(人员)类。 具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”声明为一个“日期”类内嵌子对象。 用成员函数实现对人员信息的录入和显示。 要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。 在测试程序中声明people类的对象数组,录入数据并显示。

三、实验步骤 1.(编程,习题6-25)编写矩阵转置函数,输入参数为3×3整型数组。 使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入输出。程序名:lab6_1.cpp。 参考运行结果: ★程序及运行结果: //lab6_1.cpp #include using namespace std; void move(int matrix[][3]){ int temp; for(int i=0;i<3;i++) for(int j=0;j>mat[i][j]; } cout<<"\n输入的3×3矩阵为:"<

实验六 一维数组实验报告

*** 软件类实验报告 课程名称: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.5 a数组和b数组定义如下: double a[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}; double b[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}; 五、实验小结

matlab 实验6 函数及其调用

数学实验练习六:函数 一、1)写一个 MATLAB 函数 piFun01.m 来计算下列级数: f(n) = 4*(1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...) 其中 n 为函数的输入,代表上述级数的项数,级数和 f(n) 则是函数的输出。 解:function f=pifun01(n) f=0; for i=1:n f=f+4*(-1)^(i+1)/(2*i-1); end >> piFun01(100000) ans = 3.1416 2)使用 tic 和 toc 指令来测量 piFun01(100000) 的计算时间。如果你不知道如何使用这两个指令,请使用 help tic 及 help toc 来查出它们的用法。我的旧计算机是 Pentium 450MHz,所得的计算时间约为 2 秒。请说明你的计算机规格以及其计算时间。

解:function f=pifun01(n) tic f=0; for i=1:n f=f+4*(-1)^(i+1)/(2*i-1); end f=toc 二、写一个 MATLAB 的递归函数 fibo.m 来计算 Fibonacci 数列, 其定义如下: fibo(n+2) = fibo(n+1)+fibo(n) 此数列的启始条件如下: fibo(1) = 0, fibo(2) = 1. a) fibo(25) 的返回的值是多少? 解:function f=fibo(n) if n==1 f=0; elseif n==2

f=1; else f=fibo(n-1)+fibo(n-2); end >> clear >> fibo(25) ans = 46368 b)使用 tic 和 toc 指令来测量 fibo(25) 的计算时间。我的计 算机是 Pentium 2GHz,所得的计算时间约为 3.35 秒。请说明你的计算机规格以及其计算时间。 解: function f=fibo(n) tic if n==1 f=0; elseif n==2 f=1; else f=fibo(n-1)+fibo(n-2); end

实验六、用窗函数法设计FIR滤波器分析解析

实验六 用窗函数法设计 FIR 滤波器 一、实验目的 (1) 掌握用窗函数法设计FIR 数字滤波器的原理和方法。 (2) 熟悉线性相位FIR 数字滤波器特性。 (3) 了解各种窗函数对滤波特性的影响。 二、实验原理 滤波器的理想频率响应函数为H d (e j ω ),则其对应的单位脉冲响应为: h d (n) = ?-π π ωωωπ d e e H n j j d )(21 窗函数设计法的基本原理是用有限长单位脉冲响应序列h(n)逼h d (n)。由于h d (n)往往是无 限长序列,且是非因果的,所以用窗函数。w(n)将h d (n)截断,并进行加权处理: h(n) = h d (n) w(n) h(n)就作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率响应函数H(e j ω )为: H(e j ω ) = ∑-=-1 )(N n n j e n h ω 如果要求线性相位特性,则h (n )还必须满足: )1()(n N h n h --±= 可根据具体情况选择h(n)的长度及对称性。 用窗函数法设计的滤波器性能取决于窗函数w(n)的类型及窗口长度N 的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。 三、实验步骤 1. 写出理想低通滤波器的传输函数和单位脉冲响应。 2. 写出用四种窗函数设计的滤波器的单位脉冲响应。 3. 用窗函数法设计一个线性相位FIR 低通滤波器,用理想低通滤波器作为逼近滤波器,截止频率ωc =π/4 rad ,选择窗函数的长度N =15,33两种情况。要求在两种窗口长度下,分别求出h(n),打印出相应的幅频特性和相频特性曲线,观察3dB 带宽和阻带衰减; 4 用其它窗函数(汉宁窗(升余弦窗)、哈明窗(改进的升余弦窗)、布莱克曼窗) 设计该滤波器,要求同1;比较四种窗函数对滤波器特性的影响。 四、实验用MATLAB 函数 可以调用MATLAB 工具箱函数fir1实现本实验所要求的线性相位FIR-DF 的设计,调用一维快速傅立叶变换函数fft 来计算滤波器的频率响应函数。

实验六+数组程序设计

实验六数组程序设计 【实验目的】 1、掌握使用一维数组编程方法 2、掌握使用字符数组处理字符串的方法 2、了解二维数组 【实验性质】验证性 【实验要求】 1、认真阅读本次实验的目的,了解本次实验要求掌握的内容 2、在程序改错题旁,将程序中存在的错误修改过来 3、将编程题的代码在预习报告中写出来 4、在实验时,将实验要求的基本题(程序改错和编程题)根据预习报告中编写的代码, 在VC环境中编写出来 5、在VC中将编写的程序编译、调试,能正确运行结果 6、将正确程序文件(以自己姓名拼音_题号命名,如:zhangsan_1_2)上传至网络硬 盘,上传密码:物理1班为:wuliyiban ;物理二班为:wulierban 。 7、争取完成选作题 【实验内容】 1、程序改错 1) 下面程序的功能,是从键盘输入一个数组(数组长度为10),查找数组中正数的 个数。源代码如下,程序中存在错误,请将其改正写在旁边。 #include "stdio.h" 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个",count); } 2、编程题

1) 从键盘输入一个字符串,将其中的大写字母变小写字母,小写字母变大写字母,并输出 。 【要求】 (1)用字符数组表示存储字符串(字符串最大为100)。 (2)使用scanf 函数逐个输入字符保存在字符数组中 (3)使用printf 函数逐个输出字符数组中的字符 2) 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 【要求】 (1)数组长度定义为10 (2)输出数组时每个元素占8个宽度,每行5个 3) 编程序按下列公式计算s 的值(其中x 1、x 2、…、x n 由键盘输入): 201)(x x s n i i -=∑= (其中x 0是x 1、x 2、…、x n 的平均值) 【要求】 (1)用数组保存x 1、x 2、…、x n 的值。 (2)n 的值从键盘输入 3 选作题 1)求从一个字符串中删除所有指定字符的其余字符串。如字符串为“abcaca ”,删除字符“a ”后,为“bcc ”。 【编程点拨】 (1)使用字符数组保存字符串,从字符串数组的第一个元素开始遍历 (2)如果当前的元素与需要删除的元素相等,则删除。 (3)删除是指将该元素前移到需要拷贝的位置

实验6数组

实验6 数组 一、实验目的: 1、理解数组的作用、特点; 2、掌握一维数组、二维的定义、引用、初始化,能够与循环结合实现批量数据处理(如输入、输出,比较大小,交换等); 3、熟悉打擂台、排序、查找等典型算法。 4、理解数组名作函数参数时,实参向形参传递的是数组首地址,可以利用此特性在函数中修改数组元素的值,从而达到改变实参数组的目的。 二、实验内容 1、(基础题)有一个数列,它的第一项为1,第二项为2,第三项为3,以后每一项都等于它的前三项之和。使用一维数组编程实现功能:计算该数列的前20项并赋值给数组,然后以逆序方式输出,每一行5个数据。如下图所示: 2、(基础题)编程计算数组各元素的平方和,要求如下: (1)void array_input(int array[], int n)的功能是:输入整型数组array 的各元素值,参数n是数组元素的个数; (2)int square_sum(int array[], int n)的功能是:对整型数组array的各元素的平方求和,参数n是数组元素的个数; (3)主函数的功能:定义一个是长度为6的整型数组,通过调用array_input()输入各元素的值,再调用square_sum()得到各元素平方和,最后输出结果; (4)主函数在前,上述两个函数在后面定义。程序运行如下图所示:

3、(基础题)编写程序实现如下功能:先定义两个长度为31的字符数组str1、str2,然后输入两个字符串保存到str1、str2中;现调用字符串处理函数分别进行以下处理: (1)分别计算两个字符串的长度并输出; (2)输出两个字符串中的较大值; (3)再定义一个字符数组str,将str1、str2两个字符串连接存至str中并输出。如下图所示: 程序代码:

实验六 函数

实验六 函数 一、实验目的 1.掌握自定义函数的一般结构及定义函数的方法。 2.掌握形参、实参、函数原型等重要概念。 3.掌握函数声明、函数调用的一般方法。 4. 了解函数的嵌套调用以及函数的递归调用的格式。 二、实验预习 1 .理解为什么要在程序中引入函数?函数的引入对程序的整体结构有什么样的影响? 2. 函数的定义格式,理解函数的类型说明符根据什么来确定? 3. 充分理解函数实参和形参的联系和区别,掌握单向值传递的意义。 4. 了解针对不同返回类型的函数返回值的应用,尤其是有无return 语句的区别。 5. 掌握函数调用与函数声明的格式,了解什么情况下需要进行函数声明?什么情况下不需要? 6. 了解函数嵌套调用和递归调用的原理及使用原则。 三、实验内容 (一)阅读并调试下列程序,根据要求给出程序结果。 1.求三角形面积函数。 ⑴ 编程分析 ① 设三角形边长为a 、b 、c ,面积area 的算法是s=(a+b+c)/2, area=))()((c s b s a s s --- ,其中 显然,要计算三角形面积,需要用到三个参数,面积函数的返回值的数据类型应为实型。 ② 尽管main()函数可以出现在程序的任何位置,但为了方便程序阅读,通常将主函数放在程序的开始位置,并在它之前集中进行自定义函数的原型声明。 ⑵ 参考程序 /* 定义和使用求三角形面积函数的程序 */ #include "math.h" #include "stdio.h" float area(float,float,float); /*函数的声明*/ void main() { float a,b,c; printf("请输入三角形的三个边长值:\n") scanf("%f,%f,%f",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a&&a>0.0&&b>0.0&&c>0.0) printf("Area=%-7.2f\n",area(a,b,c)); /* 以下是计算任意三角形面积的函数 */ float area(float a,float b,float c) { float s,area_s; s=(a+b+c)/2.0;

实验七 数组程序设计

实验七数组程序设计(4学时) 一、实验方式:一人一机 二、实验目的: 1、掌握数组的定义、赋值和输入输出的方法。 2、学习用数组实现相关的算法(特别是排序算法)。 3、掌握C语言中字符数组和字符串处理函数的使用。 三、实验内容: 说明:前四题为必做题目,后两题为选做题目。 1、下列程序的功能是:输入10个整数,按每行3个数输出这些整数,最后 输出10个整数的平均值。程序中有几处错误,试找出它们后加以修改,并上机验证修改结果。 #include void main( ) { int i,n,a[10],avg; for(i=0;i void main( ) { int i,a[10]; float avg=0; printf("欢迎请输入10个整数:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) { if(i%3==0) printf("\n"); printf("%d ",a[i]); } for(i=0;i<10;i++) avg+=a[i];avg=avg/10; printf("\navg=%f\n",avg);

} 实验调试记录:--------------------Configuration: 71ext - Win32 Debug-------------------- Compiling... 71ext.c Linking... 71ext.exe - 0 error(s), 0 warning(s) 参考答案: 2、写一个函数,对输入的10个整数按从小到大的顺序排序(升序,用冒泡 排序实现)。(实验指导书P147) 实验步骤与过程: /*ex7_1.cpp*/ #include void sort1(int s[],int n) { int i,j; int t; for(i=0;i<10;i++) for(j=0;j<10;j++) if(s[j]

实验6数组——参考答案

实验6 数组 一、一维数组实验 2. 编程:输入长度为10的整型数组并输出;然后将其逆序存放后再输出。例如: Input 10 number: 0 1 2 3 4 5 6 7 8 9 After reversed: 9 8 7 6 5 4 3 2 1 0 #include<> void main() { int i, j, a[10], t; printf("Input 10 number: "); for(i=0; i<10; i++) /*读入数据*/ scanf("%d", &a[i]); printf("origin data: "); for(i=0; i<10; i++) /*输出原始数据*/ printf("%d ", a[i]); printf("\n"); for(i=0,j=9; i

#include <> void main() { int i, n , max, min, a[10], sum; float average; printf("Input n (1 a[max]) max= i; if(a[i] < a[min]) min= i; } printf("max=%-5d index=%d\n", a[max], max); printf("min=%-5d index=%d\n", a[min], min); printf("average=%.2f\n", average); } else printf("数据超出范围"); } 4. 编程:青年歌手参加歌曲大奖赛,有10个评委对她(他)进行打分,试编程求这位选手的平均得分并输出(去掉一个最高分和一个最低分)。 #include <> void main() { int i, max, min; float a[10], ave; printf("请输入10个评委的打分:"); for(i=0, ave=0; i<10; i++) /*输入分数并求累加和*/ {

实验六 自定义函数

实验六自定义函数 实验目的:熟悉Matlab自定义函数的定义和调用方法 实验内容: 2. 编写程序,在主程序中提示用户输入一组数字,编写子程序文件 find_div2.m找出能被2整除的数字,find_max_min.m找出输入数字中的最大值和最小值之和,find_averag求出输入数字的平均值,sort_number对数字进行排序,在主程序中调用子程序并且把上述结果输出。例如输入的数字为1,2,3,4,5,要求输出格式为:输入数字中能被2整除的数为:2,4 输入数字中最大值与最小值之和为:5+1=6 输入数字的平均值为:3 输入数字从大到小排序为:5,4 3,2,1 主程序: clear,clc s=input('请输入一组数字:','s'); x=str2num(s); find_div2(x); find_max_min(x); find_averag(x); sort_number(x);

子程序: function find_div2(x) b=length(x); for i=1:b A(i)=x(i); end c=find(rem(A,2)==0); A=A(c); disp(['输入数字中能被2整除的数为:',num2str(A)]) 子程序: function find_max_min(x) a=max(x); b=min(x); c=a+b; disp(['输入数字中最大值与最小值之和为:',num2str(a),'+',num2str(b),'=',num2str(c) 子程序: function find_averag(x) a=mean(x); disp(['输入数字的平均值为: ',num2str(a)]) 子程序: f unction sort_number(x) a=sort(x); b=fliplr(a); disp(['输入数字从大到小排序为:',num2str(b)])

C语言程序设计实验4 数组 周信东

实验4 数组 姓名:XXX 学号:XXX实验日期:XXX 1.实验目的和要求 (1)掌握一维数组与二维数组的定义、使用及初始化方法。 (2)学习数组作为函数参数的用法。 (3)掌握字符数组和字符串函数的使用方法。 (4)掌握与数组有关的常用排序算法,进一步理解模块化程序设计的方法。(5)掌握字符、字符串的输入/输出方法。 (6)掌握字符数组的使用。 (7)学会使用字符串的指针和指向字符串的指针变量。 2.实验内容:实验指导书中的实验六、实验七 3.实验步骤 实验六数组部分: 6-1:我使用的算法: 先使投票初始化为0 int vote[6]; int i,number; for (i=1;i<=5;++i) vote[i]=0; 之后用一个循环进行投票进行叠加 printf ("Enter your number\n") ; for (i=1; i<=20;++i) { scanf (" %d",&number) ; if (!number) break; ++vote[number]; } printf (" \n\nResalt of vote\n") ; printf (" --------------------------\n") ; for (i=1;i<=5;++i) printf (" %4d %d\n",i,vote[i]) 程序的运行测试结果如下图所示(考虑各种情况下的运行结果):

6-2:该程序的功能是: 用循环,先把数组的第一个元素暂存起来,为了实现数组的前移,把j赋给j-1;再将暂存的第一个元素赋给最后一个元素;再用循环输出数组。 程序运行结果如下图所示: 6-3 :该程序的功能是: 对a数组中n种商品价格进行分段统计,商品各段价格的数目存放到b数组中。 程序运行结果如下图所示: 6-4.:我使用的算法为: 先对11个元素进行定义,在对10个元素进行排序,之后读入一个待插入的数,与排好的

实验6 数组一

实验6 数组(一) 【实验目的】 (1) 掌握一维数组和二维数组的定义、赋值和输入输出的方法。 (2) 掌握与数组有关的算法。 【实验内容】 1. 程序分析 (1) 分析下面的程序,描述程序的功能并给出程序的运行结果。 #include #define N 7 int main() { int arr[N]={0,2,4,6,8,10,12},i,t; for(i=0;i int main() { int arr[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; int i,sum=0; for(i=0;i<4;i++) sum+=arr[i][i]; printf("%d\n",sum); return 0; } 2. 程序改错 (1) 以下程序用于求一个数组中的最大值和最小值。程序中有几处错误,试找出它们后加以修改,并上机验证修改结果。 #include int main() { int i,N=10; double arr[N],max,min; for(i=0;i

for(i=1;imax) max=arr[i]; else min=arr[i]; printf("max=%f,min=%f\n",max,min); return 0; } 3. 程序设计 (1) 学校举办演讲比赛,n个学生参加比赛,8个评委打分。参赛选手的最终得分计算方法为:去除一个最高分和一个最低分后所得的平均分。 【要求】 - 求每位选手的比赛成绩。 - 对比赛结果进行排序 (2) 在下面的5×5魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维整型数组中,然后,检验其是否为魔方矩阵,并将其按如下格式显示到屏幕上。 17241815 23571416 46132022 101219213 11182529

实验6函数习题及答案

实验6 函数 班级:学号: 姓名:日期: 一、实验目的 (1)掌握定义函数的方法; (2)掌握函数实参与形参的对应关系,以及“值传递”的方式; (3)掌握函数的嵌套调用和递归调用的方法; (4)掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法; (5)学习对多文件的程序编译和运行。 二、实验内容 1.阅读下面程序,写出程序运行结果,并且上机进行验证。 (1)a1.cpp 变量的虚实耦合,实现的是值传递,是单向传递 #include "stdio.h" int swap(int a,int b) { int c,s; c=a; a=b; b=c; s=a+b; return s; } void main() { int a,b,s; a=3;b=4; s=swap(a,b); printf("a=%d b=%d s=%d\n",a,b,s); } (2)a2.cpp

将十进制数26的各位数字相乘 #include "stdio.h" int fun(int num) { int k=1; do { k*=num %10; / num/=10; }while(num); return(k); } void main() { int n=26; printf("%d\n",fun(n)); } (3)a3.cpp 变量的作用域,当在函数内定义了与全局变量同名的局部变量时,全局变量被屏蔽#include "stdio.h" int a=3,b=5,c; void f(int b) { c=a+b; printf("%d %d %d\n",a,b,c); } void main() { int a=8; f(3); printf("%d %d %d\n",a,b,c); } (4)a4.cpp 递归,将十进制11转换为二进制 #include "stdio.h" void dtob(int n) { int i;

数组程序设计

1.1 实验学时:4学时 1.2 实验目的 1. 掌握一维数组、二维数组的概念及元素的各种表示方法; 2. 正确掌握数组输入输出等的基本操作; 3. 掌握函数访问数组的方法; 4. 字符串的处理方法; 5. 掌握数组中的一些常用算法,并能解决实际问题。 1.3 必做实验 【题目4-1】运用所学数组知识实现学生成绩的录入、评估、统计、排序及输出,要求如下: (1)从键盘输入6个同学计算机课程期末考试成绩存放在数组中 算法分析: 1、定义一个能够存放6个整型数据的数组 int score[6]; 2、使用循环结构为数组元素赋值 3、编写循环体,注意数据输入格式 (2)统计出平均分、最高分,以及统计超过平均分的人数 算法分析: 1、分析编程所需定义的变量,并未变量赋初值:总分int sum=0,平均分intave=0,最高分int max=0,以及超过平均分人数的变量int count=0 2、使用循环结构访问数组元素: score[0]~score[5] 3、在访问数组元素的过程中,完成总分、最高分的统计,在访问完所有数组数据后,计算平均分 4、再次访问数组,参照计算所得平均成绩统计超过平均分的人数 5、输出结果 (3)对学生成绩进行从高到低的排序(冒泡法),并把排序后的成绩输出。 算法分析: 冒泡法实现n个数据从小到大排序,结合算法对学生成绩进行从高到低的排序 输出排序结果 流程框图: 【实验4-1】代码及运行结果:(1)确定内部循环次数 确定外部循环次数 判定数据是否需要交换

(2) (3)

【题目4-2】定义一个N行N列的二维整型数组,使数组左下三角元素中的值乘以n 。例如:若n的值为3, a数组中的值为 ? ? ? ? ? ? ? 6 5 4 8 3 2 7 9 1 则返回主程序后a数组中的值为 ? ? ? ? ? ? ? 18 15 12 8 9 6 7 9 3 算法分析: 1、定义N行N列的二维数组,并手动为数组元素赋值 注意:注意数组维数不能为变量,但可以用宏定义的方式来进行数组维数的定义,例如:在头文件前进行宏定义#define N 3,程序中定义二维数组 intnum[N][N]; 2、选择二维数组中的左下三角元素,并改变三角元素的值 3、以N行N列的形式输出二维数组,要求每输出N个数据,输出一个回车换行符 延伸扩展: 结合所学函数的知识,把改变左 函数实现。 【实验4-2】代码及运行结果:

相关文档
最新文档