c语言数组基础知识,关于字符等一系列的定义
问题描述:
4.有一长度不多于10个字符的字符串,对于输入的任意字符,请编写程序求出该字符在字符串中出现的次数。若没有出现,则出现次数为0。
5.从键盘输入一个长度不多于10的字符串(例如"abce345de"),存储在数组a中,将此字符串重复一次赋值给另外一个字符数组b(例如"abce345deabce345de"),再输入单个字符(例如'a'),求字符在字符数组b中出现的次数。
6.输入的字符串中只包含字母和号。请编写程序:将字符串中号全部删除。不得使用C语言提供的字符串函数。
例如,字符串中的内容为:*ABC*DEFG*****,删除后,字符串中的内容应当是: ABCDEFG
提示:定义两个字符数组st1和st2。请用户输入字符串并存储在数组st1中。逐个查看st1中的字符,如果是’’则看下一个;否则将此字符存放在数组st2中,并查看下一个。找到st1中的字符串结束标记则完成。
7.输入的字符串中只包含字母和号。请编写程序:除了尾部的号之外,将字符串中其它号全部删除。不得使用C语言提供的字符串函数。
例如,字符串中的内容为:*ABC*DEFG,删除后,字符串中的内容应当是: ABCDEFG
方法一:将第上题程序修改,记录st1中最后一个字母的位置。添加一个循环,将这个字母和其之后的都赋值到st2中。
方法二:全程只有一个数组,一个变量记录找到的的位置,一个变量记录当前要移动的字母的位置…这个挺复杂的,不建议用这种方法。
答
4
#include<stdio.h>
#include<string.h>
int main() {
int i,count=0;
char s[11],c;
gets(s);
scanf("%c", &c);
int l = strlen(s);
for (i = 0; i < l; i++)
if (s[i]==c)
count++;
printf("%d\n", count);
return 0;
}
5
#include<stdio.h>
#include<string.h>
int main() {
int i,count=0;
char a[11],b[21],c;
gets(a);
strcpy(b,a);
strcat(b,a);
scanf("%c", &c);
int l = strlen(b);
for (i = 0; i < l; i++)
if (b[i]==c)
count++;
printf("%d\n", count);
return 0;
}
6
#include<stdio.h>
int main() {
int i,j=0;
char st1[100],st2[100];
gets(st1);
for (i = 0; st1[i] != '\0'; i++)
if (st1[i]!='*')
st2[j++] = st1[i];
st2[j] = '\0';
printf("%s\n", st2);
return 0;
}
7
#include<stdio.h>
int main() {
int i,j=0,t;
char st1[100],st2[100];
gets(st1);
for (i = 0; st1[i] != '\0'; i++)
if (st1[i]!='*'){
st2[j++] = st1[i];
t = i;
}
for (i = t+1; st1[i] != '\0'; i++)
st2[j++] = st1[i];
st2[j] = '\0';
printf("%s\n", st2);
return 0;
}
如有帮助,望采纳!谢谢!