用c语言写一个简单的菜单程序,一个主函数至少四个子函数急求!!就像这样的。

用c语言写一个简单的菜单程序,一个主函数至少四个子函数急求!!就像这样的。#include<stdio.h>#define N 4void fun1(int a[],int n) //建立数组{int i;printf("输入数组a[%d]\n",n);for(i=0;i<N;i++)scanf("%d",&a[i]);} void fun2(int a[],int n) //输出数组{int i;for(i=0;i<n;i++)printf("%d ",a[i]);printf("\n"); } void fun3(int a[],int n) //数组升序排序:选择排序法{int i,j,t;for(j=1;j<n;j++) //N次比较for(i=0;i<j;i++) //每趟中比j次 if(a[i]>a[j]) //与a[i]后面的元素进行比较{t=a[i];a[i]=a[j];a[j]=t;}} void fun4(int a[],int n) //查找数据{int b,i,k=0;printf("输入要查找的数: ");scanf("%d",&b);for(i=0;i<n;i++){if(a[i]==b)printf("a[%d]=%d\n",i,b);else k++; if(k==n) printf("没有这个数\n");}} void fun5(int a[],int n) //逆序输出{int i;for(i=n-1;i>=0;i--)printf("%d ",a[i]);printf("\n"); } void main() {int num,a[N]; printf("1.建立数组\n");printf("2.输出数组\n");printf("3.数组排序\n");printf("4.查找数据\n");printf("5.逆序输出\n");printf("0.退出程序\n"); while(1==1){printf("\n请选择功能:");scanf("%d",&num);switch(num){case 5:fun5(a,N);break;case 4:fun4(a,N);break;case 3:fun3(a,N);break;case 2:fun2(a,N);break;case 1:fun1(a,N);break;case 0:return ;}}}

分析:问题库(QAS)用外部的配置文件保存,每次运行前先载入库中已经建立的问题。然后再进入操作选择。完整代码如下:/*1.暂时不考虑汉字;2.可以用链表优化;3.将每一种操作封装成一个函数;*/#include#include#include#include////////////////////////////////////////////////////////////////////////////字符串最大长度#defineMAX_STR_LEN2048//题库上限#defineMAX_QAS_LEN1024//配置文件路径#defineQAS_FILE_PATH"d:\\qasconfig.txt"////////////////////////////////////////////////////////////////////////////问题结点typedefstructtagQASNode{charQuestion[MAX_STR_LEN];charAnswer[MAX_STR_LEN];doubleScore;boolIsAnswered;}QASNode;//问题库QASNode*g_QASLib[MAX_QAS_LEN];intg_QASIndex=0;////////////////////////////////////////////////////////////////////////////添加boolInsertToLib(char*pQuestion,char*pAnswer,doublescore){if(pQuestion==NULL||strcmp(pQuestion,"")==0||pAnswer==NULL)returnfalse;QASNode*pNewNode=(QASNode*)malloc(sizeof(QASNode));memset(pNewNode,0L,sizeof(QASNode));strcpy_s(pNewNode->Question,pQuestion);strcpy_s(pNewNode->Answer,pAnswer);pNewNode->Score=score;g_QASLib[g_QASIndex++]=pNewNode;returntrue;}//随机一个不重复的序号intGetQuestionIndex(){intretVal=-1;inttryCnt=0;while(tryCnt++IsAnswered){retVal=randVal;break;}}returnretVal;}//////////////////////////////////////////////////////////////////////////intmain(){//打开配置文件FILE*pStream=NULL;if(fopen_s(&pStream,QAS_FILE_PATH,"a+")!=0){printf_s("Opentheconfigfilefailed.\n");return-1;}//加载已有的QASfseek(pStream,0L,SEEK_END);intfileSize=ftell(pStream);fseek(pStream,0L,SEEK_SET);while(!feof(pStream)&&fileSize){if(g_QASIndexQuestion);printf_s("Inputanswer:");chartempA[MAX_STR_LEN]={0};fflush(stdin);gets_s(tempA,MAX_STR_LEN);if(strcmp(tempA,g_QASLib[currentIndex]->Answer)==0){printf("Right!\n");totalSocore+=g_QASLib[currentIndex]->Score;g_QASLib[currentIndex]->IsAnswered=true;}else{printf("Wrong!\n");}}else{printf("你已经答对了所有的问题!\n");}}break;case2:{if(currentIndex!=-1){printf("Quest:%s\nScore=%.2f\n",g_QASLib[currentIndex]->Question,g_QASLib[currentIndex]->Score);}else{printf("请先选择\"回答问题\"!\n");}}break;case3:{//一次只添加一个问题if(g_QASIndexQuestion,g_QASLib[i]->Answer,g_QASLib[i]->Score);}}break;default:break;}}printf("\n");return0;}运行起来后先建立问题库!
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-04-12
#include<stdio.h>
#define N 10
struct SSTUDENT { char name[20]; float score; };
int mMenu()
{ int rt=0;
char str[80];
  printf("\n\n*********************\n\n");
printf("  选择菜单\n");
printf("------------\n");
printf(" 1.输入成绩\n 2.排序输出\n 3.不及格列表\n 0.退出\n");
printf("请输入功能项前的数字:"); scanf("%s",str);
if ( str[0]>='0' && str[0]<='3' ) rt=str[0]-'0';
return rt;
}
int mInputScore(SSTUDENT *mStu,int n)
{ int i;
printf("\n请顺序输入学生姓名和成绩(用空格分开):\n"); 
for ( i=0;i<n;i++ ) { printf("%d) ",i+1); scanf("%s %f",mStu[i].name,&mStu[i].score); }
return n;
}
void mSort(SSTUDENT *mStu,int n)
{ int i,j,k,index[N];
  if ( n>0 && n<=N )

for ( i=0;i<n;i++ ) index[i]=i;
for ( i=0;i<n-1;i++ )
for ( j=i+1;j<n;j++ )
if ( mStu[index[i]].score<mStu[index[j]].score )
{ k=index[i]; index[i]=index[j]; index[j]=k; }
printf("\n成绩统计列表:\n");
for ( i=0;i<n;i++ ) printf("%s\t%.1f\n",mStu[index[i]].name,mStu[index[i]].score);
}
}
void mEList(SSTUDENT *mStu,int n)
{ int i;
if ( n>0 && n<=N )
{ printf("\n不及格学生名单:\n");
for ( i=0;i<n;i++ ) if ( mStu[i].score<60 ) printf("%s\n",mStu[i].name);
}
}
void main()
{
int loop=1,s,n;
SSTUDENT mStu[N];
n=0;
while ( loop )
{ s=mMenu();
switch ( s )
{
case 0: loop=0; break;
case 1: n=mInputScore(mStu,N); break;
case 2: mSort(mStu,n); break;
case 3: mEList(mStu,n); break;
default: break;
}
}
}

第2个回答  2018-04-12
1 函数sum应该定义在main之外. 2 参数类型应写在sum的括号里面. 而不是函数内部. 3 调用sum时, 应先声明. 4 调用sum参数应为x,y 而不是x+y 5 x y应先赋值或输入. 修正 void main(){ int x=1,y=2; int sum(int a, int b); printf("%d\n", sum(x,y...
第3个回答  2016-06-23
#includemain(){printf{"111+222=%d",111+222);getch();}追问

什么鬼

第4个回答  2018-04-12
嗯嗯 简单程序 4个子函数 我能实现
相似回答