有关C语言的小问题
#include<stdio.h>#include<stdlib.h>#include<malloc.h>structArr{int*pbase;intlen;intcn...
# include <stdio.h>
# include <stdlib.h>
# include <malloc.h>
struct Arr
{
int * pbase;
int len;
int cnt;
};
void initarr(struct Arr * parr,int len);
bool appendarr(struct Arr * parr , int val);
bool insertarr();
bool deletearr();
int get();
bool isempty(struct Arr * parr);
bool isfull();
void sortarr();
void showarr(struct Arr * parr);
void inversearr();
int main(void)
{
struct Arr arr;
initarr(&arr,6);
showarr(&arr);
appendarr(&arr,1);
appendarr(&arr,2);
appendarr(&arr,3);
showarr(&arr);
return 0;
}
void initarr(struct Arr * parr, int len)
{
parr ->pbase = (int *)malloc(sizeof(int) * len);
if (NULL == parr ->pbase){
printf("动态内存分配失败!\n");
exit(-1);
}
parr ->len = len;
parr ->cnt = 0;
}
bool isfull(struct Arr * parr)
{
if (parr ->cnt == parr ->len)
return true;
else
return false;
}
bool isempty(struct Arr * parr)
{
if (0 == parr ->cnt)
return true;
else
return false;
}
void showarr(struct Arr *parr)
{
if (isempty(parr))
printf("数组为空!\n");
else
for (int i = 0;i < parr->pbase[i]; i++)
printf("%d ",parr[i]);
}
bool appendarr(struct Arr * parr , int val)
{
if (isfull(parr))
return false;
parr ->pbase[parr ->cnt] = val;
parr ->cnt ++;
return true;
}
输出结果为: 数组为空!
3477256 1245064 3477752
为什么不是输出1,2,3,跪求大神,真心感谢!
这道题解决了,只是没有财富值删不了,大家别看 展开
# include <stdlib.h>
# include <malloc.h>
struct Arr
{
int * pbase;
int len;
int cnt;
};
void initarr(struct Arr * parr,int len);
bool appendarr(struct Arr * parr , int val);
bool insertarr();
bool deletearr();
int get();
bool isempty(struct Arr * parr);
bool isfull();
void sortarr();
void showarr(struct Arr * parr);
void inversearr();
int main(void)
{
struct Arr arr;
initarr(&arr,6);
showarr(&arr);
appendarr(&arr,1);
appendarr(&arr,2);
appendarr(&arr,3);
showarr(&arr);
return 0;
}
void initarr(struct Arr * parr, int len)
{
parr ->pbase = (int *)malloc(sizeof(int) * len);
if (NULL == parr ->pbase){
printf("动态内存分配失败!\n");
exit(-1);
}
parr ->len = len;
parr ->cnt = 0;
}
bool isfull(struct Arr * parr)
{
if (parr ->cnt == parr ->len)
return true;
else
return false;
}
bool isempty(struct Arr * parr)
{
if (0 == parr ->cnt)
return true;
else
return false;
}
void showarr(struct Arr *parr)
{
if (isempty(parr))
printf("数组为空!\n");
else
for (int i = 0;i < parr->pbase[i]; i++)
printf("%d ",parr[i]);
}
bool appendarr(struct Arr * parr , int val)
{
if (isfull(parr))
return false;
parr ->pbase[parr ->cnt] = val;
parr ->cnt ++;
return true;
}
输出结果为: 数组为空!
3477256 1245064 3477752
为什么不是输出1,2,3,跪求大神,真心感谢!
这道题解决了,只是没有财富值删不了,大家别看 展开
7个回答
展开全部
第一个循环完成之后i=10
在第二个循环一开始,打印出a[10],但你的数组只有a[0]到a[9]十个数据,a[10]内存越界,是随机数
解决办法是在第一个循环完成后i=i-1即可
在第二个循环一开始,打印出a[10],但你的数组只有a[0]到a[9]十个数据,a[10]内存越界,是随机数
解决办法是在第一个循环完成后i=i-1即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案是D,(1,3)那是逗号运算,从左至右算,所以结果是3
3%5==3,“%”前后必须是整型的,3%5就是求余运算,如果是3/5,则是3/5==0。你懂了吗?
3%5==3,“%”前后必须是整型的,3%5就是求余运算,如果是3/5,则是3/5==0。你懂了吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
line 69: 函数showarr,parr是指向结构体的指针,你这里要访问的应该是它的成员数组parr->pbase
void showarr(struct Arr *parr)
{
if (isempty(parr))
printf("数组为空!\n");
else
for (int i = 0;i < parr->pbase[i]; i++)
printf("%d ",parr->pbase[i]);
}
ps1:这个问题在编译阶段通常会有警告的,因为printf格式符%d是整数,你给的parr[i]跟它是不匹配的,会引起“format %d expect argument of type”的警告;
ps2:代码写得不规范,这里仅指出一点,调的库是C的,bool变量用的C++的,在稍早些的C标准里面是没有的。这样写在很多编译器上是过不了的
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在c语言中,\是转义符号,其后面紧跟着一个字符,两者组合成一个新的字符,代表另外的意思,所以称为转义。
故,
\0表示换行或者回车的意思;在字符串中表示字符串的结尾。
上面的代码意思是,将读入的字符串,对有多少个字符进行统计,字符串最后一位为\0
故,
\0表示换行或者回车的意思;在字符串中表示字符串的结尾。
上面的代码意思是,将读入的字符串,对有多少个字符进行统计,字符串最后一位为\0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询