c语言数组基础知识,关于字符等一系列的定义

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;
}

img

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;
}

img

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;
}

img

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;
}

img

如有帮助,望采纳!谢谢!