問題比較多,主要是兩個:
創(chuàng)新互聯(lián)公司主營博野網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,APP應(yīng)用開發(fā),博野h5小程序定制開發(fā)搭建,博野網(wǎng)站營銷推廣歡迎博野等地區(qū)企業(yè)咨詢
輸入的時候,用的格式和變量類型不匹配;
menu函數(shù)最后又調(diào)用menu,沒必要。
改了一下,你看看。
#include?stdio.h
#include?stdlib.h
struct?student
{
char?name[30];????/*名字肯定是字符串型*/
int?number[30];
char??sex;
int?age;
char?addr[30];
struct?student?*next;
};
int?a;
struct?student?*create()
{
struct?student?*phead=NULL;
struct?student?*pend,*pnew;
a=0;
pend=pnew=(struct?student?*)malloc(sizeof(struct?student));
printf("\n請輸入姓名\n");
scanf("%s",pnew-name);????/*name已經(jīng)是數(shù)組地址,不需要取地址*/
printf("\n請輸入號碼\n");
scanf("%s",pnew-number);????/*number是字符串,要用%s*/
printf("\n請輸入性別\n");
fflush(stdin);????/*退不到菜單問題在這里,要清空緩存*/
scanf("%c",pnew-sex);????/*char型要用%c*/
printf("\n請輸入年齡\n");
scanf("%d",pnew-age);
printf("\n請輸入地址\n");
scanf("%s",pnew-addr);????/*addr已經(jīng)是數(shù)組地址,不需要取地址*/
while(strcmp(pnew-number,?"0")?!=?0)????/*號碼是字符串,字符串比較要用strcmp*/
{
a++;
if(a==1)
{
pnew-next=phead;
pend=pnew;
phead=pnew;
}
else
{
pnew-next=phead;
pend-next=pnew;
pend=pnew;
}
pnew=(struct?student?*)malloc(sizeof(struct?student));
printf("\n請輸入姓名\n");
scanf("%s",pnew-name);
printf("\n請輸入號碼\n");
scanf("%s",pnew-number);
printf("\n請輸入性別\n");
fflush(stdin);
scanf("%c",pnew-sex);
printf("\n請輸入年齡\n");
scanf("%d",pnew-age);
printf("\n請輸入地址\n");
scanf("%s",pnew-addr);
}
free(pnew);
return?phead;
}
void?print(struct?student?*phead)
{
struct?student?*ptemp;
int?iindex=1;
printf("共有%d位聯(lián)系人\n",a);
ptemp=phead;
while(ptemp!=NULL)
{
printf("第%d位聯(lián)系人是:\n",iindex);
printf("\n姓名%s",ptemp-name);
printf("\n號碼%d",ptemp-number);
printf("\n性別%d",ptemp-sex);
printf("\n年齡%d",ptemp-age);
printf("\n地址%d",ptemp-addr);
ptemp=ptemp-next;
iindex++;
}
}
void?menu()
{
struct?student?*phead;
int?choice;
do
{
system("cls");
printf("????**************************************\n");
printf("????|???????歡迎使用通訊錄管理系統(tǒng)???????|\n");
printf("????|???????1--輸入聯(lián)系人的信息??????????|\n");
printf("????|???????2--添加聯(lián)系人信息????????????|\n");
printf("????|???????3--刪除聯(lián)系人信息????????????|\n");
printf("????|???????4--輸出聯(lián)系人信息????????????|\n");
printf("????|???????5--退出系統(tǒng)??????????????????|\n");
printf("????**************************************\n");
printf("????????????請選擇項目1-5\n");
scanf("%d",choice);
switch(choice)
{
case?1:
phead=create();
break;
#if?0
case?2:
phead=insert(phead);
break;
case?3:
delete(phead,2);
break;
#endif
case?4:
print(phead);
break;
case?5:
exit(1);
case?0:
break;
}
}
while(choice!=0);
//menu();????/*這里注掉,不需要再調(diào)一次*/
}
實現(xiàn)功能的代碼放在函數(shù)里面
這樣功能實現(xiàn)完 函數(shù)返回,自然回到菜單.
一般這樣
while(1)
{
print_menu();//打印菜單
scanf("%d",a);
switch(a)
{
case?1:
func1();
break;
....
default:
printf("input?error\n");
break;
}
}
如果只是想返回已經(jīng)寫好的主菜單頁面的話 可以直接在當(dāng)前函數(shù)中結(jié)束位置調(diào)用主菜單所在的函數(shù),,如果想輸入某值返回的話 就加個輸入提示 比如 在其他函數(shù)頁面加上“輸入0返回主菜單”就可以在任意時候 輸入0來返回 當(dāng)然實現(xiàn)的時候也是輸入語句加c語言如何使運行完一個選項后返回菜單 求解
1、如果只是想返回已經(jīng)寫好的主菜單頁面的話? 可以直接在當(dāng)前函數(shù)中結(jié)束位置調(diào)用主菜單所在的函數(shù),如果想輸入某值返回的話? 就加個輸入提示 比如 在其他函數(shù)頁面加上“輸入0返回主菜單”就可以在任意時候? 輸入0來返回? 當(dāng)然實現(xiàn)的時候也是輸入語句加判斷語句 加調(diào)用主菜單所在函數(shù),調(diào)用前先調(diào)用清屏函數(shù)。
2、例程:
#includestdio.h
int?menu()
{?int?rt;
char?str[256];
printf("1?****\n");
printf("2?****\n");
printf("3?****\n");
printf("4?****\n");
printf("5?退出程序\n");
printf("請選擇,輸入選項前面的數(shù)字后回車:?");?scanf("%s",str);
if?(?str[0]='1'??str[0]='5'?)?rt=str[0]-'0';?else?rt=0;
return?rt;
}
void?f1()?{}
void?f2()?{}
void?f3()?{}
void?f4()?{}
void?main()
{?int?s,loop=1;
while?(?loop?)
{?s=menu();
switch?(?s?)
{?case?1:?f1();?break;
case?2:?f2();?break;
case?3:?f3();?break;
case?4:?f4();?break;
case?5:?loop=0;?break;
default:?break;
}
}
}
分享名稱:c語言怎么返回菜單函數(shù) C語言怎么返回菜單
本文網(wǎng)址:http://m.kartarina.com/article32/hjjcsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、企業(yè)建站、小程序開發(fā)、網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)