iT邦幫忙

0

想請教C語言T/6G4XU04VU6的問題

不好意思因為我是初學程式,所以問題可能比較多
https://ithelp.ithome.com.tw/upload/images/20200820/20129336nDUCThGyaW.png
這題我寫出來是這樣子,不過星星沒有印出來...想很久不知道問題在哪
#include <stdio.h>
#include <stdlib.h>

int max(int x, int y, int z)
{
int r = x;
if(y > r)
r = y;
if(z > r)
r = z;
return r;
}
int min(int x, int y, int z)
{
int r = x;
if(y < r)
r = y;
if(z < r)
r = z;
return r;
}
int main() {
printf("Please enter three integers: \n");
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("The maximum integer is %d\n", max(a, b, c));
int d , e , i ;
for(d=1 ; e<=max(a, b, c)2-1 ; e++)
{
if (a % 2 !=0)
{
for(i=0 ; i<((max(a, b, c)2-1)-d)/2 ; i++)
printf(" ");
for(e=1 ; e<=d ; e++)
printf("
");
}
else
printf("\n");
}
printf("\n");
}
https://ithelp.ithome.com.tw/upload/images/20200820/20129336TBVnb3BOQB.png
#include <stdio.h>
我寫起來是這樣,答案是有出來的,不過關於題目提示float discount(int x); 不是太熟悉也不確定這樣是不是OK
int main(void) {
printf("please enter prices :\n");
float price,total = 0;
while(price != -1){
scanf("%f", &price);
if(price >= 500)
total += price
0.5;
else if(price >= 400)
total += price0.6;
else if(price >= 300)
total += price
0.7;
else if(price >= 200)
total += price0.8;
else if(price >= 100)
total += price
0.9;
else
total += price;
}
printf("The summery is %.2f\n",total+1);
printf("The Average price is %.2f\n",(total+1)/5);
return 0;
}
https://ithelp.ithome.com.tw/upload/images/20200820/20129336dLJWlzDtTa.png
我寫起來是這樣,不過跟題目似乎還少了回傳跟呼叫功能,也不太確定可以從哪裡修改
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
int a, b, c, D, spD, x1, x2;
printf("請輸入一元二次方程式的三個係數,如 aX^2 + bX + c = 0\n以a b c表示\n");
while(scanf("%d %d %d", &a, &b ,&c)==3){
D=(bb) - (4ac);
if(D>0){
spD=sqrt(D);
x1= (-b+spD)/(2
a);
x2= (-b-spD)/(2a);
if (x1==x2){
printf("此一元二次方程式的解為兩相等實根(重根) X=%d\n", x1);
}
else {
printf("此一元二次方程式的解為兩相異實根 X=%d或%d\n", x1, x2);
}
}
else if(D==0){
x1= (-b)/(2
a);
if(b==0){
printf("此一元二次方程式的解為兩相等實根 X=0");
}
else{
printf("此一元二次方程式的解為兩相等實根(重根) X=%d\n", x1);
}
}
else{
printf("此一元二次方程式無實數解\n");
}
}
printf("請輸入正確的三項係數");
system("PAUSE");
return 0;
}

不知道有沒有能請教的大神...

wrxue iT邦研究生 4 級 ‧ 2020-08-20 17:03:27 檢舉
只看了第一題,程式中沒有星號,為什麼會期待它出來...
float discount(int x)
傳入int資料型別的參數,然後傳回float資料型別的值
跟第一題大同小異
第一題是傳三個數進去進行比較,傳回最大的值
第二題的意思應該是傳一個數進去進行判斷,然後傳回他應該是需要被打幾折

第三題往下接力 ( X

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2020-08-20 17:31:59
最佳解答

第一題
https://ithelp.ithome.com.tw/upload/images/20200820/200017877BhpelG6mS.png

#include <stdio.h>
#include <stdlib.h>

int max(int x, int y, int z)
{
int r = x;
if(y > r)
r = y;
if(z > r)
r = z;
return r;
}
int min(int x, int y, int z)
{
int r = x;
if(y < r)
r = y;
if(z < r)
r = z;
return r;
}
int main() {
printf("Please enter three integers: \n");
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("The maximum integer is %d\n", max(a, b, c));
int d , e , i ;
for(d=1 ; d<=max(a, b, c) ; d++)
{
//if (a % 2 !=0)
//{
for(i=0 ; i<((max(a, b, c)*2-1)-((d-1)*2+1))/2 ; i++)
printf(" ");
for(e=1 ; e<=((d-1)2+1); e++)
printf("
");
printf("\n");
//}
//else
//printf("\n");
}
printf("\n");
}

第二題
https://ithelp.ithome.com.tw/upload/images/20200820/200017872uAomNvjJ2.png

#include <stdio.h>
float discount(int x) {
float fret;
if(x >= 500)
fret = x0.5;
else if(x >= 400)
fret = x
0.6;
else if(x >= 300)
fret = x0.7;
else if(x >= 200)
fret = x
0.8;
else if(x >= 100)
fret = x*0.9;
else
fret = x;

return fret;
}
int main(void) {
printf("please enter prices :\n");
float price,total = 0;
while(price != -1){
scanf("%f", &price);
total += discount(price);
// if(price >= 500)
// total += price0.5;
// else if(price >= 400)
// total += price
0.6;
// else if(price >= 300)
// total += price0.7;
// else if(price >= 200)
// total += price
0.8;
// else if(price >= 100)
// total += price*0.9;
// else
// total += price;
}
printf("The summery is %.2f\n",total+1);
printf("The Average price is %.2f\n",(total+1)/5);
return 0;
}

第三題
https://ithelp.ithome.com.tw/upload/images/20200820/20001787UqOKcBV640.png

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int b24ac(int a, int b, int c) {
int ret;
ret = bb - 4a*c;
return ret;
}

int main(){
int a, b, c, D, spD, x1, x2;
printf("請輸入一元二次方程式的三個係數,如 aX^2 + bX + c = 0\n以a b c表示\n");
while(scanf("%d %d %d", &a, &b ,&c)==3){
// D=(bb) - (4ac);
D = b24ac(a, b, c);
if(D>0){
spD=sqrt(D);
x1= (-b+spD)/(2
a);
x2= (-b-spD)/(2a);
if (x1==x2){
printf("此一元二次方程式的解為兩相等實根(重根) X=%d\n", x1);
}
else {
printf("此一元二次方程式的解為兩相異實根 X=%d或%d\n", x1, x2);
}
}
else if(D==0){
x1= (-b)/(2
a);
if(b==0){
printf("此一元二次方程式的解為兩相等實根 X=0");
}
else{
printf("此一元二次方程式的解為兩相等實根(重根) X=%d\n", x1);
}
}
else{
printf("此一元二次方程式無實數解\n");
}
}
printf("請輸入正確的三項係數");
system("PAUSE");
return 0;
}

看更多先前的回應...收起先前的回應...
peter1111 iT邦新手 5 級 ‧ 2020-08-20 17:53:22 檢舉

有了!!謝謝大神,我有再稍微做點修改,這題我想了快兩天
https://ithelp.ithome.com.tw/upload/images/20200820/20129336WwpNloRiXc.png
#include <stdio.h>
#include <stdlib.h>

int max(int x, int y, int z)
{
int r = x;
if(y > r)
r = y;
if(z > r)
r = z;
return r;
}
int min(int x, int y, int z)
{
int r = x;
if(y < r)
r = y;
if(z < r)
r = z;
return r;
}
int main() {
printf("Please enter three integers: \n");
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("The maximum integer is %d\n", max(a, b, c));
int d , e , i ;
for(d=1 ; d<=max(a, b, c) ; d++)
{
//if (a % 2 !=0)
//{
for(i=0 ; i<((max(a, b, c)*2-1)-((d-1)*2+1))/2 ; i++)
printf(" ");
for(e=1 ; e<=((d-1)2+1); e++)
printf("
");
printf("\n");
//}
//else
//printf("\n");
}
printf("\n");
}

peter1111 iT邦新手 5 級 ‧ 2020-08-20 18:07:29 檢舉

再次謝謝大神,三題在修改之後都有出來了
想再請問就是說星星題提示的函式
void print_star(int line_number); 我應該怎麼把它弄上去會比較好

#include <stdio.h>
#include <stdlib.h>

int a,b,c;

void print_star(int line_number) {
for(int i=0 ; i<((max(a, b, c)*2-1)-((line_number-1)*2+1))/2 ; i++)
printf(" ");
for(int e=1 ; e<=((line_number-1)2+1); e++)
printf("
");
printf("\n");
}
int max(int x, int y, int z)
{
int r = x;
if(y > r)
r = y;
if(z > r)
r = z;
return r;
}
int min(int x, int y, int z)
{
int r = x;
if(y < r)
r = y;
if(z < r)
r = z;
return r;
}
int main() {
printf("Please enter three integers: \n");
// int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("The maximum integer is %d\n", max(a, b, c));
int d , e , i ;
for(d=1 ; d<=max(a, b, c) ; d++)
{
//if (a % 2 !=0)
//{
print_star(d);
// for(i=0 ; i<((max(a, b, c)*2-1)-((d-1)*2+1))/2 ; i++)
// printf(" ");
// for(e=1 ; e<=((d-1)2+1); e++)
// printf("
");
// printf("\n");
//}
//else
//printf("\n");
}
printf("\n");
}

如果下次程式碼還是這樣直接貼上的話
不會再有人回答了
至少我不會

不好意思請教一下
第二題的不應該是只需回傳折扣數而已嗎/images/emoticon/emoticon06.gif

第二題的不應該是只需回傳折扣數而已嗎

沒錯
就看你希望 discount 做多少事而定
200元打八折,「折扣數」可能有四種寫法
(「打八折」有另一種寫法是 20% off,
所以discount應該是 80% 還是 20% ?)
我選擇第一種寫法
我猜你的意思應該是第三種寫法

moa = discount(200);//直接回傳答案 160
moa = 200 - discount(200);//200 - 40
moa = 200 * discount(200);//200 * 0.8
moa = 200 * (1 - discount(200));//200 * (1 - 0.2)

再回頭看了一次題目,題目講的是「折數」
那就是你說得對
應該用第三種或第四種寫法比較正確

以題目敘述就只想到了第三種
完全沒考慮到第四種寫法/images/emoticon/emoticon06.gif
感謝海綿大神的講解!/images/emoticon/emoticon41.gif

我要發表回答

立即登入回答