getchar( )的用法
C语言关于指针的 a、*a、&a
C语言(char*)malloc(x*sizeof(char))
题目描述:
输入3个字符串,按从小到大的顺序输出。要求使用指针的方法进行处理。
输入:
3行,每行一个用字符串。保证每个字符串的长度不超过20。
C语言
#include<stdio.h>
#include<string.h>
#include<malloc.h> //malloc.h,动态存储分配函数头文件,当对内存区进行操作时,调用相关函数.。
void strswap(char **a,char **b) //二级指针:把指针的地址传递给函数
{
char *temp; //交换指针的地址
temp = *a;
*a = *b;
*b = temp;
} //把二级指针指向的指针换成其他指针
int main()
{
char *a,*b,*c; //存地址,指向字符串首地址
a=(char*)malloc(30*sizeof(char)); //申请了30个连续的字节,返回的是首地址。空间是连续的,可以通过首地址计算其他地址。a就指向一个有30个连续空间的首地址
b=(char*)malloc(30*sizeof(char));
c=(char*)malloc(30*sizeof(char));
gets(a);
gets(b);
gets(c);
if(strcmp(a,b)>0) //strcmp(s1,s2)为字符串比较函数
{
strswap(&a,&b);
}
if(strcmp(a,c)>0)
{
strswap(&a,&c);
}
if(strcmp(b,c)>0)
{
strswap(&b,&c);
}
puts(a);
puts(b);
puts(c);
return 0;
}
C++写法
#include<iostream>
#include<cstring>
#include<malloc.h>
using namespace std;
void strswap(char *&a,char *&b)
{
char *temp;
temp = a;
a = b;
b = temp;
}
int main()
{
char *a, *b, *c;
a=(char*)malloc(30*sizeof(char));
b=(char*)malloc(30*sizeof(char));
c=(char*)malloc(30*sizeof(char));
gets(a);
gets(b);
gets(c);
if(strcmp(a,b)>0)
{
strswap(a,b);
}
if(strcmp(a,c)>0)
{
strswap(a,c);
}
if(strcmp(b,c)>0)
{
strswap(b,c);
}
puts(a);
puts(b);
puts(c);
return 0;
}
**strcmp(s1,s2)**为字符串比较函数,比较的是从字符串的第一个字符开始比较他的ASCLL码值,跟字符串的长度无关。
当s1 > s2 时,返回值 > 0
当s1 = s2 时,返回值 = 0
当s1 < s2时,返回值 < 0