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

下载本文档

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

文档简介

C语言程序设计 实验报告专业 计算机 班级 计算机卓工 日期 2012年12月31日 成绩 实验组别 第 8次实验; 指导教师 李开学生姓名 徐钦振 学号 U201215120 实验名称 指针实验1、 实验目的(1) 熟练掌握指针的使用,赋值与使用。(2) 掌握用指针引用数组的元素,熟练指向数组的指针的使用。(3) 熟练掌握字符数组与字符串的使用。(4) 掌握指针函数与函数指针的使用。(5) 掌握带有参数的main函数的使用。2、 实验内容及要求。1. 源程序改错 下面的源程序中是否存在问题?如果存在,原因是什么?如果存在错误,请改正并输出正确的结果。源程序:#includeint main(void) float *p; scanf(%d,p); printf(%fn,*p); return 0;2. 源程序修改,完善与替换。(1) 下面的源程序的功能是,通过函数指针和菜单选择来调节用字符串拷贝函数或字符串连接函数。请在源程序中的下划线处填写正确的表达式,完善程序。源程序:#include#includeint 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(tt2 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,result); down: ; return 0;3. 跟踪调试源程序请按下面的要求对所给的源程序进行操作,并回答问题和排除错误。(1) 按照单步执行源程序,进入strcpy时,watches窗口中的s为何值?返回main函数时,s为何值?(2) 排除源程序的错误,并输出正确的答案。源程序:#includechar *strcpy(char *,char *);int main() char a20,b60=There is a boat in the lake.; printf(%sn,strcpy(a,b); return 0;char *strcpy(char *s,char *t) while(*s+=*t+); return(s);4. 程序设计编写并上机调试运行能够实现以下功能的程序或者函数。(1) 已知一个长整型变量占4个字节,其中每个字节又分为高四位和低四位。是编写一个程序,从该整型的高字节开始,一次取出每个字节的高四位为低四位,并以数字字符的形式进行显示。(2) 利用大小为n的指针数组指向用gets函数输入的n行,每行不超过80个字符。是编写一个函数,他的每一行中连续的多个空格字符压缩为一个空格字符。在调用函数时输入压缩后的各行,空行不予输出。(3) 编写一个程序,输入n个数,排列后输出。5. 选做题编写并上机调试运行能够实现以下功能的程序或者函数。(1)设有N位整数和M位小数的两个数据a,b。编写计算a+b并输出结果。(2) 编写一个使用复杂申明的程序。(3) 指向main函数的参数选择“project/set programsarguments.”菜单命令,即可打开图2.12所示的对话框,在文本框中输入main函数的参数。注意只输入命令行中文件名后的参数,文件名不输入。 (图2.12 输入main函数的参数)(3) 实验步骤以及结果1. 源程序改错:存在错误,造成了空指针,并且scanf函数的格式不对应。正确的源程序应为:#includeint main(void) float a,*p; p=&a; scanf(%f,p); printf(%fn,*p); return 0;2. 源程序修改,完善与替换。正确的源程序为:#include#includeint main(void) char * (*p)(char *,char *); char a80,b80,c160,*pa=a,*pb=b,*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(choice=4); 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; gets(pa); printf(input the second string please!n); i=0; gets(pb); result=(*p)(a,b); printf(The result is: %sn,result); down: ; return 0;运行的结果为:3. 跟踪调试源程序进入strcpy时,s的值为:0x28fefc返回main函数时,s的值为:0x28fedd修改之后的正确的源程序为:#includechar *strcpy(char *,char *);int main() char a20,b60=There is a boat in the lake.; printf(%sn,strcpy(a,b); return 0;char *strcpy(char *s,char *t) char *p=s; while(*s+=*t+); return(p);4. 程序设计(1) 源代码为:#includeint main(void) long x=0x1234ABCD,k; char *p=(char *)&x; char uphalf,lowhalf; for(k=0;k4;k+) lowhalf=(*(p+3)&0x0f; if(lowhalf4)&0x0f; if(uphalf10) uphalf|=0; else uphalf=(uphalf-10)+A; p-; printf(%ct%cn,uphalf,lowhalf); return 0;运行结果为:(2) 源程序为:#include#define N 3void getid(char *);int main() char aN80,*pN; int i; printf(请输入n行字符n); for(i=0;iN;i+) gets(ai); pi=ai; printf(输出的结果是:n); for(i=0;iN;i+) getid(pi); printf(n); return 0;void getid(char *ps) int b=0; putchar(*ps); while(*ps+) if(*ps= ) if(b=0) b=1; putchar(*ps); if(*ps)!= ) b=0; putchar(*ps); 运行的结果为:程序(3):源代码为:#include#include#includevoid sort1(int *,int );void sort2(int *,int );int main(int argc,char *argv) void (*p1)(int *,int n); void (*p2)(int *,int n); int aargc-2,bargc-1,i; p1=sort1; p2=sort2; if(argc1&strcmp(argv1,-d)=0) for(i=0;iargc-2;i+) ai=atoi(argvi+2); p1(a,argc); for(i=0;iargc-2;i+) printf(%dn,ai); else for(i=0;iargc-1;i+) bi=atoi(argvi+1); p2(b,argc); for(i=0;iargc-1;i+) printf(%dn,bi); return 0;void sort1(int a,int argc) int j,k; for(j=0;jargc-2-1;j+) for(k=0;kargc-2-j-1;k+) int t; if(akak+1) t=ak,ak=ak+1,ak+1=t; void sort2(int a,int argc) int j,k; for(j=0;jargc-1-1;j+) for(k=0;kak+1) t=ak,ak=ak+1,ak+1=t; 运行的结果为:#include#define M 2#define N 5void averageput(float *);/*计算每个学生各门课程的平均成绩*/float *averageall(float *);/*计算全班每门课程的平均成绩*/void below(float *,float *);int main() char aM10,(*pa)10=a; int i,j; printf(请输入各个课程的名字:n); for(j=0;jM;j+) scanf(%s,*pa+j); float bNM; float *pb1=&b00; float *pd; printf(请输入各个学生的各门课程的成绩:n); for(i=0;iN;i+) for(j=0;jM;j+) scanf(%f,pb1+M*i+j); averageput(pb1); printf(nn); pd=averageall(pb1); below(pb1,pd); return 0;void averageput(float *p) float cN,*pc=c,t=0,*pp=p; int i,j; for(i=0;iN;i+) for(j=0;jM;j+) t+=*(pp+M*i+j); *(pc+i)=t/M; printf(该同学的平均成绩为:%.1fn,*(pc+i); t=0; float *averageall(float *p) float cM,*pc=c,*pc2=c,t=0,*pp=p; int i,j; for(i=0;iM;i+) for(j=0;jN;j+) t+=*(pp+N*i+j); *(pc+i)=t/N; printf(该课程的平均成绩为:%.1fn,*(pc+i); t=0; return pc2;void below(float *p,float *pd) int i,j,sM,mM,nM,*ps=s,*pm=m,*pn=n; float *pp=p; for(i=0;iM;i+) *(ps

温馨提示

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

评论

0/150

提交评论