欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言指针精选习题和答案(共13页).doc

    • 资源ID:14280108       资源大小:43KB        全文页数:13页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言指针精选习题和答案(共13页).doc

    精选优质文档-倾情为你奉上一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出#include <stdio.h> 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(a>b) swap(&a,&b); if(b>c) swap(&b,&c); if(a>c) swap(&a,&c); printf("%d,%d,%d",a,b,c); 二、C语言 用指针方法 输入3个字符串 按由小到大顺序输出#include "stdio.h"#include "string.h"int 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;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<stdio.h> 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<='Z') a+; else if(*p>='a'&&*p<='z') b+; else if(*p=' ') c+; else if(*p>='0'&&*p<='9') d+; else e+; p+; printf("大写字母 %d 小写字母 %dn",a,b); printf("空格 %d 数字 %d 非字符 %dn",c,d,e);9.5写一个函数,将3 3矩阵转置#include "stdio.h"void Transpose(int (*matrix)3) int temp; int i, j; for(i=1;i<3;i+)/*转置*/ for(j=0;j<i;j+) temp = *(*(matrix+j)+i); *(*(matrix+j)+i) = *(*(matrix+i)+j); *(*(matrix+i)+j) = temp; void main() int a33 = 1,2,3,4,5,6,7,8,9; Transpose(a); for(int i = 0;i<3;i+) for(int j=0;j<3;j+) printf("%d ",aij); printf("n"); 9.6用指向一维数组的指针做函数参数#include<stdio.h>#include<string.h>int main() void sort(char (*s)6);/一维数组的指针做函数参数 int i; char str106; char (*p)6;/定义一维数组的指针做函数参数 printf("please input string:/n"); for(i=0;i<10;i+)  scanf("%s",&stri); p=str;/将str一维数组指针,赋值给p;    sort(p); printf("the output sequence :/n"); for(i=0;i<10;i+)  printf("%s/n",stri); return 0;void sort(char (*s)6)/s指向一维数组的指针做函数参数; int i,j; char temp6, *t; t=temp;    for(i=0;i<9;i+)/i应该小于9;如果小于10,那么就比较了9+1次;按照冒泡法则,  for(j=0;j<9-i;j+)/第一次比较需要9次就是i=0到i=8共九次;第二次需要比较8次;依次类推;   if(strcmp(sj,sj+1)>0)       strcpy(t,sj);    strcpy(sj,sj+1);    strcpy(sj+1,t);   9.7编一程序,用指针数组在主函数中输入十个等长的字符串。用另一函数对它们排序,然后在主函数中输出10个已排好序的字符串/用指针数组处理#include<stdio.h>#include<string.h>int main() void sort(char *); int i; char str106, *p10; printf("please input 10 string:/n"); for(i=0;i<10;i+)/首先将10个str的首地址赋值给10个pi;  pi=stri;/将第i个字符串的首地址赋予指针数组p的第i个元素; for(i=0;i<10;i+)  scanf("%s",pi);/scanf输入到&pi sort(p); printf("the output 10 string:/n"); for(i=0;i<10;i+)  printf("%s/n",pi);/输出到pi;void sort(char *s) char *temp; int i,j; for(i=0;i<9;i+)  for(j=0;j<9-i;j+)   if(strcmp(*(s+j),*(s+j+1)>0)       temp=*(s+j);/*(s+j)指向数组指针,我想应该是字符串的首地址;所以可以直接赋值给temp指针;    *(s+j)=*(s+j+1);    *(s+j+1)=temp;   9.8指针 将n个数按输入时顺序的逆序排列,用函数实现#include <stdio.h>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 i; printf("Input the length of array:"); scanf("%d",&n); printf("Input the number of array:"); for(i=0;i<n;i+) scanf("%d",&ai); reverse(a,n);9.9写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为: int stremp(char *p1,char *p2)设p1指向字符串s1,p2指向字符串s2。要求:当s1=s2时,返回值为0。当s1不等于s2时,返回它们二者的第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如果s1<s2,则输出负值。#include <stdio.h>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); 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 stings: dog cat result: 19.10编一个程序,打入月份号,输出该月的英文月名。例如,输入“3”,则输出“March”,要求用指针数组处理。#include <stdio.h>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<=12)&&(n>=1) printf("It is %s.n",*(month_name+n); 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 <stdio.h>#include <string.h>#define MAX_LENGTH 32int main() char strMAX_LENGTH = 0; char *pStr = (char*)&str; /1. 将字符串computer赋给一个字符数组 strcpy(str, "computer"); /2. 然后从第一个字母开始间隔地输出该串 while(*pStr != '0' ) printf("%cn", *pStr); pStr+; return 1;9.12从键盘上输入一个字符串,按后按照下面要求输出一个新字符串, 新的字符串是在原来字符串中, 每两个字符之间插入一个空格, 如原来的字符串为“abcd”, 新产生的字符串应为“a b c d”编写一个程序咯 用C 就是输出的字符 是 每两个字符之间有一个空格#include<stdio.h>void main()char a10,b10,i=0,j=0;printf("输出字符串");scanf("%s",a);/ 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 <iostream.h>void method(int n,int m,int *a) int *p=a,*q=new intm; p=p+n-1; for(int i=0;i<m;i+) qi=*p; p+; p=p-m; for(i=0;i<m;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;i<10;i+) cout<<ai<<' ' 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+; 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 <stdio.h>char* insert(char* s1,char* s2,int n) int j=0; char* ss=new char100; char* tsptr=ss; for(int i=0;i<n;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.h"char* 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函数,交换数组a和数组b中的对应元素#include<stdio.h>#include<stdlib.h>void ex(int *a, int *b, int n)int i,tmp;for (i=0;i<n;i+)tmp=ai;ai=bi;bi=tmp;void main()int x5=1,2,3,4,5;int y5=6,7,8,9,10;int i,n=5;ex(x,y,n);printf("n X: ");for (i=0;i<n;i+)printf("%d ",xi);printf("n Y: ");for (i=0;i<n;i+)printf("%d ",yi);system("pause");专心-专注-专业

    注意事项

    本文(C语言指针精选习题和答案(共13页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开