关于#c语言#的问题:C语言怎么修改成输入输入结果是输入任意数组

img


C语言怎么修改成输入输入结果是输入任意数组,找出其中极大峰值。输入不是数字时,则提出提示。

动态数据利用malloc进行分配即可,是不是数字,则必须保证输入为数字,否则程序会崩溃,或者把接收输入的变量改为字符串类型,再做判断是否是数字。代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int isDigital(char *a)
{
    for(int i = 0; i < strlen(a); i++)
    {
        if(isdigit(a[i])!=1) 
        {
           return 0;
        }
    }
    return 1;
}
int main()
{
    int n,i;
    char temp[512] = {0};
    int max = 0;
    printf("请输入字符串长度:");
    scanf("%d",&n);
    int *pa = NULL;
    pa=(int *) malloc(n*sizeof(int));
    if(pa==NULL)
    {
        printf("内存分配失败!!!");
    }
    //getchar();
    for (i=0;i<n;i++)
    {
        printf("请输入数字:");
        //scanf("%c", &pa[i]);
        scanf("%s", temp);
        if(isDigital(temp))
        {
           pa[i] = atoi(temp);
        }
        else
        {
           i--;
           printf("输入的非数字,请重新输入,");
           continue;
        }
        memset(temp, 0, sizeof(temp));
        if(pa[i] > max)
        {
            max = pa[i];
        }
    }
    printf("max = %d", max);
    free(pa);
 return 0;
}

运行情况:

img

int a[10];
这个修改为
int n;
printf("请输入数组大小");
scanf("%d", &n);
int * a = (int *)malloc(n * sizeof(n));