您的位置:首页 > 编程语言 > C语言/C++

c/c++练习–14

2016-10-25 19:52 274 查看

c/c++练习–14

习题来源:C语言经典编程282例

131.使用指针实现整数排序

输入3个整数,将这3个整数按照由大到小的顺序输出

#include <stdio.h>

void    sort(int *p,int size){
int *n=p,*m;
int    tmp;
for(;n<p+size;n++){
for(m=n+1;m<p+size;m++){
if(*n<*m){
tmp = *n;
*n = *m;
*m =tmp;
}
}
}
}

int main(void){
int a[3];
printf("请输入3个整数:");
for(int i=0;i<3;i++)
scanf("%d",a+i);
sort(a,3);
for(int i=0;i<3;i++)
printf("%d",*(a+i));

return(0);
}


132.指向结构体变量的指针

通过结构体指针变量实现在窗体上显示学生信息。

#include <stdio.h>
#include <string.h>

struct  student{
char        name[10];
int     number;
int     age;
float   score;
};

int main(void){
struct student s,*p=&s;

strcpy(p->name,"xiaoming");
p->age = 18;
p->number = 1122;
p->score = 99.1;

printf("Name:%s\nNumber:%d\nAge:%d\nScore:%f\n",p->name,p->number,p->age,p->score);

return(0);
}


133.使用指针输出数组元素

#include <stdio.h>
#include <string.h>

int main(void){
int a[5]={1,2,3,4,5};
int *p=a;
for(;p<a+5;)
printf("%d\t",*p++);
return(0);
}


134.使用指针查找数列中的最大值和最小值。

#include <stdio.h>
#include <string.h>

int main(void){
int a[5]={1,2,3,4,5};
int *p=a+1,m=*a,mi=*a;
for(;p<a+5;) {
m = m>*p++?m:*p;
mi = mi<*p++?mi:*p;
}
printf("max:%d\t min:%d",m,mi);
return(0);
}


135.使用指针的指针输出字符串

#include <stdio.h>
#include <string.h>

int main(void){
char *s[]={"agc","bcd","efg"};
char **p=s;
for(;p<s+3;)
puts(*p++);
return(0);
}


136.使用指向指针的指针对字符串排序

#include <stdio.h>
#include <string.h>

void    sort(char **p,int size){
char        *tmp;
for(int i=0;i<size;i++){
for(int j=i+1;j<size;j++){
if(strcmp(p[i],p[j])>0){
tmp = p[j];
p[j] = p[i];
p[i] = tmp;
}
}
}

}

int main(void){
char *s[]={"agc","hcd","efg"};
char **p=s;

sort(p,3);
for(;p<s+3;)
puts(*p++);
return(0);
}


137.使用返回指针的函数查找最大值

#include <stdio.h>
#include <string.h>

int*    max_num(int *num,int size){
int *m=num,*p=num;
for(;p<num+size;)
m = *m>*p?m:p++;
return(m);
}

int main(void){
int s[6]={1,2,3,4,5,6};

printf("%d",*max_num(s,6));
return(0);
}


138.使用指针连接两个字符串

#include <stdio.h>
#include <string.h>

char*   str_cmt(char *dest,char* sou){
char *p,*q=sou;

p = dest+strlen(dest);
while(*q != '\0')
*p++ = *q++;
return(dest);
}

int main(void){
char str[100] = "abcd";
char str2[] = "edf";

puts(str_cmt(str,str2)) ;
return(0);
}


139.指针实现逆序存放数组

#include <stdio.h>
#include <string.h>

void    inv(int *dest,int size){
int *p=dest,*q=dest+size-1;
int tmp;
while(p<q) {
tmp = *p;
*p = *q;
*q = tmp;
p++;
q--;
}

}

int main(void){
int a[]={1,2,3,4,5};

inv(a,5) ;
for(int i=0;i<5;i++)
printf("%d\t",a[i]);
return(0);
}


140.用指针数组构造字符串数组

#include <stdio.h>

int main(void){
char *s[]={"agc","hcd","efg"};
char **p=s;

for(;p<s+3;)
puts(*p++);
return(0);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: