iT邦幫忙

0

關於c語言的指標問題

  • 分享至 

  • xImage

https://ithelp.ithome.com.tw/upload/images/20180125/20108500eVZxGL4mCH.jpg這些黃白相間的玫瑰花每10公分的距離種一棵,小甜甜心理在想,隨便一個方塊中,會有多少棵玫瑰呢?

這次的作業,你要計算的是玫瑰的數量,在一個已知位置的矩形中,算出紅黃玫瑰各有多少棵。以下圖為例:

矩形左下角座標為(35, 35),右上角座標為(95, 75),算出的紅玫瑰有12棵,黃玫瑰也有12棵。

本作業基本要求如下:

  1. 完成函數void calcRose( int, int, int, int, int *, int *),輸入參數有六個,前四個整數為矩形座標,分別為x1, y1, x2, y2,而(x1, y1)為左下角,(x2, y2)為右上角座標。最後兩個參數為整數指摽,分別代表紅色與黃色玫瑰的數量。

  2. 程式的輸入為四個整數,以空白格開,範圍在0~4000(含)之間,當四個值都是 0 時,則程式停止。

  3. 程式的輸出為兩個整數,分別為紅色與黃色玫瑰的數量,各佔六格寬度。

  4. 主程式呼叫calcRose函數,在求出玫瑰數量後,依格式輸出結果。

範例輸入:
35 35 95 75
30 20 50 30
1000 1005 1008 1055
0 0 0 0

範例輸出:
12 12
3 3
3 2
我的回答是
#include<stdio.h>
#include<stdlib.h>
int calcRose(int x1, int y1, int x2, int y2)
{
int i, j, xi, yi,a,b;
a = b = 0;

xi = x1 % 10 || x1 == 0 ? x1 / 10  : (x1 / 10)+1;
yi = y1 % 10 || y1 == 0 ? y1 / 10  :( y1 / 10)+1 ;
for (i =x1; i <= x2; i++)
{ 
	for (j = y1; j <= y2; j++)
	{ 
		if ((i + j) % 2 == 1)
			a+=1;
		else
			b+=1;
}
	if (i==x2)
		return(a + b);
}

}
int main() {

int a, b, c, d;
typedef int(*op)(int,int,int,int);

op = calcRose;
scanf_s("%d %d %d %d", &a, &b, &c, &d);

printf("%d", op(a, b, c, d));



system("pause");
return 0;

}
請問是哪裡錯了 可以幫忙修正嗎!!!!!!急求


我已經把圖片插入進去 不好意思我也知道要void calcRose( int, int, int, int, int *, int *)可是我是只標出學長 跪求教學啊!!

fillano iT邦超人 1 級 ‧ 2018-01-25 11:26:37 檢舉
typedef int(*op)(int,int,int,int);

op = calcRose;

這兩行是要做什麼?不能直接呼叫calcRose嗎?
小魚 iT邦大師 1 級 ‧ 2018-01-25 12:04:27 檢舉
前面是黃白相關, 後面是紅玫瑰與黃玫瑰?
所以第一個種的是紅玫瑰還是黃玫瑰??
小魚 iT邦大師 1 級 ‧ 2018-01-25 12:08:22 檢舉
另外, 他不是說void calcRose( int, int, int, int, int *, int *)嗎?
可是你寫出來的不一樣...
後來兩個int * 因為指標的關係,
會直接改變原本的變數的值.
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答