C语言程序中数组下标的类型无效怎么解决

C语言程序中数组下标的类型无效怎么解决,第1张

此题目中变量 i 被用做了数组下标,而在程序开始位置(山明main()函数的第一行),将变量 i 的数掂类型,定义成为了碧唯双精度浮点数(doubIe)型。这与数组下标数组所要求的类型不相符。数组下标的数据类型要求是整型。

这个要求比较好理解。因为数组下标是用于指示数组元素在数组集合中位置的,是一个位置序号,由此可知下标变量只能是整型数。悔唯培

printf("highest is %s,%s",stu[maxi].num,stu[maxi].name)

printf("grade is %6.2f,%6.2f,%6.2f,average is %5.2f.\n",

stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].average)

这两句,数组下棚慎标是float。要求数组下标只能是族和腊兆滑整数或者char

我让你取一个数组中第4.8个元素,你取的出来?

你这个程序运行的时候只要字符的个数超过100了就会出现段错误,出现段错误的原因为你只定义了一个长度为100的数组,但你运行的时候键入了超出了100个字符,解决办法:

1、将“#define MAXnumber 100”中的100改成一个足够大的数;

2、动态分配内存;

以下为动态分配内存的源码:

#include <友信stdio.h>

#include <stdlib.h>

//#define MAXnumber 100

void inverse(int size,char str[])

void inverse(int size,char str[])

{

char ch

int n = 0

while((ch=getchar())!='\n')

{

str[n]=ch

n++

if(n >= size)

{

break

}

}

n--

while(n>=0)

{

printf("%c",str[n])

n--

}

printf("\n")

}

void main()

{

// int n=0

// char abc[MAXnumber]

printf("input the number of character to be inversed: ")

int size = 0

scanf("%d\n", &size)

char *abc = (char*)malloc(size*sizeof(char))

inverse(size,abc)

free(abc)

}

3、使用STL中的容器,比如std::vector,std::stack,它们都有自动扩大容量的功能。

stack具有LIFO(后进先出)的性质,你可以用栈来实现你程序中的功能,以下是使用栈的程念仿序源码:

#include <stdio.h>

#include <stack>

int inverse(std::stack<char>&str_stack)

int inverse(std::stack<char>&str_stack)

{

char ch

while((ch=getchar())!='仔告纤\n')

{

str_stack.push(ch)

}

while(!str_stack.empty())

{

printf("%c",str_stack.top())

str_stack.pop()

}

return 0

}

int main()

{

stack<char>str_stack

inverse(str_stack)

printf("\n")

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12503087.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存