C语言指针精选习题和答案_第1页
C语言指针精选习题和答案_第2页
C语言指针精选习题和答案_第3页
C语言指针精选习题和答案_第4页
C语言指针精选习题和答案_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出#include void swap(int *pa,int *pb) int temp; temp = *pa; *pa = *pb; *pb = temp; void main() int a,b,c,temp; scanf(%d%d%d,&a,&b,&c); if(ab) swap(&a,&b); if(bc) swap(&b,&c); if(ac) swap(&a,&c); printf(%d,%d,%d,a,b,c); 二、C语言 用指针方法 输入3个字符串 按由小到大顺序输出#includ

2、e stdio.h#include string.hint main(int argc, char* argv)char *t;char *p1=NULL,*p2=NULL,*p3=NULL;char ch120=0,ch220=0,ch320=0;p1=ch1;p2=ch2;p3=ch3; printf(No1:); scanf(%s,p1);fflush(stdin); printf(No2:);scanf(%s,p2);fflush(stdin); printf(No3:);scanf(%s,p3);fflush(stdin); if(strcmp(p1,p2)0)t=p1;p1=p2;

3、p2=t;if(strcmp(p1,p3)0)t=p1;p1=p3;p3=t;if(strcmp(p2,p3)0)t=p2;p2=p3;p3=t;printf(%sn%sn%sn,p1,p2,p3);return 0; 9.4编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数#include void main() int a=0,b=0,c=0,d=0,e=0,i=0; char *p,s20; while(si=getchar()!=n)i+; p=s; while(*p!=10) if(*p=A&*p=a&*p=0&*p=9) d+; else e+; p+;

4、printf(大写字母 %d 小写字母 %dn,a,b); printf(空格 %d 数字 %d 非字符 %dn,c,d,e);9.5写一个函数,将3 3矩阵转置#include stdio.hvoid Transpose(int (*matrix)3) int temp; int i, j; for(i=1;i3;i+)/*转置*/ for(j=0;ji;j+) temp = *(*(matrix+j)+i); *(*(matrix+j)+i) = *(*(matrix+i)+j); *(*(matrix+i)+j) = temp; void main() int a33 = 1,2,3,4

5、,5,6,7,8,9; Transpose(a); for(int i = 0;i3;i+) for(int j=0;j3;j+) printf(%d ,aij); printf(n); 9.6用指向一维数组的指针做函数参数#include#includeint main()void sort(char (*s)6);/一维数组的指针做函数参数int i;char str106;char (*p)6;/定义一维数组的指针做函数参数printf(please input string:/n);for(i=0;i10;i+)scanf(%s,&stri);p=str;/将str一维数组指针,赋值给

6、p; sort(p);printf(the output sequence :/n);for(i=0;i10;i+)printf(%s/n,stri);return 0;void sort(char (*s)6)/s指向一维数组的指针做函数参数;int i,j;char temp6, *t;t=temp; for(i=0;i9;i+)/i应该小于9;如果小于10,那么就比较了9+1次;按照冒泡法则,for(j=0;j0)strcpy(t,sj);strcpy(sj,sj+1);strcpy(sj+1,t);9.7编一程序,用指针数组在主函数中输入十个等长的字符串。用另一函数对它们排序,然后在主

7、函数中输出10个已排好序的字符串/用指针数组处理#include#includeint main()void sort(char *);int i;char str106, *p10;printf(please input 10 string:/n);for(i=0;i10;i+)/首先将10个str的首地址赋值给10个pi;pi=stri;/将第i个字符串的首地址赋予指针数组p的第i个元素;for(i=0;i10;i+)scanf(%s,pi);/scanf输入到&pisort(p);printf(the output 10 string:/n);for(i=0;i10;i+)printf(

8、%s/n,pi);/输出到pi;void sort(char *s)char *temp;int i,j;for(i=0;i9;i+)for(j=0;j0)temp=*(s+j);/*(s+j)指向数组指针,我想应该是字符串的首地址;所以可以直接赋值给temp指针;*(s+j)=*(s+j+1);*(s+j+1)=temp;9.8指针 将n个数按输入时顺序的逆序排列,用函数实现#include void reverse(int a,int n) int *p; for(p=a+n-1;p=a;p-) printf(%4d,*p); printf(n);main() int a20,n; int

9、 i; printf(Input the length of array:); scanf(%d,&n); printf(Input the number of array:); for(i=0;is2,则输出正值;如果s1s2,则输出负值。#include main() int strcmp(char *p1,char *p2); int m; char str120,str220,*p1,*p2; printf(Input two strings:n); scanf(%s,str1); scanf(%s,str2); p1=&str10; p2=&str20; m=strcmp(p1,p2

10、); printf(result: %dn,m);int strcmp(char *p1,char *p2) /*两个字符串比较的函数*/ int i; i=0; while(*(p1+i)=*(p2+i) if(*(p1+i+)=0) return(0); /*相等时返回结果0*/ return(*(p1+i)-*(p2+i); /*不等时返回结果为第一个不等字符ASCII码的差值*/运行情况如下: Input two strings: CHINA Chen Result: -32 Input two strings: hello! Hello! Result: 0 Input two st

11、ings: dog cat result: 19.10编一个程序,打入月份号,输出该月的英文月名。例如,输入“3”,则输出“March”,要求用指针数组处理。#include main() char *month_name13=illegal month,January,February,March,April, May,June,July,August,September,October,November,December; int n; printf(Input month: ); scanf(%d,&n); if(n=1) printf(It is %s.n,*(month_name+n

12、); else printf(It is wrong.n);运行结果: Input month: 2 It is February. Input month: 8 It is August. Input month: 13 It is wrong.9.11c语言: 将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串。请用指针实现#include #include #define MAX_LENGTH 32int main() char strMAX_LENGTH = 0; char *pStr = (char*)&str; /1. 将字符串computer赋给一个字符

13、数组 strcpy(str, computer); /2. 然后从第一个字母开始间隔地输出该串 while(*pStr != 0 ) printf(%cn, *pStr); pStr+; return 1;9.12从键盘上输入一个字符串,按后按照下面要求输出一个新字符串, 新的字符串是在原来字符串中, 每两个字符之间插入一个空格, 如原来的字符串为“abcd”, 新产生的字符串应为“a b c d”编写一个程序咯 用C 就是输出的字符 是 每两个字符之间有一个空格#includevoid main()char a10,b10,i=0,j=0;printf(输出字符串);scanf(%s,a);

14、/ abcdeffor(i=0;ai!=0;i+)bj+=ai;bj+= ;bj=0;printf(%s,b);9.13设有一数列,包含10 个数,已按升序排好。现要求编一程序,它能够把从指定位置开始的n个数按逆序重新排列并输出新的完整数列。进行逆序处理时要求使用指针方法(例如:原数列为2,4,6,8,10,12,14,16,18,20,若要求把从第4个数开始的5个数按逆序重新排列,则得到新数列为2,4,6,16,14,12,10,8,18,20。)#include void method(int n,int m,int *a) int *p=a,*q=new intm; p=p+n-1; f

15、or(int i=0;im;i+) qi=*p; p+; p=p-m; for(i=0;im;i+) *p=qm-1-i; p+; int main() int a10=2,4,6,8,10,12,14,16,18,20; method(4,5,a); for(int i=0;i10;i+) coutai ; return 0;9.3有一字符串,包含n个字符。写一个函数,将此字符串从第m个字符开始的全部字符复制成为另一个字符串并输出void strcpyn(char *s,char *t, int n) char *p=s+n; char *q=t; while(*p) *q=*p; q+;

16、p+; *q=0;main() char s100=0; char t100=0; int n=0; printf(input string s:n); scanf(%s,s); printf(input start n:n); scanf(%d,&n); strcpyn(s,t,n); puts(t);-实验101. 设计函数char *insert(s1,s2,n),用指针实现在字符串s1中的指定位置n处插入字符串s2 #include char* insert(char* s1,char* s2,int n) int j=0; char* ss=new char100; char* ts

17、ptr=ss; for(int i=0;in;i+) *ss+=*s1+; while(*s2!=0) *ss+=*s2+; while(*s1!=0) *ss+=*s1+; *ss=0; return tsptr; void main() char s1=; char s2=1234; char* ss=insert(s1,s2,4); printf(%s,ss);2. 利用指针完成字符串复制函数char *strcpy(char *s1,char *s2)#include stdio.hchar* fun(char *s1,char *s2)char *p=s2; while(*s1)!=0) *s2=*s1; s1+,s2+; return p;void main(void) char *p,*strcpy; char *s1=world cup!; char *s2=good luck!; printf(s1=%sns2=%sn,s1,s2); p=fun(s1,s2); printf(s1=%sns2=%sn,s1,s2)实验91. 编写一个使用指针的c函数,交换数组

温馨提示

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

评论

0/150

提交评论