苦恼的傻冬瓜 2021-11-14 22:45 采纳率: 75%
浏览 50
已结题

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中。
方法二:全程只有一个数组,一个变量记录找到的
的位置,一个变量记录当前要移动的字母的位置…这个挺复杂的,不建议用这种方法。

  • 写回答

1条回答 默认 最新

  • 关注

    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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月23日
  • 已采纳回答 11月15日
  • 创建了问题 11月14日