#include<stdio.h>
int mian()
{
struct Vistor
{
char name[10];
int age;
int pay;
}; //定義了一個結構體,成員分別為名字,年齡,應付feiyong
typedef struct Vistor s; // 將結構體名字簡化為s
s vistor;
printf("請輸入游客的名字");
while(vistor.name!='/n') //當游客名字輸入為n時,停止輸入,否則一直輸入
scanf("%s",vistor.name);
printf("該游客應付費用為");
pay_ment(&vistor); //傳結構體地址呼叫函式
return 0;
}
void pay_ment(s *p) //定義一個函式計算各個年齡段的人應付款
{
if((*p).age>18) //年齡大于18則付款20
(*p).pay=20;
else //小于則免費
(*p).pay=0;
}
這個typedef為什么沒有把結構體名改為s呢!!!!!
報錯如下
||=== 構建檔案: "無目標" 在 "無專案" 中 (編譯器: 未知的) ===|
C:\Users\86147\Documents\電梯程式.c||In function 'mian':|
C:\Users\86147\Documents\電梯程式.c|13|warning: multi-character character constant [-Wmultichar]|
C:\Users\86147\Documents\電梯程式.c|13|warning: comparison between pointer and integer|
C:\Users\86147\Documents\電梯程式.c|16|warning: implicit declaration of function 'pay_ment' [-Wimplicit-function-declaration]|
C:\Users\86147\Documents\電梯程式.c|19|error: unknown type name 's'|
||=== 構建 失敗: 1 error(s), 3 warning(s) (0 分, 0 秒) ===|
uj5u.com熱心網友回復:
把結構體定義放在最外面 你在main函式中定義了結構體 就只能在main函式里面使用 其它函式無法使用。
順便說一句 int mian 改為int main
uj5u.com熱心網友回復:
除了一樓說的還要注意:while(strcmp(vistor.name, "n") ) //當游客名字輸入為n時,停止輸入,否則一直輸入
scanf("%s",vistor.name);
pay_ment函式要在使用之前進行定義
另外,根本就沒有輸入age,后面的pay_ment函式執行就沒有意義
基礎知識太弱了, 好好看看書
uj5u.com熱心網友回復:
#include<stdio.h>
struct Vistor
{
char name[10];
int age;
int pay;
};
typedef struct Vistor s; // 將結構體名字簡化為s
void pay_ment(s *p);
//int mian()
int main()
{
s vistor;
int i;
printf("請輸入游客的名字");
//while(vistor.name!='/n') //當游客名字輸入為n時,停止輸入,否則一直輸入
//scanf("%s",vistor.name);
i = 0;
while (i < 10 && scanf("%c", &vistor.name[i]) && vistor.name[i] != 'n')
i++;
if (i < 10)
vistor.name[i] = 0;
else
vistor.name[i-1] = 0;
vistor.age = 19;
printf("該游客應付費用為");
pay_ment(&vistor); //傳結構體地址呼叫函式
printf("%s %d %d\n", vistor.name, vistor.age, vistor.pay);
return 0;
}
void pay_ment(s *p) //定義一個函式計算各個年齡段的人應付款
{
if((*p).age>18) //年齡大于18則付款20
(*p).pay = 20;
else //小于則免費
(*p).pay=0;
}
供參考~
uj5u.com熱心網友回復:
#include<stdio.h>struct Vistor
{
char name[10];
int age;
int pay;
}; //定義了一個結構體,成員分別為名字,年齡,應付feiyong
typedef struct Vistor s; // 將結構體名字簡化為s
int main()
{
void pay_ment(s *);
s vistor;
do
{
printf("請輸入游客的名字\n");
scanf("%s,%d",vistor.name,&vistor.age);
printf("\n");
pay_ment(&vistor); //傳結構體地址呼叫函式
}
while(strcmp(vistor.name, "n")); //當游客名字輸入為n時,停止輸入,否則一直輸入
return 0;
}
void pay_ment(s *p) //定義一個函式計算各個年齡段的人應付款
{
if((*p).age>18) //年齡大于18則付款20
{
(*p).pay=20;
printf("該游客應付20元");
}
else //小于則免費
{
(*p).pay=0;
printf("該游客免費\n");
}
}
嘿嘿,哪個是剛開始寫的時候沒注意,細節上好多問題,bug好多
這個是我自己新寫的。編譯沒有問題,但是vistor.age在用scanf賦值時,沒有反應
不管我輸入大于18還是小于18,輸出都是免費,這是什么問題呢?
黑視窗的顯示是這樣的,程式還有點瑕疵,想先問下這是什么問題導致的
請輸入游客的名字
fgdk,56
該游客免費
請輸入游客的名字
fjgkd,12
該游客免費
請輸入游客的名字
fkd,555
該游客免費
請輸入游客的名字
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/107148.html
標籤:C語言
上一篇:將兩個順序表的交集(設定表中沒有重復元素),放在一個順序表中并輸出
下一篇:請看一下這一段代碼錯在什么地方
