问题 A: C语言10.1
题目描述
输入a和b两个整数,按先大后小的顺序输出a和b。注意请使用指针变量的方式进行比较和输出。
输入
两个用空格隔开的整数a和b。
输出
按先大后小的顺序输出a和b,用空格隔开。
请注意行尾输出换行。
样例输入 Copy
5 9
样例输出 Copy
9 5
#include <stdio.h>
int main()
{
int a,b,c;
int *p,*q;
scanf("%d%d",&a,&b);
p=&a;
q=&b;
if(*p<*q){
c=*p;
*p=*q;
*q=c;
}
printf("%d %d\n",*p,*q);
return 0;
}
问题 B: C语言10.2
题目描述
输入a、b、c三个整数,按先大后小的顺序输出a、b和c。注意请使用指针变量的方式进行比较和输出。
输入
三个用空格隔开的整数a、b和c。
输出
按先大后小的顺序输出a、b和c,用空格隔开。
请注意行尾输出换行。
样例输入 Copy
9 0 10
样例输出 Copy
10 9 0
#include <stdio.h>
int main()
{
int a,b,c,temp;
int *p,*q,*r;
scanf("%d%d%d",&a,&b,&c);
p=&a;
q=&b;
r=&c;
if(*p<*q){
temp=*p;
*p=*q;
*q=temp;
}
if(*p<*r){
temp=*p;
*p=*r;
*r=temp;
}
if(*q<*r){
temp=*q;
*q=*r;
*r=temp;
}
printf("%d %d %d\n",*p,*q,*r);
return 0;
}
问题 C: C语言10.10
题目描述
给定字符串定义char *a = “I love China!”,读入整数n,输出在进行了a = a + n这个赋值操作以后字符指针a对应的字符串。
输入
一个整数n,保证0<=n<13.
输出
输出进行了题目描述中赋值操作之后a对应的字符串。
请注意行尾输出换行。
样例输入 Copy
7
样例输出 Copy
China!
#include <stdio.h>
int main()
{
int n;
char *a="I love China!";
scanf("%d",&n);
printf("%s\n",a+n);
return 0;
}
问题 D: C语言10.15
题目描述
输入3个字符串,按从小到大的顺序输出。要求使用指针的方法进行处理。
输入
3行,每行一个用字符串。保证每个字符串的长度不超过20。
输出
按从小到大的顺序输出这3个字符串,每个字符串一行。
请注意行尾输出换行。
样例输入 Copy
China
CLOCK
deal
样例输出 Copy
CLOCK
China
deal
#include <stdio.h>
#include <string.h>
int main()
{
void swap(char *,char *);
char str1[20],str2[20],str3[20];
scanf("%s%s%s",str1,str2,str3);
if(strcmp(str1,str2)>0) swap(str1,str2);
if(strcmp(str1,str3)>0) swap(str1,str3);
if(strcmp(str2,str3)>0) swap(str2,str3);
printf("%s\n%s\n%s\n",str1,str2,str3);
return 0;
}
void swap(char *p1,char *p2)
{
char p[20];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}
#include <stdio.h>
#include<string.h>
void swap(char **a, char **b) {
char *temp;
temp = *a;
*a = *b;
*b = temp;
}
int main() {
char a[30], b[30], c[30];
scanf("%s%s%s", a, b, c);
char *p1 = a, *p2 = b, *p3 = c;
if (strcmp(p1, p2) > 0) swap(&p1, &p2);
if (strcmp(p1, p3) > 0) swap(&p1, &p3);
if (strcmp(p2, p3) > 0) swap(&p2, &p3);
printf("%s\n%s\n%s\n", p1, p2, p3);
return 0;
}
#include <stdio.h>
#include<string.h>
void swap(char **a, char **b) {
char *temp;
temp = *a;
*a = *b;
*b = temp;
}
int main() {
char str[3][20], *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++) {
printf("%s\n", p[i]);
}
return 0;
}
问题 E: C语言10.16
题目描述
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求用3个函数实现,分别为输入10个数、进行处理、输出10个数。要求使用指针的方法进行处理。
输入
用空格隔开的10个整数。
输出
输出进行题目描述操作之后的10个整数,每个整数之后输出一个空格。
请注意行尾输出换行。
样例输入 Copy
1 5 2 4 9 0 3 8 7 6
样例输出 Copy
0 5 2 4 6 1 3 8 7 9
#include <stdio.h>
int main()
{
void input(int *);
void output(int *);
void process(int *);
int num[10];
input(num);
process(num);
output(num);
return 0;
}
void input(int *num){
for (int i=0;i<10;i++){
scanf("%d",&num[i]);
}
}
void process(int *num){
int *min,*max,temp;
min=max=&num[0];
for (int i=0;i<10;++i)
{
if (*min>num[i])
min = &num[i];
if(*max<num[i])
max= &num[i];
}
temp= num[0];
num[0]=*min;
*min= temp;
temp= num[9];
num[9]=*max;
*max= temp;
}
void output(int *num){
for (int i=0;i<10;++i){
if(i==9)
printf("%d\n",num[i]);
else
printf("%d ",num[i]);
}
}