这个要求比较好理解。因为数组下标是用于指示数组元素在数组集合中位置的,是一个位置序号,由此可知下标变量只能是整型数。悔唯培
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
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)