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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(C语言程序设计实验报告.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C语言程序设计实验报告.docx

1、C语言程序设计实验报告C语言程序设计实验报告专业: 班级: 日期: 成绩:实验组别: 第 次实验: 指导教师:学生姓名: 学号: 同组人姓名:实验名称:指针实验一、实验目的(1)熟练掌握指针的说明、赋值、使用。(2)掌握用指针引用数组的元素,熟悉指向数组的指针的使用。(3)熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。(4)掌握带有参数的main函数的用法。二、实验内容及要求1.源程序改错 下面的源程序中是否存在错误?如果存在,原因是什么?如果存在错误要求在计算机上对这个源程序进行调试修改,是之能够正确执行。源程序:#include int main(void) float

2、 * p; scanf(%f,p); printf(%fn,*p); return 0;2.源程序修改替换(1)下面源程序的功能是,通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数。请在程序中的下划线处填写合适的表达式、语句或代码片段来完善该程序。源程序:#include #include int main(void) _ char a80,b80,c160,*result=c; int choice,i; do printf(tt1 copy string.n); printf(tt2 connect string.n); printf(tt3 exit.n); printf(tt

3、input a number(1-3)please! n); scanf(%d,&choice); while(choice5); switch (choice) case 1: p=strcpy; break; case 2: p=strcat; break; case 3: goto down; getchar(); printf(input the first string please! n); i=0; _ printf(input the second string please!n); i=0; _ result=_(a,b); printf(the result is %sn,

4、result); down: ; return 0;(2)请上机运行第(1)题程序使之能按下面要求输出结果(注:(输入)表示该行数据是键盘数据):1.copy string。2.Connect string。3.Exit。Input a number(1-3)please!2(输入)Input the first string please!The more you learn,(输入)Input the second string please!The more you get.(输入)The result is the more you learn,the more you get.3.

5、跟踪调试程序请按下面的要求对所给源程序进行操作,并回答问题和排除错误。(1)单步执行源程序。进入strcpy时,watches窗口中s为何值?返回main时,watches窗口中s为何值?(2)排除源程序中的错误,使程序输出结果为:there is a boat on the lake.源程序:#include char * strcpy(char*,char*);int main(void) char a20,b60=there is a boat on the lack.; printf(%sn,strcpy(a,b); return 0;char *strcpy(char*s,char*

6、t) while(*s+=*t+) ; return (s);4.程序设计编写并上机调试运行能实现以下功能的程序或函数:(1)已知一个长整形变量占四个字符,其中每个字节又分高四位和低四位。试编写一个程序,从该长整形变量的高字节开始,依次取出每个字节的高四位和低四位并以数字字符的形式进行显示。(2)利用大小为n的指针数组指向用gets函数输入的n行,每行不超过80个字符。试编写一个函数,它将每一行中连续的多个空格字符压缩为一个空格字符。在调用函数中输出压缩空格后的各行,空行不予输出。(3)编写一个程序,输入n个整数,排序后输出。排序的原则由命令行可选参数-d决定,并且有参数-d时按递减顺序,否则

7、按递增顺序排序。要求将排序算法定义成函数,利用指向函数的指针是该函数实现递增或递减排序。(4)设每个班有n个学生,每个学生所修的M门课程的成绩,并且都存放到相应的数组中,试编写以下函数:(5)计算每个学生各门课程平均成绩(6)计算全班每门课程的平均成绩(7)分别统计低于全班各门课程平均成绩的人数(8)分别统计全班各门课程不及格的人数和90分以上(包含90)的人数。(9)在调用函数中输出结果(要求都用指针操作,不得用下标)5.选做题(1)编写并上机调试运行能实现以下功能的程序:设有N位整数和M位小数(N=20,M=10)的两个数据a,b。编程计算a+b并输出结果。如: 1234567891234

8、5678912.1234567891+98765432109876543210.0123456789(2)编写一个使用复杂声明的“char *(*p2)(const char*,const char *);”的程序。提示:p中元素可为strcmp,strstr等函数名。三、实验步骤及结果1.源程序改错错误:悬挂指针,指针未初始化改后程序:#includeint main(void) float *p,a; p=&a; scanf(%f,p); printf(%fn,*p); return 0;2.源程序完善、修改、替换#include#includeint main(void) char *(

9、*p)(char *a,char *b); char a80,b80,c160,*result=c; int choice,i; do printf(tt1 copy string.n); printf(tt2 connect string.n); printf(tt3 exit.n); printf(ttinput a number(1-3)please!n); scanf(%d,&choice); while(choice5); switch(choice) case 1: p=strcpy; break; case 2: p=strcat; break; case 3: goto dow

10、n; getchar(); printf(input the first string please!n); i=0; while(ai=getchar()!=n) i+; ai=0;printf(input the second string please!n); i=0; while(bi=getchar()!=n) i+; bi=0; result=(*p)(a,b); printf(the result is %sn,result); down: ; return 0;3.跟踪调试程序#include char * strcpy(char*,char*);int main(void)

11、char a20,b60=there is a boat on the lack.; printf(%sn,strcpy(a,b); return 0;char *strcpy(char*s,char*t) char *m; m=s; while(*s+=*t+) ; return (m);4.程序设计(1)#include#include#define MAX 32int main() long int n; int i; char sMAX; printf(please input a number:n); scanf(%ld,&n); if(n=-2147483647&n=0) for(

12、i=0;n!=0;i+) si=n%2+0; n/=2; for(;i=MAX-1;i+) si=0; else n=-(n+1); for(i=0;n!=0;i+) si=n%2+0; n/=2; for(;i=MAX-2;i+) si=0; for(i=0;i=28;i-) putchar(si); putchar(t); for(i=27;i=24;i-) putchar(si); putchar(t); for(i=23;i=20;i-) putchar(si); putchar(t); for(i=19;i=16;i-) putchar(si); putchar(t); for(i=

13、15;i=12;i-) putchar(si); putchar(t); for(i=11;i=8;i-) putchar(si); putchar(t); for(i=7;i=4;i-) putchar(si); putchar(t); for(i=3;i=0;i-) putchar(si); putchar(t); return 0;(2)#include#include#include#define N 3void output(char*s);int main(void) int i; char *sN; printf(please input your massage:n); for

14、(i=0;iN;i+) si=malloc(80); gets(si); printf(your massage has been changed into;n); for(i=0;iN;i+) output(si); printf(%sn,si); return 0;void output(char*s) int i,j; for(i=0,j=0;si!=0;i+,j+) if(isspace(si) for(;isspace(si);i+) ; sj+= ; sj=si; else sj=si; sj=si;(3)#include#define MAX 5void swap(int v,i

15、nt i,int j);void qsort(int v,int left,int right);int main(int argc,char *argv) int i=0,sMAX; if(-argc0&(*+argv)0=-) if(*argv)1=d) while(i=0;i-) printf(%dt,si); else printf(wrong:n); else while(iMAX) scanf(%d,&si+); qsort(s,0,MAX-1); for(i=0;iright) return; swap(v,left,(left+right)/2); last=left; for

16、(i=left+1;i=right;i+) if(vivleft) swap(v,+last,i); swap(v,left,last); qsort(v,left,last-1); qsort(v,last+1,right);void swap(int v,int i,int j) int temp; temp=vi; vi=vj; vj=temp;(4)#include #define N 5#define M 3struct course char *s; int dN; smM;void saverage(struct course *sm);void caverage(struct

17、course *sm);void summary_below(struct course *sm);void summary_both(struct course *sm);int main(void) int i; printf(Please input the names of the %d courses.n,M); for(i=0;is=malloc(10)=NULL) printf(ERROR); for(i=0;is); for(k=0;kd+k); saverage(sm); caverage(sm); summary_below(sm); summary_both(sm); r

18、eturn 0;void saverage(struct course *sm) double sum=0,av; int i,k; for(i=0;iN;i+) printf(This is the %d students average gradet,i+1); for(k=0;kd+i); av=sum/M; printf(%lfn,av); sum=0; void caverage(struct course *sm) double sum=0,av; int i,k; for(i=0;is); for(k=0;kd+k); av=sum/N; printf(%lfn,av); sum

19、=0; void summary_below(struct course *sm) double sum=0,av; int i,k; for(i=0;iM;i+) for(k=0;kd+k); av=sum/N; printf(In %s the number of below-average student ist,(sm+i)-s); for(sum=0,k=0;kd+k)av) sum+; printf(%dn,(int)sum); sum=0; void summary_both(struct course *sm) int i,k; int fsum=0,esum=0; for(i

20、=0;iM;i+) printf(The course is %st,(*(sm+i).s); for(k=0;kd+k)d+k)90) esum+; printf(the failed is %d,while the above 90 is %dn,fsum,esum); fsum=0,esum=0; 5.选做题(1)#includeint main(void) int i,t=0; char a=12345678912345678912.1234567891; char b=98765432109876543210.0123456789; int s32; s0=0; for(i=0;i=

21、0;i-) if(ai=.) i-; int m,n,k; m=ai-0+t; n=bi-0; k=m+n; if(k=10) t=k/10; si+1=k%10; else si+1=k%10; t=0; k=0; s0=t; for(i=0;i32;i+) if(i=21) printf(.); else printf(%d,si); return 0;(2)#include#include#includeint main(void) int n; char *(*p2)(const char*,const char*); char *a;char *b;char *c; printf(p

22、lease input string one:n); a=malloc(20); gets(a); printf(please input string two:n); b=malloc(20); gets(b); printf(please input a number:n0 to choose the strcpyn1 to choose the strcatn); scanf(%d,&n); p0=strcpy; p1=strcat; if(n2|n0) printf(wrong); return -1; else c=(*pn)(a,b); printf(now the string is:n%sn,c); return 0;四、实验体会知道了指向数组的指针的用法,明白了指向函数的指针的用途

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

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