删除指定字符串的指定字符(C)
时间:2019-11-29 13:28 来源:linux.it.net.cn 作者:IT
代码一
‘\0’是字符串的结束符,任何字符串之后都会自动加上’\0’
指针是个好东西
#include<stdio.h>
int main()
{
void cancelchar(char*a,char n);
char a[50],n;
printf("please input a string:");
gets(a);
printf("please input a seleted char:");
n=getchar();
cancelchar(a,n);
puts(a);
return 0;
}
void cancelchar(char*a,char n)
{
char*p;
for(p = a; *p != '\0'; p++)
if(*p != n)*a++ = *p;
*a = '\0';
}
代码二
不使用指针,但实际上思路不变
#include<stdio.h>
#define N 50
int main(){
int delchar(char a[], char n);
char a[N], n;//N决定字符串的字符上限
printf("please input a string:");
gets(a);
printf("please input a deleted char:");
n = getchar();
delchar(a, n);
return 0;
}
int delchar(char a[], char n){
char p[N];
int i, j = 0;
for(i = 0; a[i] != '\0'; i++){
if(a[i] != n){
p[j] = a[i];
j++;
}
}
p[j] = '\0';
printf("new string: ");
printf("%s", p);
}
补充几个相通的题型:
虽然一个是字符串,一个是数组
一个是删除操作,一个插入操作
但实际上,操作他们的原理是差不多的(你细品…)
递增的数组中插入一个数据,依旧递增
#include<stdio.h>
int main()
{
int a[10];
int x, i;
printf("please input 9个递增的数据:");
for(i = 0; i < 9; i++) scanf("%d", &a[i]);
printf("please input a character:");
scanf("%d", &x);
for(i = 8; i >= 0; i--){
if(a[i] > x) a[i+1] = a[i];
else{
a[i+1] = x;
break;
}
}
for(i = 0; i < 10; i++) printf("%-8d", a[i]);
return 0;
}
在已排序好的数据中插入数值,顺序结构不变
#include<stdio.h>
int main()
{
float a[100], //有序数列
x;//待插入数据
int i = 0,//数组下标
t = 0;//t代表输入数据的量
printf("\nplease input a sorted array(输入0的时候结束):");
scanf("%f", &a[0]);
while(a[i] != 0){
i++;
t++;
scanf("%f", &a[i]);
}
a[i] = 0;
printf("\nplease input a number:");
scanf("%f", &x);
if(a[0] < a[1]){//升序
for(i = t-1; (a[i] > x) && i >= 0; i--){
a[i+1] = a[i];
}
a[i+1] = x;
}
else{//降序
for(i = t-1; (a[i] < x) && i >= 0; i--) a[i+1] = a[i];
a[i+1] = x;
}
//printf("%d%d", i, t);
printf("\nnew sorted array:");
for(i = 0; i <= t; i++) printf("%.2f ", a[i]);
return 0;
}
(责任编辑:IT)
代码一 ‘\0’是字符串的结束符,任何字符串之后都会自动加上’\0’ 指针是个好东西 #include<stdio.h> int main() { void cancelchar(char*a,char n); char a[50],n; printf("please input a string:"); gets(a); printf("please input a seleted char:"); n=getchar(); cancelchar(a,n); puts(a); return 0; } void cancelchar(char*a,char n) { char*p; for(p = a; *p != '\0'; p++) if(*p != n)*a++ = *p; *a = '\0'; } 代码二 不使用指针,但实际上思路不变 #include<stdio.h> #define N 50 int main(){ int delchar(char a[], char n); char a[N], n;//N决定字符串的字符上限 printf("please input a string:"); gets(a); printf("please input a deleted char:"); n = getchar(); delchar(a, n); return 0; } int delchar(char a[], char n){ char p[N]; int i, j = 0; for(i = 0; a[i] != '\0'; i++){ if(a[i] != n){ p[j] = a[i]; j++; } } p[j] = '\0'; printf("new string: "); printf("%s", p); } 补充几个相通的题型: 虽然一个是字符串,一个是数组 一个是删除操作,一个插入操作 但实际上,操作他们的原理是差不多的(你细品…) 递增的数组中插入一个数据,依旧递增 #include<stdio.h> int main() { int a[10]; int x, i; printf("please input 9个递增的数据:"); for(i = 0; i < 9; i++) scanf("%d", &a[i]); printf("please input a character:"); scanf("%d", &x); for(i = 8; i >= 0; i--){ if(a[i] > x) a[i+1] = a[i]; else{ a[i+1] = x; break; } } for(i = 0; i < 10; i++) printf("%-8d", a[i]); return 0; } 在已排序好的数据中插入数值,顺序结构不变 #include<stdio.h> int main() { float a[100], //有序数列 x;//待插入数据 int i = 0,//数组下标 t = 0;//t代表输入数据的量 printf("\nplease input a sorted array(输入0的时候结束):"); scanf("%f", &a[0]); while(a[i] != 0){ i++; t++; scanf("%f", &a[i]); } a[i] = 0; printf("\nplease input a number:"); scanf("%f", &x); if(a[0] < a[1]){//升序 for(i = t-1; (a[i] > x) && i >= 0; i--){ a[i+1] = a[i]; } a[i+1] = x; } else{//降序 for(i = t-1; (a[i] < x) && i >= 0; i--) a[i+1] = a[i]; a[i+1] = x; } //printf("%d%d", i, t); printf("\nnew sorted array:"); for(i = 0; i <= t; i++) printf("%.2f ", a[i]); return 0; } (责任编辑:IT) |