代码一 ‘\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) |