ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:26.38KB ,
资源ID:12473039      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12473039.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第6章利用数组处理批量数据.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第6章利用数组处理批量数据.docx

1、第6章利用数组处理批量数据第6章 利用数组处理批量数据通过本章实验作业应达目标1学习并掌握一维数组与二维数组的定义、使用及初始化方法。2熟练掌握字符数组和字符串的使用方法。3掌握数组的一种排序算法。4学会用数组保存多个相关的同类数据,并对这一组数据进行各类操作。本章必须上交作业程序6_1.c、6_3.c、6_5.c、6_7.c上传至http:/121.251.227.27:8080/c。实验一 一维数组的定义和简单应用【实验目的】 学会定义一维数组,掌握一维数组的遍历操作,掌握在一组数组中求最大值、最小值的方法。【实验内容】从键盘读入5个成绩到一个数组中,求其中的最大值,最小值和平均成绩。在屏

2、幕上显示输入成绩的提示信息,用键盘输入一个成绩,接着提示输入下一个,直到结束。以6_1.c命名本程序并上交。程序运行界面【实验提示】求最大(小)值通常用“打擂台”的方法。首先设计两个变量,如max和min分别用来存放最大值和最小值,并将数组的首元素赋给这两个变量,这就是到目前为止的最大(小)值,然后利用循环依次比较其他的元素,总是将当前最大(小)值赋给max和min,直至比较到最后,max和min中的数据就是最大值和最小值。求平均值还要设置一个变量sum,用来累加各元素的值。实验二 一维数组的排序【实验目的】熟练掌握一维数组三种基本排序方法:选择法,冒泡法,比较法。【实验内容】从键盘上接收10

3、个成绩,存放到一个一维数组score中,分别利用三种排序方法,将数组从小到大排序并在屏幕上显示排序结果。分别以6_2_1.c、6_2_2.c和6_2_3.c命名三个程序。【实验提示】所谓排序是指把一组杂乱无章的数据按照大小顺序排列。将被排序的n个数据存放在一个数组中, 假如按升序排列。我们将数组定义为an,数据存放在a0 到 an-1 中。1比较排序法将a0与a1比较,若a1a1,则二者交换,否则不变,a1再与a2比较,前者大就交换,依次两两比较至到an-2与an-1比较,经过一轮以后,最大者“沉”到了最后,小数往上“冒”,所以得名“冒泡法”。第二轮比较数组的前n-1个,即a0an-2 。重复

4、此过程,直到所有的元素比较完毕。实验三 一维数组元素的调换【实验目的】进一步加强对数组的应用。【实验内容】找出数组中的最小数和次小数,并把最小数和a0中的数对调、次小数和a1中的数对调,其余数据位置不变。例如,程序运行时若输入:2 4 6 11 3 9 7 0 5 8,则输出:0 2 6 11 3 9 7 4 5 8。以6_3.c命名本程序并上交,部分程序如下。#define N 10 main() int aN,i;for(i=0;iN;i+) scanf(%d,_ ); /* 编写程序,实现功能 */for(i=0;iamid时,则要查找的x在数组的前半部分,这样数组的后半部分就不用去查找

5、了,查找范围缩小为一半。然后在前半部分再找一个中点,与x比较,如此一半一半缩小,如果x在数组当中,终能找到x=amid。由于每次缩小近一半的范围,所以数组的上、下界是要变化的,不妨用变量low、high、mid分别表示数组当前的上界、下界和中点。 问题:如果x不在数组当中,最终怎样知道?【实验内容】在一个已经排好序的数组(升序)中,从键盘上输入某数x,查找x是否在数组内,若在,则在屏幕上输出其下标值。若不存在,则在屏幕上显示“Not found!”。假设数组a10 的每个元素分别为1,2,3,4,6,7,9,10,11,15,若从键盘上读入数x为9,则在屏幕上输出“the numbers po

6、sition is 7”,若读入数为8,则屏幕上输出“Not found!”。 1. 顺序查找法编写的程序如下,请完善程序,并以6_4_1.c命名本程序。# include#define N 10void main( )int aN=1,2,3,4,6,7,9,10,11,15; int i,x; scanf(%d, &x); for(i=0;iN;i+) if ( _ )printf(the numbers position is %dn,i+1); _ ; if(i=N) printf(Not found!n);2. 折半查找法编写的程序如下,请完善程序,并以6_4_2.c命名本程序。#i

7、nclude#define N 10void main( )int aN=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(amid=x) printf(the numbers position is %dn,mid+1); break; if( _ ) printf(Not foundn); _ ; if (amid x ) _ ;【讨论与思考】比较一下两种两种查找方法的优缺点。实验五 统计指定字符个数【实验目的】熟悉字符串的存取和结束标记。【

8、实验内容】编写程序从键盘上输入一个字符串和一个字符,统计所指定字符的个数。例如:从键盘输入字符串为abaaAAbcaaaca,指定字符为a,则在屏幕上输出结果是7。以6_5.c命名本程序并上交。下面给出程序的部分代码。#include void main( )char a200, b; int num; puts(Please input a string:); gets(a); puts(Please enter a character:); b=getchar( ); /* 编写程序,实现功能 */ pirntf(“The result is %dn”, num);实验六 从字符串中删字符

9、【实验目的】熟悉字符串的存取和结束标记。并掌握从一维数组中删除元素的方法。【实验内容】编写程序从键盘上输入一个字符串和一个字符,实现从字符串中删除该字符。例如:从键盘输入字符串为abaaAAbcaaaca,要删除的字符为a,则在屏幕上输出bAAbcc。下面给出程序的部分代码。请完善程序,并以6_6.c命名本程序。void main( )char s20, ch;int i,j; printf(Please input a string:n); gets(s); printf(Please input a character:n); ch=getchar(); for( i=0; _; i+ )

10、 /* 编写程序,实现功能 */ puts(s);【实验提示】要考虑被删除的字符在字符串出现多次,而且连续排列的情况。实验七 数据加密【实验目的】学习通过字符数据的ASCII值进行加密的方法。【实验内容】某个单位要传递机密数据,数据是10位以内的整数(从键盘输入)。在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用该和除以10的余数代替该数字。在屏幕上显示加密后的数字。以6_7.c命名本程序并上交。例如:输入数据 327895123,显示结果为 : 872340678。【实验提示】1应用字符数组来解决该问题。2主程序中将各位数字以字符的形式存放,在加密的过程中应该注意0跟 0 的区别

11、。实验八 将数字字符串转换为相应实数【实验目的】学习数字字符串与数值之间的转换问题。【实验内容】将键盘上输入的一个数字字符串转换为相应的实数,在屏幕上输出。转换时遇到第一个非数字字符时停止(不包含第一个小数点和起始的负号-)。例如:若输入字符串“123a45”,得到实数 x=123.0;若输入字符串“-123.45.765”,得到实数x=-123.45;若输入字符串“123-56.78”,得到实数 x=123.0;若输入字符串“-.123”,得到实数 x=-0.123。下面给出不考虑负数的程序,请在下述程序的基础上补充完善为也能考虑负数的程序,并以6_8.c命名本程序。#includevoid

12、 main()char str100; int i,sign;double x,k; gets(str); /* str中存放的是一个数字字符串 */ sign=1;k=0.1; /* sign是一个标志,标识是否出现了第一个小数点 */ x=0; for(i=0;stri;i+) if(sign=1) if(stri=0&stri=0&stri=9) x+=(stri-48)*k; k*=0.1; else break; printf(x=%lfn,x); /* x中记录的是转换后得到的数值 */【实验提示】 只有起始的负号-才能作为负数标志,中间的-只能被看做非法字符,使转换结束。实验九

13、万年历问题【实验目的】学会使用二维数组解决万年历问题。【实验内容】已知1900年12月31号是星期一,编写程序,键盘输入1901 2300年内任意一个日期,程序输出这一天是星期几。以6_9.c命名本程序。【实验提示】1第四章中有一个实验要求是给出当前日期,求出该日期是本年度中的第几天的程序。大家可以回想以下那个程序中的case语句对应的每一个天数是如何得到的,我们将这个问题用数组来解决。2假设我们要求x 年y 月 z日是星期几,必须知道两个日期相间隔的天数。3使用二维数组来存放每月的天数,第一行存放平年的每月天数;第二行存放闰年的各月天数。3普通年份有365天,365%7=1;所以求总天数时可

14、以不必将年份差365天。【讨论与思考】既然是万年历问题,就应能测任一日期。如果要求能够测任何一日期(1900年之前和之后的任何一天)为周几,本题应如何处理?注意前推和后推的方法有所不同。习题1. 定义如下变量和数组 :int k ;int a33= 1, 2, 3, 4, 5, 6, 7, 8, 9 ;则下面语句的输出结果是( )for(k=0;k3;k+) printf(%d,ak2-k);A、357 B、369 C、 159 D、 1472. 执行下面的程序段后,变量k中的值为( )int k=3,s2;s0=k;k=s1*10;A、不定值 B、33 C、30 D、103. 设有数组定义:

15、char array =China; 则数组 array所占的空间为( )A、4个字节 B、5个字节 C、6个字节 D、7个字节4. 如下程序的输出结果是( )main( ) int n5=0,0,0,i,k=2;for(i=0;ik;i+)ni=ni+1;printf(%dn,nk);A、不确定的值 B、2 C、1 D、05. 有如下程序main( ) int a33=1,2,3,4,5,6,i,j,s=0;for(i=1;i3;i+)for(j=0;j=i;j+)s+=aij;printf(%dn,s);该程序的输出结果是( )A、18 B、19 C、20 D、216. 以下程序的输出结果

16、是( )main( ) inti,x33=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+)printf(%d,xi2-i);A、1,5,9, B、1,4,7, C、3,5,7, D、3,6,9,7. 当执行下面的程序时,如果输入ABC,则输出结果是( )#include stdio.h#include string.hmain( ) char ss10=1,2,3,4,5;gets(ss);strcat(ss,6789);printf(%sn,ss);A、ABC6789 B、ABC67 C、12345ABC6 D、ABC4567898以下程序段的输出结果是( )char s =

17、 141141abct;printf(%dn,strlen(s);A、9 B、12 C、13 D、149. 下面是对s的初始化,其中不正确的是( )A、char s5=“abc” ; B、char s5=a,b,c; C、char s5=“”; D、char s5=”abcde”10. 以下程序的输出结果是_main( )char s =abcdef; s3= 0;printf(%sn,s);11. 下列程序段的输出结果是_main( ) char b=Hello,you;b5=0;printf(%s n, b );12. 在C语言中,二维数组元素在内存中的存放顺序是_13. 设有定义语句 “

18、 int a34=1,2,3 ” ,则a11值为_,a21的值为_ 14. 若在程序中用到 “ putchar() ” 函数时,应在程序开头写上包含命令_ ,若在程序中用到 “ strlen() ” 函数时,应在程序开头写上包含命令_15. 下面程序的功能是输出数组s中最大元素的下标,请填空。 main() int k,p; int s=1,-9,7,2,-10,3; for(p=0,k=p;psk) _ ; printf(%dn,k); 16. 以下程序执行时输入Language Programming的结果是_ #include main() char str30; scanf(%s,st

19、r); printf(str=%sn,str); 17. 以下程序可把输入的十进制长整型数以十六进制数的形式输出,请填空。 main() char b17=0123456789ABCDEF; int c64,d,i=0,base=16; long n; printf(Enter a number:n); scanf(%1d,&n); doci= _;i+;n=n/base;while(n!=0); printf(Transmite new base:n); for (-i;i=0;-i)d=ci;printf(%c,b _ ; 18. 以下数组定义中,错误的是( ) A、 int a=1,2,

20、3; B、 int a5=1,2,3;C、 int a3=1,2,3,4; D、 int a5,b;19以下数组定义中,正确的是( ) A、 int n=4,an=1,2,3,4; B、 int a2=1,2,3,4;C、 int a2=1,2,3,4; D、 int a=1,2,3,4;20.设有如下定义:int a810;在C中一个整数占用4字节,设a的起始地址为1000,则a11的地址是( ) A、 1000 B、 1004 C、 1036 D、 104421. 有数组定义:int a 3=1,2,3,4,5,6,7,8,9,则a12的值是( ) A、 2 B、 5 C、 6 D、 82

21、2.设已定义 char str6=a,b,0,c,d,0; 执行语句 printf(%s,str) 后,输出结果为( ) A、 a B、 ab C、 abcd D、 ab0cd023引用数组元素时,数组元素下标不可以是( ) A、 字符常量 B、 整型变量 C、 字符串 D、 算术表达式24下面程序段的运行结果是( )void main()char a=abcd,b=123;strcpy(a,b);printf(%sn,a);A、 123 B、 123d C、 abcd D、 abcd12325下面程序段的运行结果是( )void main()char a=123,b=abcd;if(ab) printf(%sn,a);else printf(%sn,b);A、 123 B、 编译时出错 C、 abcd D、 运行时出错

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1