#includestdio.h
創(chuàng)新互聯(lián)的客戶來自各行各業(yè),為了共同目標,我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領域包括成都網(wǎng)站建設、成都做網(wǎng)站、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺開發(fā)。
// 剩余不足問題
int SurplusShortage(int *p, int *q, int a, int b, int c, int d);
int main()
{
int a, b, c, d, p = 0, q = 0;
scanf("%d %d %d %d", a, b, c, d);
if (SurplusShortage(p, q, a, b, c, d))
{
printf("%d人 分 %d顆 糖\n", p, q);
printf("%d - (%d * %d) = %d\n", q, p, a, b);
printf("%d - (%d * %d) = -%d\n\n\n\n", q, p, c, d);
}
else
{
printf("None\n");
}
return 0;
}
int SurplusShortage(int *p, int *q, int a, int b, int c, int d)
{
int x = 0;
do
{
x++;
} while((a*x+b) != (c*x-d) x = 9999);
// p = 5
// q = 22
// 4 2
// 5 3
*p=x;
*q=a*x+b;
if(*p != 0 *p = 9999)
{
return 1;
}
else
{
return 0;
}
}
第三次答復:
void
createLine(struct
Node
*rear,int
item)
跟
void
createLine(struct
Node
**rear,int
item)
實際上本質(zhì)是一樣的,你理解引用就可以了,不過這個改法挺巧妙,只要改一個字符,比我的好。
類似于函數(shù)int
add(int
a)
int
b;
add(b);
你在add函數(shù)里面是可以改函數(shù)外變量b的值一樣。
你的函數(shù)加了,這樣就可以在createline函數(shù)里改函數(shù)外變量node的值了。
*******************************************
第二次答復:
我是一樓
輸出是:
1.--0
2.--0
3.--3d2470
tem_addr=3d24d8,tem_value=2
rear_add=3d24d8,rear_value=2
after
createLine:
1.--2
2.--2
3.--3d24d8
完全符合樓主的要求。
剛才有事走了,沒解釋一下,現(xiàn)在解釋一下。
void
createLine(struct
Node
*rear,int
item)
這樣子聲明函數(shù),你在函數(shù)里面只能改rear指針對應的對象值,而rear本身的值就是傳入的node的值你是改不了的,
所以函數(shù)里面的
rear=tem;
你知識改變了函數(shù)局部變量rear值,但改不了傳入的node的值。
所以得用指針的指針就可以改傳入的node的值了。
傳入的是node的地址,所以就可以根據(jù)node的地址改node的值了,當然也可以根據(jù)node的值改node對應的對象的值
(*rear)-next=tem;
就如我改的程序一樣。
好像ywsbbdf
-
舉人
四級
法也是一種改法,用的是引用,實際上跟指針的指針差不多,不過安全一點。不過引用一直理解起來比較難,不如指針的指針理解方便。
******************************************
第一次答復:
得用指針的指針
還有上面一處代碼tem-data=NULL;應該是tem-next=NULL;
修改代碼如下
#include
"stdio.h"
#include
"stdlib.h"
struct
Node{
int
data;
struct
Node
*next;
};
struct
Node
*createNode()
{struct
Node
*tem;
if((tem=(struct
Node*)malloc(sizeof(struct
Node)))==NULL)
{printf("error");
exit(1);
}
else{
tem-next=NULL;
}
return
tem;
}
void
createLine(struct
Node
**rear,int
item)
//指針的指針
{struct
Node
*tem;
if((tem=(struct
Node*)malloc(sizeof(struct
Node)))==NULL)
{printf("error");
exit(1);
}
tem-data=item;
printf("tem_addr=%x,tem_value=%d\n",tem,tem-data);
(*rear)-next=tem;
//這樣才能賦值
(*rear)=tem;
printf("rear_add=%x,rear_value=%d\n",*rear,(*rear)-data);
}
main()
{struct
Node
*Node;
Node=createNode();
printf("1.--%d\n2.--%x\n3.--%x\n",Node-data,Node-data,Node);
createLine(Node,2);
//Node指針的地址
printf("after
createLine:\n\n1.--%d\n2.--%x\n3.--%x\n",Node-data,Node-data,Node);
system("pause");
}
1:B
2:A
3:A
4:A
5:A
6:B
7:B
8:B
9:A
10:D
如果有誤,請通知我,謝謝
修改后的C語言程序:
#include?stdio.h?
void?triangle(int?g)
{
int?n=1,?m; /*?修改處1?*/
for(n;n=g;?n++)
{
for(m=1;m=2*n-1;m++) /*?修改處2?*/
putchar('*');
putchar('\n');
}
}
void?rectangle(int?g)
{
int?n=1,?m; /*?修改處3?*/
for(n;n=g;n++)
{
for(m=1;m=3;m++) /*?修改處4?*/
putchar('*');
putchar('\n');
}
}
int?main()
{
int?i,k;
printf("請輸入行數(shù)(大于3):");
scanf("%d",i);
printf("請選擇圖形:1---三角形??\t2---矩形\t3---小旗?:");
scanf("%d",k);
if(k==1)
{?
triangle(i);
}
if(k==2)
{?
rectangle(i);
}
if(k==3)
{?
triangle(i);
rectangle(i);
}
return?0;
}