C语言程序设计基础实验报告8_第1页
C语言程序设计基础实验报告8_第2页
C语言程序设计基础实验报告8_第3页
C语言程序设计基础实验报告8_第4页
C语言程序设计基础实验报告8_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、实验8指针、实验目的1、通过实验进一步掌握指针的概念,会定义和使用指针变量;2、能正确使用数组的指针和指向数组的指针变量;3、能正确使用字符串的指针和指向字符串的指针变量;二、实验内容和步骤1、改错(1)指出下面程序错误的原因main ()#invoid mai n()int x=10,y=5,*px,*py;px=&x;py=&y;printf("px=%d,py=%d",*px,*py);int x=10,y=5,*px,*py;px=py;px=&x;py=&y;prin tf(M*px=%d,*py=%d,*px,*py);ga &q

2、uot;C:DOCUMENTS AND SETTINGS1tx"10,pp*5Press: any key to continue«lJ:卜面的程序试图有如下运行结果:which style you want to :Capital ( c ) or un capital ( a ):c/COMPUTERWhich sytle you want to :Capital ( c ) or un capital ( a ) : u/computer请调试下面的程序,使其有如上执行结果#i ncludemain () char s* ;char c;printf("wh

3、ich style you want to :ln "); prin tf("capital ( c ) or un capital(a):H); c=getchar();if( c='c* )strcpy(s,"COMPUTER'1); else strcpy(s,"computer"); put(s);#in cludeo #in cludeo #in cludeo void mai n() char *s;char c;prin tf("which style you want to :nH); prin tf(

4、"capital(c) or un capital(a):M); c=getchar();s=calloc(20, sizeof(char); (1) y=*px+(2) y=*+py(3) y=(*py)+指向小者,以下程序能否实现此目的 printf(n%d5%dnH,*pt13*pt2);(4) y=-*ppx+(5)想使指针变量pt1指向a和b中的大者,pt2swap( int *p1 ,i nt *p2)int *p;P=P1 ;P 仁 P2;p2=p;mai n()int a,b;scan f("%d,%dn,&a,&b);ptt&a;p

5、t2=&b;if(a<b) swap;EiXE® nZ013ASa>ebugX,a. MIS”2.1Ppess 日 n qi key to continu.exl /#in cludeovoid swap(i nt *p1, int *p2) in t p;p=*p1 ;*p1=*p2;*p2=p;void mai n()scan f("%d,%dn,&a5&b);int a,b,*pt1,*pt2;2、程序填空:法:(1) 一维数组和指针。分别采用下标法、数组名法和指针法访问数组展.洛加pt2=&b:下标法:#in cludeo

6、void mai n()int a10J,max;#in cludeovoid mai n()int a10,i,max;prin#in cludeoswap (&pt15&pt2);f°r( i=°;i=9;i+ tf(“d,%dn”,void mai n()int a10;int*p,max;for( i=0;i<=9;i+)scant (H%dn, &ai);sea nf(n%dM,a+i);for( p=a;p<(a+10);p+ )for( i=0;i<=9;i+)for( i=0;i<=9;i+)if( max&l

7、t;ai) max=ai;printf (,fMAX=%dnn,max);数组名法:if( max<*(a+i)max=*(a+i);printf ("MAX=%dn”,max);10个数中的最大值。指针(2)字符串和字符指针。输入一个字符串,将其中的大写字母转换成小写字母,然后输出。字符数组实现:字符指针变量实现:#in cludeo#in cludeofor( p=a;p<(a+10);p+ )if( max<*p) max=*p printf("MAX=%dnH,max);void mai n() char s20;int i;gets(s);for

8、( i=0;iv=19;i+)if( si>='A'&&si<=T)si=si+宣-A;i=0;while(si!='0')void mai n() char s20;char *p;scan f("%s”,s);P=s;while( *p!=,0,)if( *p>='A'&&*p<='Z')*p=*p+(,a,-'A');P+;田puts(s);提示:scant ()输入时遇到空格认为字符串结束,用gets。输入时只有遇到回车才认为字符串结束。如键

9、入any boy并回车,则scant (" %s的结果为:anyoanyb0yogets (s)的结果为:3、编程序并上机调试运行程序(都要求用指针处理)。输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大顺序输出。#in elude <>void sort(i nt *a,i nt *b,i nt *c)int t=0;if (*a>*b)t=*a;*a=*b;*b=t;if (*a>*c)t=*a;*a=*c;*c=t;if (*b>*c)t=*b;*b=*c;*c=t;)void mai n()int a=0,b=0,c

10、=0;sea nf("%d%d%d,&a,&b,&c);sort(&a, &b, &c);prin tf("d %d %dnH,a,b,c);)'D:HHKIJniveL,-°p 944 7?Press any key to cont inuc#in cludeo#in cludeovoid swap(char *s1 20,char *s220)char *t;t=*s1 ;*s1=*s2;*s2=t;(2)将一个3X 3的矩阵转置,用一函数实现之。)void mai n()char str120,str2

11、20,str320;char *p120,*p220,*p320;gets(str1) ;gets(str2) ;gets(str3);strcpy(p1,str1);strcpy(p2,str2);strcpy(p3,str3);if(strcmp(p1 ,p2)>0)swap(p1,p2);if(strcmp(p1,p3)>0)hepadswap(p1,p3);if(strcmp(p2,p3)>0) herswap(p2,p3);puts(p1 );puts(p2);puts(p3);在主函数中用scant函数输入以下矩阵元素:13579 1113 15 19将数组名作为

12、函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出已转置的矩阵。(3)用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp (char * p1, char * p2);设pl指向字符串si , p2指向字符串s2,要求当si=s2时,函数返回值为0,如果si羊s2,则返回它们二者第一个不 相同字符的ASCII码差值(如“BOY与"BAD的第二个字母不相同,"。与“A”之差为7965=14);如果si>s2,则输出 正值;如果si<s2则输出负值。两个字符串si、s2由main函数输入,strcmp函数的返回值也由main函数输出。(4)编程统计一个字符串中大写字母、小写字母、数字和其他字符的个数。提示:只要逐个检查字符串中的字符,

温馨提示

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

最新文档

评论

0/150

提交评论