《C语言程序设计基础实验报告8.docx》由会员分享,可在线阅读,更多相关《C语言程序设计基础实验报告8.docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言程序设计基础实验报告8 实验8 指针 一、实验目的 1、通过实验进一步掌握指针的概念,会定义和使用指针变量; 2、能正确使用数组的指针和指向数组的指针变量; 3、能正确使用字符串的指针和指向字符串的指针变量; 二、实验内容和步骤 1、改错 (1)指出下面程序错误的原因. main( ) int x=10,y=5,*px,*py; px=py; px=&x; py=&y; printf(*px=%d,*py=%d,*px,*py); #include void main() int x=10,y=5,*px,*py; px=&x; py=&y; printf(px=%d,py=%d,*px
2、,*py); (2)下面的程序试图有如下运行结果: which style you want to : Capital ( c ) or uncapital ( a ):c COMPUTER Which sytle you want to : Capital ( c ) or uncapital ( a ) : u computer 请调试下面的程序,使其有如上执行结果. #include main () char s*;char c; printf(which style you want to :ln); printf(capital ( c ) or uncapital(a):); c=
3、getchar(); if(c=c)strcpy(s,COMPUTER); else strcpy(s,computer); put(s); #include #include #include void main() char *s;char c; printf(which style you want to :n); printf(capital(c) or uncapital(a):); c=getchar(); s=calloc(20, sizeof(char); /分配存储空间if(c=c) strcpy(s,COMPUTER); else strcpy(s,computer); p
4、uts(s); (3)下面的程序能获得上述运行结果吗 main() char *S=COMPUTER; char c; printf(which style you want to n); printf(capital (c) or uncapital(u);); c=getchar(); if(c=c) put(s); else s=computer; puts(s); #include void main() char *s=COMPUTER; char c; printf(which style you want to:n); printf(capital(c) or uncapital
5、(u);); c=getchar(); if(c=c) puts(s); else s=computer; puts(s); (4)设计一个C程序,用以测试下列各表达式的运算. (1) y=*px+ (2) y=*+py (3) y=(*py)+ (4) y=-*ppx+ (5)想使指针变量pt1指向a 和b 中的大者,pt2指向小者,以下程序能否实现此目的 swap(int *p1,int *p2) int *p; p=p1;p1=p2;p2=p; main() int a,b; scanf(%d,%d,&a,&b); pt1=&a;pt2=&b; if(a=A&si=A&*p*b) t=*
6、a;*a=*b;*b=t; if (*a*c) t=*a;*a=*c;*c=t; if (*b*c) t=*b;*b=*c;*c=t; void main() int a=0,b=0,c=0; scanf(%d%d%d,&a,&b,&c); sort(&a, &b, &c); printf(%d %d %dn,a,b,c); #include #include void swap(char *s120,char *s220) char *t; t=*s1;*s1=*s2;*s2=t; void main() char str120,str220,str320; char *p120,*p220
7、,*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) swap(p1,p3); if(strcmp(p2,p3)0) swap(p2,p3); puts(p1);puts(p2);puts(p3); (2)将一个33的矩阵转置,用一函数实现之。 在主函数中用scanf函数输入以下矩阵元素: l 3 5 7 9 11 13 15 19 将数组名作为函数实参,在执行函
8、数的过程中实现矩阵转置,函数调用结束后在主函数中输出已转置的矩阵。 (3)用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp (char * p1, char * p2); 设p1指向字符串s1,p2指向字符串s2,要求当s1s2时,函数返回值为0,如果sls2,则返回它们二者第一个不相同字符的 ASCII码差值(如“BOY”与“BAD”的第二个字母不相同,“O”与“A”之差为7965=14);如果sls2,则输出正值;如果sls2则输出负值。 两个字符串s1、s2由main函数输入,strcmp函数的返回值也由main函数输出。 (4)编程统计一个字符串中大写字母、小写字母、数字和其他字符的个数。 提示:只要逐个检查字符串中的字符,然后将相应的计数器加1就可以统计出各类字符的数量,设up用于记录大写字母数量,low用于记录小写字母数量,digit用于记录数字数量,other用于记录其他字符的数量, (5)编写函数,函数原型如下: int getdata( char *str ); 判断字符串str是否为十进制串,若是转换为十进制数返回,若不是则返回-1。 并编写主函数,调用该函数,输入一行字符,将其转换为十进制数输出。 如有侵权请联系告知删除,感谢你们的配合!