关于c语言 背包问题的一个小问题~~

关于C语言的一个小问题_百度知道
关于C语言的一个小问题
printlink(head).h&
p=p-&);NODE *link(int n# include &# include &
h=s;# include &n&#92,20);nTHE LIST ;
struct a *next=s;}printlink(NODE *h){
printf(&quot,int max){
NODE *h=NULL;data=rand()%(max-1);
s-&);%d &}
head=link(10;
printf(&\next=NULL;data);}请问这个小程序里面的 s-&
struct a *i++)
s=(NODE*)malloc(sizeof(NODE));next=p-&i++)
s=(NODE*)malloc(sizeof(NODE)),*p;n&
p=p-&next=s;# include &}
NODE,*s;NODE *link(int n.h&;n;\}main(){
printf(&data=rand()%(max-1);next=p-&gt.h&gt,*s;next=s;typedef struct a{typedef struct a{
p=p-&gt:\next=NULL;
s-&gt,int max){
NODE *h=NULL;# include &
s-& 这一段怎么理解 我看不太懂以下是整个程序的源程序# include &i&
s=(NODE*)malloc(sizeof(NODE)).h&gt.h&n\-&data=rand()%(max-1);
s=(NODE*)malloc(sizeof(NODE));
next=p-&gt
求详细解释。。。 可以留QQ号 我找你问
提问者采纳
新元素添加到末尾
p=p-&next=NULL即可;/next=NULL;next=s;i++)
s=(NODE*)malloc(sizeof(NODE)),放后面就只在最后的元素添加next
p-&next=sNODE *link(/}按照下面的更好看NODE *link(如果这里不要,*s;&#47,*p,int max){
NODE *h;/next=NULL;1处
p-&i&lt,因为1处每次循环的p的next都未定义的
&#47,*s;next,导致头结点的next未定义
for(i=1;/这句应放for循环前面;&#47,这里每次都设置next=NULL;n;
s-&n;data=rand()%(max-1),*p,p-&next=p-&
h=s;/防止一个元素都不添加;i++)
s=(NODE*)malloc(sizeof(NODE));/p重新指向末尾
s=(NODE*)malloc(sizeof(NODE)); s-&data=rand()%(max-1),则在for循环后加入语句p-&
h=s;防止一个元素都不添加;i&/next=NULL
s-&gt,导致头结点的next未定义
s-&h始终指向头结点;
s=(NODE*)malloc(sizeof(NODE));&#47,没添加元素都会改变next,int max){
NODE *h=NULL;/next=NULL,p始终指向尾结点
提问者评价
懂了 感谢啊 今天也和同学一起讨论了一下
你改的那种也可以
其实就是p-&next 本来就是空 可以当成NULL
其他类似问题
为您推荐:
c语言的相关知识
其他1条回答
next=s;&#47,double一样用于说明一个变量的类型。s-&/&#47,通常像这样的结构用于构造链表
NODE;/data这是结构体的引用表示s中的data变量,还可以用stypedef struct a/rand是个求随机数的函数;next=p-&gt.next,s-&typedef是把a结构体重新定义为NODE;data=rand()%(max-1);这是结构体的定义,之后a就可以像int,结构体c语言的书里面有的。
s-&next,next是个指针变量;/
p=p-&gt。这叫结构体类型.h中;
struct a *next,包含在stdlib,他存放的是地址值,也就是从此NODE代表a{
int data,它会返回一个随机数; 百度不让我留qq啊,一般在最后几章会讲到
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C/C++(21)
&&&&& 好久没写博客了
,一是懒,二是没什么可写,或者说最近真正看书的时间不多,时间也是花了的,都搞飞思卡尔了,不过调车这个东西,很耗时间的,但也确实有趣。
&&&&& 今天在同学那看到了KR的《The C Programming Language》,说来惭愧,一时说自己是搞软件的,但却没有看完这本最最经典的著作。
&&&&& 直接翻到第7章输入与输出,做第一个练习题7-1,题目是编写一个程序,根据它自身被调用时存放在argv[0]中的名字,实现将大写字母转换为小写字母或将小写字母转换为大写字母的功能。
程序很easy,实现如下(平台ubuntu)
#include &stdio.h&
#include &stdlib.h&
#include &ctype.h&
int main(int argc, char **argv)
int (*convcase[2])(int) = {toupper, tolower};
int result = EXIT_SUCCESS;
if(argc & 0)
if(toupper((unsigned char)argv[0][0]) == 'U')
while((ch = getchar()) != EOF)
ch = (*convcase[func])((unsigned char)ch);
putchar(ch);
fprintf(stderr, &Unknown name. Can't decide what to do./n&);
result = EXIT_FAILURE;
如果程序名第一个字母是u或U则为小写转大写,否则为大写转小写。
测试如下:
输入panghui,输出依旧是panghui,悲剧了。。。
一时间还真不知道错哪了,过程不说了,纠结了很久,也许高手一下就看出来了吧。
写个程序程序看看。
#include &stdio.h&
#include &stdlib.h&
int main(int argc, char* argv[])
printf(&test main parameter/n&);
printf(&argc:%d/n&, argc);
for(i=0;i&i++)
printf(&argv[%d]:%s/n&, i, argv[i]);
好了,问题很明显了,这个当时还真没想到,我以为./在Linux下无非是说明程序在当前目录中寻找而已,结果不是的哦,找到了问题,修改就很简单了,直接是argv[0][2]就可以了。
结果如下:
----------------------------------------------------------------------------------
转载我博客文章郑重声明:技术性网站著名原创作者即可转载,商业性网站必须经过我的同意才能转载,否则追究责任&&
pang123hui的博客:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:264185次
积分:4253
积分:4253
排名:第4421名
原创:145篇
转载:58篇
评论:135条
(1)(2)(3)(1)(8)(9)(5)(9)(31)(1)(14)(10)(13)(3)(2)(10)(2)(22)(17)(16)(14)(1)(4)(4)(1)C语言的一个小问题_问答百科_我爱台球网
我爱台球网-www.52tq.net
C语言的一个小问题
C语言的一个小问题 匿名网友 编程开发 &|&提问者:网友&|&提问时间: #include &stdio.h&#include &math.h&int main(){ ? ?int i, j,n; ? ?scanf("%d",&n); ? ?for(i=0;i&n*2;++i) ? ?{ ? ? ?for(j=0;j&n*2;++j) ? ? ? ?putchar(abs(i-(n-1))+abs(j-(n-1))+1&n ? ' ' : '0'+abs(i-(n-1))+abs(j-(n-1))+1); ? ? ?printf("\n"); ? ?}}这是输出菱形的一个简便程序,我现在初学C语言,不是特别懂,求指教!最后的 putchar(abs(i-(n-1))+abs(j-(n-1))+1&n ? ' ' : '0'+abs(i-(n-1))+abs(j-(n-1))+1);怎么解释? 为什么一定要用putchar,还有'0'有什么用?
最完美的答案:几个要点1.可以不用putchar,用printf的%c,但putchar更简单,C实现一个功能可有多个方法,这个要看编程者更熟悉或更愿意用哪个2. ?:是C的三目运算符,它可以替代if如n=(x&y)?a:b;相当于if (x&y) ? n=a;else n=b;3.'0'的作用是将一个数字转化为字符如数字1,加上'0'后就变成字符'1',因为putchar是输出字符的,所以必须转换 其他参考答案: C语言的一个小问题。 怎么样将字符数组内的一个字符赋值给...关于c语言的一个小问题 实参的个数关于c语言的一个小问题,为什么提示无法打开stdbool.h?关于初学C语言的一个小问题关于c语言的一个小问题, 5555, 不会啊。怎么办?共有 453 人关注过本帖
标题:问一个小问题
等 级:论坛游民
帖 子:80
专家分:40
结帖率:37.5%
&&已结贴√
&&问题点数:20&&回复次数:5&&&
问一个小问题
我在本论坛看到一道题:
&&& int x=17,y=5;
&&& x*=x++/--y;
问:x的值是多少??
我用VC做过试验后发现结果与答案一样,都是69。看到一位仁兄的解释为x++/--y就是17/4=4,x*=4就是17*4=68,x在这之后还会自加1,所以是69。看到这里,我发现自己对于--和++的理解不对,以此题为例,我认为x应该在执行x++后立即加1,而不是在整个语句结束之后加1,我知道自己的这种理解是错的,所提请教各位如何理解当作后缀的--和++。在我看过此题之后,我觉得作为后缀的--和++在其变量参与完与其自身有关的所有运算之后立即减1或加1,以此题为例,程序在执行完x++后,因为x还要参与乘法,所以不会立即加1,而是在语句结束之后加1。如果程序改为int a=1,x=17,y=5; ,由于x只参与x++的运算,所有x在x++后立即加1 。我的理解正确吗??请各位不吝赐教。谢谢~
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&a*=x++/--y;
搜索更多相关主题的帖子:
等 级:论坛游民
帖 子:80
专家分:40
如果程序改为int a=1,x=17,y=5; a*=x++/--y; ,由于x只参与x++的运算,所有x在x++后立即加1 。我的理解正确吗??请各位不吝赐教。谢谢~
等 级:新手上路
&&看见你的问题,我也有个问题。计算完“x++/--y”以后,“=”左边的x的值不会发生改变吗?&&我是个新手,随便问问,不好意思啊!
等 级:新手上路
帖 子:15
相当于a=a*(x/y-1);即a=4,x=18
等 级:论坛游民
帖 子:10
专家分:12
完全看不懂&&谁教一下&&或者留个言&&也行
等 级:黑侠
帖 子:110
专家分:670
这应该是运算符优先级的问题;首先++、--、=是自右向左运算,(即先算=右边,再算左边),/是自左向右;现在我们先算=右边,先取x=17,--y后,再算x/y=4,这样整个式子就化成了x*=4++,因为常量是不可以进行++运算的,所以++运算是x*=4后,再x++
版权所有,并保留所有权利。
Powered by , Processed in 0.020896 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved

我要回帖

更多关于 c语言 背包问题 的文章

 

随机推荐