C语言程序设计实验报告(一).doc_第1页
C语言程序设计实验报告(一).doc_第2页
C语言程序设计实验报告(一).doc_第3页
C语言程序设计实验报告(一).doc_第4页
C语言程序设计实验报告(一).doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计实验报告专业: 班级: 日期: 成绩:实验组别: 第 次实验: 指导教师:学生姓名: 学号: 同组人姓名:实验名称:指针实验1、 实验目的(1) 熟练掌握指针的说明、赋值、使用。(2) 掌握用指针引用数组的元素,熟悉指向数组的指针的使用。(3) 熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。(4) 掌握带有参数的main函数的用法。2、 实验内容及要求1. 源程序改错 下面的源程序中是否存在错误?如果存在,原因是什么?如果存在错误要求在计算机上对这个源程序进行调试修改,是之能够正确执行。源程序:#include int main(void) float * 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(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 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,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. 跟踪调试程序请按下面的要求对所给源程序进行操作,并回答问题和排除错误。(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*t) while(*s+=*t+) ; return (s);4. 程序设计编写并上机调试运行能实现以下功能的程序或函数:(1) 已知一个长整形变量占四个字符,其中每个字节又分高四位和低四位。试编写一个程序,从该长整形变量的高字节开始,依次取出每个字节的高四位和低四位并以数字字符的形式进行显示。(2) 利用大小为n的指针数组指向用gets函数输入的n行,每行不超过80个字符。试编写一个函数,它将每一行中连续的多个空格字符压缩为一个空格字符。在调用函数中输出压缩空格后的各行,空行不予输出。(3) 编写一个程序,输入n个整数,排序后输出。排序的原则由命令行可选参数-d决定,并且有参数-d时按递减顺序,否则按递增顺序排序。要求将排序算法定义成函数,利用指向函数的指针是该函数实现递增或递减排序。(4) 设每个班有n个学生,每个学生所修的M门课程的成绩,并且都存放到相应的数组中,试编写以下函数:计算每个学生各门课程平均成绩计算全班每门课程的平均成绩分别统计低于全班各门课程平均成绩的人数分别统计全班各门课程不及格的人数和90分以上(包含90)的人数。在调用函数中输出结果(要求都用指针操作,不得用下标)5. 选做题(1)编写并上机调试运行能实现以下功能的程序:设有N位整数和M位小数(N=20,M=10)的两个数据a,b。编程计算a+b并输出结果。如: 12345678912345678912.1234567891+98765432109876543210.0123456789(2) 编写一个使用复杂声明的“char *(*p2)(const char*,const char *);”的程序。提示:p中元素可为strcmp,strstr等函数名。3、 实验步骤及结果1. 源程序改错错误:悬挂指针,指针未初始化改后程序:#includeint main(void) float *p,a; p=&a; scanf(%f,p); printf(%fn,*p); return 0;2. 源程序完善、修改、替换#include#includeint main(void) char *(*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 down; 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) 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(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=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(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,int 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(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 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); return 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=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=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=0;i-) if(ai=.) i-; int m,n,k; m=ai-0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论