题目描述
输入a和b两个整数,按先大后小的顺序输出a和b。注意请使用指针变量的方式进行比较和输出。
输入
两个用空格隔开的整数a和b。
输出
按先大后小的顺序输出a和b,用空格隔开。
请注意行尾输出换行。
样例输入
5 9
样例输出
9 5
代码实现
#include
int main()
{
int a,b;
scanf("%d %d",&a,&b);
int *p1, *p2;
p1 = &a;
p2 = &b;
if(*p1 < *p2)
{
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
printf("%d %d\n",*p1, *p2);
return 0;
}
题目描述
输入a、b、c三个整数,按先大后小的顺序输出a、b和c。注意请使用指针变量的方式进行比较和输出。
输入
三个用空格隔开的整数a、b和c。
输出
按先大后小的顺序输出a、b和c,用空格隔开。
请注意行尾输出换行。
样例输入
9 0 10
样例输出
10 9 0
解题思路
通过定义两个数组,一个int数组,一个指针变量数组,然后冒泡排序,比较三个数的大小
代码实现
#include
int main()
{
int a[3];
int *p[3];
for (int i = 0; i < 3; i++)
{
scanf("%d",&a[i]);
p[i] = &a[i];
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2-i; j++)
{
if (*p[j] < *p[j+1])
{
int temp = *p[j];
*p[j] = *p[j+1];
*p[j+1] = temp;
}
}
}
for (int i = 0; i < 3; i++)
{
printf("%d ", *p[i]);
}
printf("\n");
return 0;
}
题目描述
给定字符串定义char *a = “I love China!”,读入整数n,输出在进行了a = a + n这个赋值操作以后字符指针a对应的字符串。
输入
一个整数n,保证0<=n<13。
输出
输出进行了题目描述中赋值操作之后a对应的字符串。
请注意行尾输出换行。
样例输入
7
样例输出
China!
代码实现
#include
#include
int main()
{
const char *a="I love China!";//常量指针
int n;
scanf("%d",&n);
printf("%s\n",a+n);
return 0;
}
题目描述
输入3个字符串,按从小到大的顺序输出。要求使用指针的方法进行处理
输入
3行,每行一个用字符串。保证每个字符串的长度不超过20。
输出
按从小到大的顺序输出这3个字符串,每个字符串一行。
请注意行尾输出换行。
样例输入
China CLOCK deal
样例输出
CLOCK China deal
代码实现
#include
#include
#include
void swap(char **p1, char **p2){
//表示p1里面存一个char *型变量的地址 p1 = &p1, p2 = &p2;
char *temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main()
{
char str[3][20];
char *p[3];
for (int i = 0; i < 3; i++)
{
gets(str[i]);
p[i] = str[i];
}
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 2-i; j++)
{
if(strcmp(p[j],p[j+1])>0)
{
swap(&p[j], &p[j+1]);
}
}
}
for (int i = 0; i < 3; i++)
{
puts(p[i]);
}
return 0;
}