欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    《C语言程序设计Ⅱ》实验指导书Word格式文档下载.docx

    • 资源ID:3691442       资源大小:213.99KB        全文页数:33页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《C语言程序设计Ⅱ》实验指导书Word格式文档下载.docx

    1、 if(*p!=0) i+; /该位置的人未退出,则报数 if(i-3)=0) *p=0;i=0;k-; /报数为3,则退出(数组元素赋值0),剩余人数减1 p+; /移动到下一个位置 for(i=1;i=N;i+) /寻找未退出的数组元素的值(排号) if(ai!=0) printf(The last number is %dn,ai);是否理解以上代码?指针变量p的作用是什么?2、程序改错调试下列程序的功能为:通过调用函数实现对所输入的任意两个整数,交换它们的值。程序中有三处错误。#includeswap(int *p1,int *p2) /1 int *p; /2*p=*p1; /3*p

    2、1=*p2; /4*p2=*p; /5main() /6 int a,b; /7scanf(%d%d,&a,&b); /8printf(a=%dtb=%dn,a,b); /9swap(& /10 /113、程序填空通过指针变量的自增运算,扫描一维数组中全部元素的地址,并引用它们各自的值,同时对数组中的正整数求和。#include stdio.h#define N 10main() int i,k,aN,sum,count,*p; /所有变量和数组a的基类型都是int count=sum=0; do printf( input k: n); scanf(%dk); / 总共要求输入k个数 whi

    3、le (kN); / 直到型循环确保0kN printf( input a0a%d:n,k-1); for (p=a;a+k;p+) / 指针p指向数组a的首地址,p依次求出后继值 scanf(, 【1】 ); / 此处的p等价于&ai if ( 【2】 ) / 引用指针变量p所指变量的值 sum+=*p; / 指针p所指变量*p的值0者相加 count+; / 正整数个数统计 【3】 ; / 指针复位,重新指向数组a 的首地址 while (p0 is : %dn,count); Sum of ,sum);4、程序调试分析:先分析程序运行结果,然后通过单步执行方式,观察每一步执行情况及运行结

    4、果。(提示:理解*与+的混合使用) int a=1,3,5,7,9,*p=a; printf(,(*p+);,(*+p);%dn,(*+p)+);(提示:理解指针变量自加的作用,指针变量的值与指针变量所指向变量的值的区别) int a10=1,2,3,4,5,6,7,8,9,10; int *p; for(p=a;a+10;p+) printf(address=%xt,p); printf(value=%dn,*p); %dt回答以下几个问题:修改指针变量值的输出格式,即把程序中的printf(改为printf(address=%dt,重新运行程序,观察结果,这样是否更清楚?(提示:格式符%x

    5、是以16进制整数输出,t是转义字符)程序运行后最后一行显示的数据是哪个单元的数据?画一张图来看看;能否用*p=10;对这个单元赋值?将程序中所有的int换成float,数据输出格式改为%f,观察指针变量的变化规律;这次相邻地址值相差多少?通过以上,你对指针变量的含义理解了吗?指针变量+(如p+)是指针地址值加1吗?如果只将程序中的float *p;改为int *p;编译出现什么警告?说明什么?三、实验小结实验2、指针(2)1、进一步熟悉和掌握指向变量的指针变量、指向一维数组的指针变量的应用2、掌握指向字符数组的指针变量的应用;3、熟悉指针数组、指向指针的指针变量的应用;4、了解指针与二维数组的

    6、关系,理解行指针的概念;5、进一步掌握程序调试的方法。1、程序改错调试下列程序的功能为:统计已知字符串中数字符的个数。程序中有两处错误。int digits(char *s) /1 int c=0; while(s) /3 if(*s =0&*s =9) /4 c+; /5 s+; /6 return c; /7main() /8 char s80;请输入一行字符n gets(s);数字字符长度是:,digits(s); /12下面程序的功能是:通过调用函数fun找出一维数组元素中最大的值和它所在的下标,最大值的和它所在的下标通过形参指针p和q传回。数组元素中的值在主函数中赋予,主函数中x是数

    7、组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。程序中有处错误。#include /1void fun(int a,int n, int *p, int *q) /2 int i; /3 *p=a0; /4 *q=0; /5 for(i=1;n;i+) /6 if(*pai) /7 *p=ai; /8 q=i; /9 main() /10 int i, x50,max,index, n=10; /11 for(i=0;i+) /12 scanf(xi); /13%4d,xi); /14 fun(x,n,max,index); /15 nMax=%d,Index=

    8、%dn,max,index); /162、程序填空以下程序的作用是扫描字符数组a和字符数组b,并输出对应位置相同的字符。 char a10=language,b=programe; 【1】 ; int k; p1=a; p2=b; for(k=0;k8;k+) if(*(p1+k)= 【2】 )%cn,*(p1+k);函数void delete_blank(char *p)的功能为将指针p所指向的字符串中的空格给去掉。#define N 80 void delete_blank(char *p); char aN,i; char *p; 【3】 ; gets(a); 【4】 ;/ void 调

    9、用delete_blank(char *p)函数 puts(a);void delete_blank(char *p) char *q; q=p; while(*q!=0 if(*q! ) 【5】 ; /p指针所指向的内存单元赋值,并将p指针后移 q+; *p=以下两段程序是分别用数组、指针来实现的统计一个字符子串sunstr在一个字符串str中出现的次数(如:字符子串boy在字符串that boy is a good boy!中出现2次)。请填空以实现所要求的功能(注意对比!)。3、程序调试分析:(知识点:指向二维数组的指针变量,画图理解!move(int *pointer) int i,j

    10、,t;3;i+) for(j=i;j char str100,*p; int a100,*q=a,num=0,i;input a string: gets(str); for(p=str;*p! if(*p0 *p *q=(*q)*10+(*(p+)- num+; q+; for(i=0,q=a;num;i+,q+)%5d,*q);(本题选做)若有两个已经按升序排列的数列a:1,7,9,11,13,15,17,19和数列b:2,4,6 ,8,10,现要将这两个数列合并存放到c数列中,插入后的c数列仍按升序排列,要求通过指针完成。实验3、结构体1、掌握结构类型的声明、结构体类型变量和结构体类型数

    11、组的定义和使用;2、熟悉利用结构变量名、结构指针引用结构体成员的方法;1、分析以下各个程序的执行结果,并与运行结果进行比较,理解结构体类型数组的使用。 struct myweek char name12; int day; ; struct myweek week7=Monday,1,Tuesday,2,Wednesday,3,Thursday,4,Firday,5,Sataday,6,Sunday,7;,week2.name1); 比较以下两段程序,想想为什么结果不同? struct stu char num5; float score3; struct stu a3=01,60,70,80

    12、,02,70,75,80,03,90,95,92,*p=a; float sum=0; for (i=0; sum=sum+p-scorei;%6.2fn struct stu,90,95,92; sum=sum+ai.scorei; #include struct stu int num; char name10; int age; void fun(struct stu *p) printf(,(*p).name); struct stu students3=9801,Zhang,20,9802,Wang,19,9803,Zhao,18; fun(students+2);2、程序改错调试:

    13、学生姓名(name)和年龄(age)存于结构体数组person中,函数fun的功能是:找出年龄最小的那名学生并输出该学生的姓名和成绩。struct stud char name20; int age;fun(struct stud person,int n) /1 int min,i; min=0; /3i+) /4 if(personi name, 【2】 )=0) printf (price is %dn, 【3】 ); break; if( 【4】 ) No found !有3名学生,每个学生信息包含学号、姓名、数学成绩、英语成绩、C语言成绩和三门课程的总分。编写一个程序,对学生的各项数

    14、据进行输入、计算每个学生三门课的总分并输出。定义一个描述平面上一个点的结构体Point(自行设计一个合适的结构体类型,包含必要的成员),编程实现下列功能:为点输入坐标值。求两个点中点坐标。求两点间距离。(本题选做)某唱歌比赛决赛有5名选手入围,共有六位评委分别给每位选手打分;对每个选手,去掉一个最高分和一个最低分后,取剩余的四个得分的平均值作为该选手的最后得分;编程实现按选手最后得分的降序排列,依此输出选手的名次、参赛编号、姓名以及最后得分。(自行设计一个合适的结构体类型,包含必要的成员)实验4、链表1、掌握静态、动态链表的基本概念;2、了解链表的创建方法及其基本操作1、程序分析:下面程序的功

    15、能是构造一个如下图所示的三个结点的单向静态链表,并顺序输出链表中结点的数据。阅读、输入、编译、连接,运行并观察结果。体会构造和使用静态链表的方法。201030hNULL a b cstruct node int data; struct node *next; /* 指向本结点类型的指针是实现链表的基础 */ struct node a,b,c,*h,*p; /* 定义三个结点 h是头指针*/ a.data=10; b.data=20; c.data=30; /* 结点的数据赋值 */ h=&a; /* 头指针指向a结点 */ a.next=&b; /* a结点的指针指向b结点 */ b.next=&c; /* b结点的指针指向c结点 */ c.next=NULL; /* c结点的指针值为空,表示最后一个结点 */ p=h; /* 遍历每一个结点,打印数据 */ while (p)%dn ,p-data); p=p-next; /* 指针移到下一个结点 */下面程序的功能是构造一个如下图所示的三个结点的单向动态链表,并输出链表中相关结点的数据之和。体会构造和使用动态链表的方法。321 p1 p2 p3 stdlib.h int num; struct node *p1,*p2,*p3; p1=(st


    注意事项

    本文(《C语言程序设计Ⅱ》实验指导书Word格式文档下载.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开