C语言,利用指针编写程序:删除一个字符串中的某一个字符
1、其实头函数每个都需要用到的就是#include ,因为程序里面涉及到了输出和输入字符串以及字符。#include 。
2、其次就是要定义两个相同容量的字符串储存的变量 char a[100]; char b[100];。以及整数变量 int c; int i=0,j=0; 其中a[100]是存字符串的,b【100】是存你删除对应字符的字符串的,整数C是你想删除第几位。j ,i 是后面for循坏中要使用到的变量。
3、 printf("请输入你的字符串"); scanf("%s",a); printf("请输入你想要删除第几位字符"); scanf("%d",&c)。
4、 for(i=0;i<strlen(a);i++) { if(i+1!=c) { b[j]=a[i]; j++; } } printf(" %s",b); } 。
5、只要当i+1不等于c时把a【i】里面的字符赋给b【i】,那么这样当i+1=c时不把它赋给b【i】从而实现删除功能。
6、最后就给大家完整的看一下整体的一个代码流程。
#include<stdio.h>
intmain()
{
charstr[100];
char*p,*q;
charc;
gets(str);
c=getchar();
for(p=str,q=str;*p!='\0';p++)//用指针*p去提取str中每一个元素,用指针*q去删除str中需要删除的元素
if(*p!=c)
*(q++)=*p;
*q=*p;
puts(str);
return0;
}
扩展资料:其它方法:
#include<stdio.h>
intmain()
{
charstr[100];
char*q;
charc;
inti;
gets(str);
c=getchar();
for(i=0,q=str;str[i]!='\0';i++)
if(str[i]!=c)
*(q++)=str[i];
*q=str[i];
puts(str);
return0;
}
你好!
p,q是指针,*p,*q表示p,q指向的地址储存的字符
++是自增运算符,*q++=*p表示将当前p指向的地址储存的值赋值给q指向的地址,赋值完成后q++,即q指向下一位地址
根据程序来说:
for(p = s, q = s; *p! = '\0'; p++)
if(*p != del_x)
*q++ = *p;
*q = *p;
puts(s);
首先,p作为循环下标,从s字符串的第一位到最后一位判断是否为删除的字符
其次,q作为新字符串s的下标,对于每一位非删除字符,保存下来,q下标+1等待下一个字符
最后,退出循环时p指向的是空字符,q还在等待新字符,这时将*p赋给*q表示新字符串结束,然后puts输出
如果还没有理解的话可以用实例来分析一下,对于字符串 s =“abcabc”,删除字符‘a’,简单设s起始位置为0,则s[0]='a',s[1]='b',s[2]='c',s[3]='a',s[4]='b',s[5]='c',s[6]='\0'
循环开始时,p = 0,q = 0,到*p='\0',即p=6时结束,p每次+1
p = 0,q = 0,此时*p=s[0]='a',需要删除,则不记录
p = 1,q = 0,此时*p=s[1]='b',不需删除,记录*q即s[0] = 'b',q = q+1
p = 2,q = 1,此时*p=s[2]='c',不需删除,记录*q即s[1] = 'c',q = q+1
p = 3,q = 2,此时*p=s[3]='a',需要删除,则不记录
p = 4,q = 2,此时*p=s[4]='b',不需删除,记录*q即s[2] = 'c',q = q+1
p = 5,q = 3,此时*p=s[5]='c',不需删除,记录*q即s[3] = 'c',q = q+1
p = 6,q = 4,此时*p=s[6]='\0',退出循环
此时*q = *p,即s[4] = '\0' 表示字符串结束,最后新字符串s = “bcbc”
#include<stdio.h>int main(){char s[100],*p ,*q ;puts("输入小于100个字符:");gets(s);char del_x;printf("输入要删除的字符:");scanf("%c",&del_x);for(p=s,q=s;*p!='\0';p++) if(*p!=del_x)*q++=*p;*q=*p;puts(s);return 0;}
C语言用指针编写函数判断输入的字符串是是否为回文,然后再主函数中_百...
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。2、#include <stdio.h>int ss(int i) \/*自定义函数判断是否为素数*\/{int j; if (i <= 1) \/*小于1的数不是素数*\/ return 0; if (i == 2) \/*2是素数*\/ return 1。3、 for (j = 2; j < i; j++) \/*...
C语言利用指针编写函数,输入3个学生2门课成绩,计算每个学生的平均分和...
给你一个简单的程序。 希望能看的懂。include "stdafx.h"include "stdio.h"int main(int argc, char* argv[]){ int a,b,c;printf("a学生成绩是:");int a1,a2;scanf("%f,%f",&a1, &a2);printf ("b学生成绩是:");int b1,b2;scanf ("%d,%d",&b1,&b2);int c1,c2;printf("...
c语言 编写一个使用指针的c函数,交换数组a和数组b中的对应元素_百度知 ...
include<stdio.h> int main(){ int Ii = 0, Itemp;int array_a[5] = {1,2,3,4,5};int array_b[5] = {6,7,8,9,0};int *a,*b;a=array_a;b=array_b;while( Ii < 5 ){ Itemp = *(a + Ii);(a + Ii) = *(b + Ii);(b + Ii) = Itemp;Ii ++;} Ii=0;...
C语言编程:用指向指针的指针的方法对n个整数排序并输出。
用指向指针的指针的方法对n个整数排序并输出的具体编程步骤如下:1、编写头函数:#include <stdio.h>。2、编写条件函数:void sort(int **p,int n){ int i,j,temp;for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++){ if(*p[j]>*p[j+1])\/\/或者是*(*(p+j))>*(*(p+j+1)){...
C语言用指针编写函数,将一个二进制数(以字符串形式表示)转换为十进制...
include "stdio.h"double binTodec(char *str){int i,f;double x,t;for(t=1.0,x=f=i=0;str[i];i++){if(str[i]=='.')f=1;else if(f==0)(x*=2)+=str[i]-'0';else x+=(str[i]-'0')*(t\/=2);}return x;}int main(int argc,char *argv[]){char a[20];...
C语言指针一道简单的编程题
按照你的要求编写的C语言程序如下 include<stdio.h>int main(){ int a,b; int *p=&a; a=30; printf("a=%d\\n",*p); p=&b; scanf("%d",p); a=*p+24; printf("a=%d,b=%d",a,b); return 0;}运行结果a=3076a=100,b=76 ...
用C语言结构体指针编程序实现输入十个学生的学号,期中和期末成绩,计 ...
combox *Find(int); \/\/查找条例条件的记录,并返回该记录的指针 public:Commonbox(){head=NULL;} int ListCount(); \/\/统计当前链表的记录总数,返回一个整数 void AddItem(int num, string name, int mark); \/\/添加一条记录到表尾void RemoveItem(int); \/\/删除一条指定的记录 void List();...
求C语言,用指针写,编写一函数fun,功能是,求出数组的最大元素在数组中...
include <stdio.h> int max_el(int array[], int size, int * k){ int iMax=0, i = 0, j = 0;for(i = 0; i < size; i++) { if (array[i] > iMax) { j = i;iMax = array[i];} } if (k) *k = iMax;return j;} int main(void){ int a[8] = {1,4,5,...
C语言 用指针编写在数组中查找指定值指针的函数
不用万分感谢,只要十分感谢即可。对于函数:int* find(int a[], int value),其中a为整型数组首地址,value是被检验值。我们可以利用指针a间接引用数组第一个元素的值,并将其与value比较,比较完后,将指针向后移动,再通过间接引用的方式比较下一个元素值,依次下去,直到在整型数组中找到被检验值...
#c语言编写一个函数同时求圆的周长和面积,用指针怎么写?
include <stdio.h> include <math.h> \/\/ 函数声明 void circle_properties(double r, double *p, double *a);int main(void){ double radius, perimeter, area;\/\/ 输入圆的半径 printf("输入圆的半径: ");scanf("%lf", &radius);\/\/ 计算圆的周长和面积 circle_properties(radius, &...
标时克托: #include<stdio.h> void deletechar(char c, char *s) { char *p=s; for(int i=0;s[i]!='\0';){ if(s[i]==c){i++;continue;} *p++=s[i++]; } *p='\0'; } int main(void) { char c,str[]="ldkfssjklssjfsj"; puts(str); printf("请输入要删除的字母:"); scanf("%c",&c); deletechar(c,str); puts(str); return 0; }
长宁县18067978650: 新手求助:c语言,用返回值为指针的函数,编写一个在某字符串中删除某个字符的函数.?
标时克托: 你这个程序第一个主要问题在你没弄懂指针的含义,,因为*p代表着指针p所指向的空间,而p才代表着储存空间地址,同理str2这个数组名代表着数组第一个元素的位置,所以你在定义p时应该让p=str2;第二个问题是你应该把return str2;放在...
长宁县18067978650: C语言 指针 删除字符串的一部分 在线等 - ?
标时克托: 代码如下::#include int del_substr(char *str,char *substr ) { int count=0,count1=0,i,j=0,k; char *s; char *s1; s=str; while((*s)!='\0')//求源字符串的长度 { count++; s++; } s1=substr; while((*s1)!='\0')//求子字符串的长度 { count1++; s1++; } s=str; s1=...
长宁县18067978650: C语言 编写程序,在一个整型数组中查找某个数并将其删除.(要求用指针) - ?
标时克托: #include #include int main() { int i,*p,a[5]={1,2,3,4,5}; p=&a[0]; int num,count; printf("请输入要删除的数字\n"); scanf("%d",&num); for(i=0;i<5;i++) { if(*p++==num) { count=i; } } p=&a[0]; for(i=count;i<4;i++) { *(p+i)=*(p+i+1); *(p+i+1)=null; } p=&a[0]; for(i=0;i<5;i++) { if(a[i]!=0) { printf("%d\n",*p++); } } }
长宁县18067978650: C语言编程,如何删掉指针数组中指定元素? - ?
标时克托: 最为简单的方法是把指针作为数组,使用下标方法直接删除. 如: char arr[] = "abcdef"; char *p = arr; p[2] = 0;//删除第三个元素数据
长宁县18067978650: C语言用指针删除指定元素,代码哪里错了,帮解答下,谢谢! - ?
标时克托: 这样试试?void delete_by_number(struct student *stu){ //删除 char stu_number[15]; struct student *p,*q; printf("请输入要删除的学生学号\n"); gets(stu_number); for(p=stu;pif(strcmp(stu_number,p->number)==0) {for(q=p;qcount--; //长度减一 printf("删除完毕!\n"); return; } printf("查无此人!\n"); }
长宁县18067978650: C语言从字符串中删除指定字符,用指针,能删除多个不同字符, 比如字符串是ABCDEFG 删除AG,输出BCDEF - ?
标时克托: 展开全部//注释掉的是根据题目规则编的//自我感觉,不要注释的更好,作为函数不应该封装这么多#include #include #define STR_LEN 30//#define error_info "没有需要删除的字符" bool trimstring(char* str1, char* str2){ //int flag = 0; int idx1 = 0, ...
长宁县18067978650: C语言如何用指针和数组删除一个数组元素 - ?
标时克托: 不输出要删除的数就行了,没必要真的删除那个数,给人一种被删除的假象就行了
长宁县18067978650: 请使用指针编写程序,从键盘输入一个字符串,删除其中的a字母,比如,输入asd输出sd - ?
标时克托: 接收输入后,将字符数组逐个输出,遇到a就不输出 ~~~~~~~~~~~~~~~~~~
长宁县18067978650: 用c语言编写一个使用指针删除字符串中空格的程序?
标时克托: 方法一: #include<stdio.h> void main() { char str[81],*p; int i,word=1; gets(str); for(p=str;*p!='\0';p++) if(*p==' ') word++; printf("%d",word); } 方法二: #include<stdio.h> void main() { int tongji(char *p); char str[81]; gets(str); printf("%d\n...