上代码,创作不易,谢谢点赞!
#include <bits/stdc++.h>
using namespace std;
#define N 100
int x[N];//定义数组
int main() {
for(int *p=x;p<x+N;p++)
{
cout<<*p<<endl;
}
for(int i=0;i<N;i++)
{
cout<<*(x+i)/*等价于x[i]*/<<endl;
}
return 0;
}
示例问题:
习题8-2 字符串排序输出
题目描述
输入3个字符串,按有小到大的顺序输出。
输入
分三行进行输入,每行一个字符串。
(以回车结束每一行的输入)
输出
输出排序后的三个字符串,每个字符串占一行。
样例输入
复制
tianjin
beijing
chengdu
样例输出
复制
beijing
chengdu
tianjin
代码:
#include <bits/stdc++.h> // 包含常用头文件(注意:此为GCC特有头文件,非标准C++)
using namespace std;
#define N 100 // 定义字符串最大长度char x[3][N]; // 存储3个字符串的二维数组(每个字符串最大长度99)
char *p[3]; // 指针数组,用于指向字符串进行排序int main() {// 输入处理部分for(int i=0;i<3;i++) {cin>>x[i]; // 读取每个字符串p[i]=x[i]; // 指针指向对应字符串首地址}// 冒泡排序优化版(带提前终止判断)for(int i=0;i<3;i++) {bool flag=true; // 标记本轮是否发生交换// 内层循环范围优化:每轮减少比较次数for(int j=0;j<3-i-1;j++) { // 使用strcmp比较字符串字典序if(strcmp(p[j],p[j+1])>0) { // 前>后时返回正数flag=false; // 发生交换则标记为未完成// 交换指针而非实际字符串内容char *t=p[j];p[j]=p[j+1];p[j+1]=t;}}if(flag) break; // 提前终止:本轮无交换说明已有序}// 输出排序结果(2+1是为了明确显示输出3个元素)for(int i=0;i<2+1;i++) {printf("%s\n",p[i]); // 按指针顺序输出字符串}return 0;
}
输入:
tianjin
beijing
chengdu
输出:
beijing
chengdu
tianjin