#include<stdio.h>#include<stdlib.h>int main(){ char pstr; int n; char temp; int i, j, flag = 0, flag1 = 0; scanf("%d", &n); while (getchar() != ‘\n’); pstr = (char)malloc(n * sizeof(char)); gets(pstr); temp = pstr[0]; for (i = 0; pstr[i] != ‘\0’; i++) { if (pstr[i] > temp) { temp = pstr[i]; flag = 1; } else if (pstr[i] < temp) { flag1 = 1; } } if (flag|| flag1) { for (i = 0; pstr[i] != ‘\0’😉 { if (pstr[i] == temp) { for (j = i; pstr[j] != ‘\0’; j++) { pstr[j] = pstr[j + 1]; } } else { i++; } } } puts(pstr);}/指针:一般函数中传值传递,可以用return某个值返回函数结果,但return是选择性地,也就是说一个函数中只有一个return,只会选择其中一个条件满足的return返回。%是输出地址值的格式符。给指针变量赋值的时候一定是附地址值也就是要加&符号,在传参的时候如果需要在函数内部实现数值的多个改变那么就可以传地址,且在函数声明的时候定义形参为指针定义的时候为为说明符,int*x,char b;等等在之后的都是间接运算符,表示读取该地址中的内容传数组名或者是元素地址
字符串:字符数组末尾以’\0’结束,如果字符串由三个字符组成那么应该定义四个大小二维字符数组中一维代表字符串的个数,二维代表字符串的最大长度不论是之前的整型数组还是字符串当指针指向时都是指向首地址也就是p=a;(a为数组名),在函数传参的时候可以传数组名也可以传地址值&b因为在赋值之后可以把指针和数组混用,所以(p+i)==*(a+i)=a[i]=p[i]都表示引用第i+1个字符唯一不同的是指针可以通过p++的方式移动所指字符,而函数名不能由a++来移动访问数组元素时可以通过下标法,也可以通过指针法字符串的输入输出:可以用for从i=0开始循环(和前面整型数组一样,下标从0开始)输入输出在输出的时候也可以用for(i=0;a[i]!=’\0’;i++){ printf("%c",a[i]);}也可以把字符数组当作一个整体输入scanf("%s",a)(因为a是数组名所以前面不加&符号)同理输出printf("%s",a)但是以上的输入方法不能够输入空格回车制表符遇到这些就会停止,所以要用gets函数来录入比如gets(a)(a为数组名)或者gets§(p为指向a的指针)puts(a)输出,但是输出时也只能输出该字符串而不能个输出其余的要求gets不能限制输入的长度,所以容易溢出利用fgets(a,sizeof(a),stdin);来输入可以保证输入字符数不大于数组a的大小几个字符串的处理:(调用#include<string.h>头文件)strlen(a)表示求字符数组a的长度strcmp(a,b)表示比较数组ab的大小,若a>b则函数结果大于零,a=b函数结果等于零,a<b函数结果小于零strcpy(a,b)表示把b复制粘贴到a中 在执行语句中任何位置调用都可以,比如输出输出,条件if判断strcat(a,b)表示把b粘贴到a的后面在输入字符串之前或者字符之前一定要看之前是否有输入,如果有则用getchar()吃掉回车,否则回车键也是字符,会被录入字符的输入中单个字符允许赋值操作,字符串不能出现字符操作,只能用复制函数字符数组遍历处理:while(a[i]!=’\0’){ …}在处理后得到的新的字符数组时还要在末尾人为补加一个’\0’;遍历或者访问元素的时候可以用指针++,也可以用下标访问i++;
*/
来源:CSDN
作者:zhengrui23751
链接:https://blog.csdn.net/zhengrui23751/article/details/103570591