本文主要是介绍《算法笔记》2.7小节——C/C++快速入门-指针,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《算法笔记》2.7小节——C/C++快速入门->指针
问题 A: C语言10.1
[命题人 : 外部导入]
时间限制 : 1.000 sec 内存限制 : 32 MB
解决 : 1792 提交 : 2222
题目描述
输入a和b两个整数,按先大后小的顺序输出a和b。注意请使用指针变量的方式进行比较和输出。
输入
两个用空格隔开的整数a和b。
输出
按先大后小的顺序输出a和b,用空格隔开。
请注意行尾输出换行。
样例输入 Copy
5 9
样例输出 Copy
9 5
程序代码:
#include<cstdio>
int main()
{int a,b;int *p=&a, *q=&b;scanf("%d%d",&a,&b);if(*p>*q)printf("%d %d\n",*p,*q);elseprintf("%d %d\n",*q,*p);return 0;}
问题 B: C语言10.2
[命题人 : 外部导入]
时间限制 : 1.000 sec 内存限制 : 32 MB
解决 : 1512 提交 : 1990
题目描述
输入a、b、c三个整数,按先大后小的顺序输出a、b和c。注意请使用指针变量的方式进行比较和输出。
输入
三个用空格隔开的整数a、b和c。
输出
按先大后小的顺序输出a、b和c,用空格隔开。
请注意行尾输出换行。
样例输入 Copy
9 0 10
样例输出 Copy
10 9 0
程序代码:
#include<cstdio>
int main()
{int a,b,c;int *p=&a, *q=&b, *k=&c;scanf("%d%d%d",&a,&b,&c);if(*p>*q){if(*q>*k){printf("%d %d %d\n",*p,*q,*k);}else{if(*p>*k)printf("%d %d %d\n",*p,*k,*q);elseprintf("%d %d %d\n",*k,*p,*q);}}else{if(*q>*k){if(*p>*k)printf("%d %d %d\n",*q,*p,*k);elseprintf("%d %d %d\n",*q,*k,*p); }else{printf("%d %d %d\n",*k,*q,*p);}}return 0;
}
问题 C: C语言10.10
[命题人 : 外部导入]
时间限制 : 1.000 sec 内存限制 : 32 MB
解决 : 1609 提交 : 2394
题目描述
给定字符串定义char *a = “I love China!”,读入整数n,输出在进行了a = a + n这个赋值操作以后字符指针a对应的字符串。
输入
一个整数n,保证0<=n<13.
输出
输出进行了题目描述中赋值操作之后a对应的字符串。
请注意行尾输出换行。
样例输入 Copy
7
样例输出 Copy
China!
程序代码:
#include<cstdio>
#include<cstring>
int main()
{char *a = "I love China!";int n;scanf("%d",&n);for(char *p=a+n;p<a+strlen(a);p++)printf("%c",*p);return 0;}
问题 D: C语言10.15
[命题人 : 外部导入]
时间限制 : 1.000 sec 内存限制 : 32 MB
解决 : 1349 提交 : 2458
题目描述
输入3个字符串,按从小到大的顺序输出。要求使用指针的方法进行处理。
输入
3行,每行一个用字符串。保证每个字符串的长度不超过20。
输出
按从小到大的顺序输出这3个字符串,每个字符串一行。
请注意行尾输出换行。
样例输入 Copy
China
CLOCK
deal
样例输出 Copy
CLOCK
China
deal
程序代码:
#include <cstdio>
#include <cstring>
int main()
{ char a[20],b[20],c[20];char *p=a, *q=b, *k=c;scanf("%s%s%s",a,b,c);if(strcmp(a,b)>0){if(strcmp(b,c)>0){printf("%s\n%s\n%s\n",k,q,p);}else{if(strcmp(a,c)>0)printf("%s\n%s\n%s\n",q,k,p);elseprintf("%s\n%s\n%s\n",q,p,k);}}else{if(strcmp(b,c)>0){if(strcmp(a,c)>0)printf("%s\n%s\n%s\n",k,p,q);elseprintf("%s\n%s\n%s\n",p,k,q); }else{printf("%s\n%s\n%s\n",p,q,k);}}return 0;
}
问题 E: C语言10.16
[命题人 : 外部导入]
时间限制 : 1.000 sec 内存限制 : 32 MB
解决 : 1378 提交 : 2035
题目描述
输入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>
#include<stdlib.h>
void input(int *p)
{for(int i=0; i<10; ++i){scanf("%d", p+i);}
}void swap(int *p)
{int i, temp1=*p, k=0;int j, temp2=*p, c=0;for(i=0; i<10; ++i){ if(*(p+i) <temp1){temp1=(*(p+i));k=i;}if(*(p+i)>temp2){temp2=(*(p + i));c=i;} }(*(p+k))=*p;*p = temp1;*(p+c)=(*(p+9));*(p+9) = temp2;
}
void out(int *p)
{int i;for(i = 0; i<10; ++i){printf("%d ", *(p+i));}printf("\n");
}int main()
{ int a[10];int *p=a;input(p);swap(p);out(p);return 0;
}
这篇关于《算法笔记》2.7小节——C/C++快速入门-指针的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!