C语言指针精选习题和答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、用指针方法编写一个程序,输入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(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 ch1[20]={0},ch2[20]={0},ch3[20]={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("%s\n%s\n%s\n",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,s[20];

while((s[i]=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 小写字母%d\n",a,b);

printf("空格 %d 数字 %d 非字符 %d\n",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

{

temp = *(*(matrix+j)+i);

*(*(matrix+j)+i) = *(*(matrix+i)+j);

*(*(matrix+i)+j) = temp;

}

}

}

void main()

{

int a[3][3] = {{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 ",a[i][j]);

}

printf("\n");

}

}

}

9.6用指向一维数组的指针做函数参数

#include

#include

int main()

{

void sort(char (*s)[6]);//一维数组的指针做函数参数

int i;

char str[10][6];

char (*p)[6];//定义一维数组的指针做函数参数

printf("please input string:/n");

for(i=0;i<10;i++)

scanf("%s",&str[i]);

p=str;//将str一维数组指针,赋值给p;

sort(p);

printf("the output sequence :/n");

for(i=0;i<10;i++)

printf("%s/n",str[i]);

return 0;

}

void sort(char (*s)[6])//s指向一维数组的指针做函数参数;

{

int i,j;

char temp[6], *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(s[j],s[j+1])>0)

{

strcpy(t,s[j]);

strcpy(s[j],s[j+1]);

strcpy(s[j+1],t);

}

}

9.7编一程序,用指针数组在主函数中输入十个等长的字符串。用另一函数对它们排序,然后在主函数中输出10个已排好序的字符串

//用指针数组处理

相关文档
最新文档