C语言谁能教我下面的代码怎么打

img


本人编程初学者,在C语言学习中遇到了困难
请问哪位可以帮我打一下这个代码,今晚十一点前要交


#include <stdio.h>

int str_to_int(char *s)
{
    int n = 0;
    while (*s)
    {
        n = n * 10 + (*s - '0');
        s++;
    }
    return n;
}

int find_int_in_array(int *arr, int l, int n)
{
    for (int i = 0; i < l; i++)
    {
        if (arr[i] == n)
            return i;
    }
    return -1;
}

int main()
{
    char str[100], buf[100];
    int num[100], count[100] = {0}, inx = 0, cnt = 0, i = 0, n, t;
    fgets(str, 100, stdin); // fgets输入末尾会包含\n

    while (1)
    {
        if (str[i] != ' ' && str[i] != '\n')
            buf[inx++] = str[i];

        if ((i > 0 && str[i] == ' ') || str[i] == '\n')
        {
            buf[inx] = '\0';
            n = str_to_int(buf);
            t = find_int_in_array(num, cnt, n);
            if (t == -1)
            {
                num[cnt] = n;
                count[cnt]++;
                cnt++;
            }
            else
                count[t]++;

            inx = 0;
        }
        if (str[i] == '\n')
            break;
        i++;
    }

    for (i = 0; i < cnt; i++)
    {
        printf("%d %d\n", num[i], count[i]);
    }

    scanf("%d", &n);
    t = find_int_in_array(num, cnt, n);
    if (t == -1)
        printf("不存在");
    else
        printf("%d", count[t]);

    return 0;
}

img

解答如下

img

#include<stdio.h>

int str_to_int(char str[])
{
    int len=0;
    while(str[len]!='\0') len++;
    int p=1,sum=0;
    for(int i=len-1; i>=0; i--)
    {
        sum+=(str[i]-'0')*p;
        p*=10;
    }
    return sum;
}

int find_int_in_array(int arr[],int l, int n)
{
    for(int i=0; i<l; i++)
        if(arr[i]==n) return i;
    return -1;
}

int main()
{
    char str[255], buf[255];
    int num[255] = {0};
    int count[255] = {0};
    int i,j,k, n = 0, len = 0, index;
    gets(str);
    printf("num数组:");
    for(i=0; str[i]!='\0'; i++)
    {
        int p=0;
        while(str[i]!=' '&&str[i]!='\0') buf[p++]=str[i++];
        buf[p]='\0';
        int tem=str_to_int(buf);
        num[len++]=tem;
        printf("%d ",tem);
    }
    printf("\n");
    printf("count数组:");
    for(j=0; j<len; j++)
    {
        for(k=0; k<len; k++)
            if(num[k]==num[j])
                count[j]++;
        printf("%d ",count[j]);
    }
    printf("\n");
    printf("请输入需要查找的数字: ");
    scanf("%d", &n);
    index = find_int_in_array(num, len, n);
    if(index == -1)
        printf("该数字不存在\n");
    else
        printf("出现了%d次\n", count[index]);
    return 0;
}

用基础一点的知识给你写下

img

#include<stdio.h>
int find_int_in_array(int arr[], int n,int l) 
{
 int index=-1;
 for(int i=0;i<l;i++)
 {
  if (arr[i] == n) {
   index = i;
  }
 }
 return index;
}

int str_to_int(char* str)
{
    int num = 0;
    while (*str != '\0') {
        num = 10 * num + (*str - '0');
        str++;
    }
    return num;
}

int main()
{
    char str[1000], buf[100];
    int num[100] = { 0 };
    int count[100] = { 0 };
    int  n = 0, l = 0, flag = 0, j = 0, index;
    printf("请输入字符串\n");
    gets(str); //输入字符串
    for (int i = 0; str[i] != '\0'; i++) {
       // printf("num:%d", num[l]);
       // printf("count:%d", count[l]);
        if (flag == 0 && str[i] != ' ') { //还没添加数字,且字符串遍历到数字
            j = 0;
            buf[j] = str[i];
            flag = 1;
            j++;
        }
        else 
        {
            if (str[i] != ' ') 
            { //还没遇到空格,或者字符串结束,继续添加数字进子字符串
                buf[j] = str[i];
                j++;
            }
            else if(str[i]==' '||str[i]=='\0') 
            {//数字添加完毕
                flag = 0;
                buf[j] = '\0';
                n = str_to_int(buf);//将子字符串转成数字
                index = find_int_in_array(num, n, l);
                if (index == -1) {//数字不存在num中
                    count[l] = 1;
                    num[l] = n;
                    l++;
                }
                else {//数字已经存在
                    count[index]++;
                }
            }
        }
        
    }
    for (int i = 0; i < l; i++) {
        printf("num:%d  count:%d\n", num[i],count[i]);
    }
    printf("\n请输入需要查找的数字: \n");
    scanf_s("%d", &n);
    index = find_int_in_array(num, n, l);
    if (index == -1) {
        printf("该数字不存在\n");
    }
    else {
        printf("出现了%d次\n", count[index]);
    }
    return 0;
}

#include <stdio.h>

int str_to_int(char *str)
{
    int num = 0;
    while(*str != '\0') {
        num = 10 * num + (*str - '0');
        str++;
    }
    return num;
}

int find_int_in_array(int *arr, int l, int n)
{
    for(int i=0; i<l; i++) {
        if(arr[i] == n) {
            return i;
        }
    }
    return -1;
}


int main()
{
    char str[1000], buf[100];
    int num[100] = {0};
    int count[100] = {0};
    int i, n = 0, m = 0, flag = 0, index, pos;
    gets(str);
    for(i=0; str[i]!='\0'; i++) {
        if(flag == 0 && str[i] != ' ') { //碰到第一个数字,开始保存记录数字字符
            index = 0;
            buf[index++] = str[i]; //记录数字字符
            flag = 1;
        }
        else if(flag == 1) { //已经开始保存记录数字字符
            if(str[i] != ' ') { //不是空格,即是数字字符
                buf[index++] = str[i]; //记录数字字符
            }
            if(str[i] == ' ' || str[i + 1] == '\0') { //碰到空格 或 字符串结束符,数字已经完整
                flag = 0;
                buf[index] = '\0';
                n = str_to_int(buf); //字符串转数字
                pos = find_int_in_array(count, m, n);
                if(pos != -1) { //该数字已存在
                    num[pos]++; //次数累加
                }
                else { //该数字不存在,在数组尾部添加
                    count[m] = n;
                    num[m] = 1;
                    m++;
                }
            }
        }
    }
    printf("请输入需要查找的数字: ");
    scanf("%d", &n);
    pos = find_int_in_array(count, m, n);
    if(pos == -1) {
        printf("该数字不存在\n");
    }
    else {
        printf("出现了%d次\n", num[pos]);
    }
    return 0;
}

img