給兩種方法:
成都創(chuàng)新互聯(lián)公司是一家專注于成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),類烏齊網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:類烏齊等地區(qū)。類烏齊做網(wǎng)站價(jià)格咨詢:028-86922220
1、用lookup函數(shù),如果用lookup由數(shù)字查文字之前要
對(duì)文字一列進(jìn)行升序排序。完成后就可以正確查找了
=LOOKUP(E1,$B$1:$B$3,$A$1:$A$3)
2、用vlookup方法,只提供方法,不做解釋了。
不用排序。
=VLOOKUP(E1,IF({1,0},$B$1:$B$3,$A$1:$A$3),2,0)
看錯(cuò)原型了,重新修改如下,希望可以幫到你。
char*
str_cat(char
*src,
char
*dec,
int
n
)
//
不考慮src的數(shù)組溢出
{
char
*s
=
src;
while(*src++)//
找到src的結(jié)束位置,就是0結(jié)尾的地方
;
//
分號(hào)
while(n--){
//
在src的結(jié)束位置開(kāi)始加入dec的字符,直到dec遇到0結(jié)束
*src
=
*dec++;
src++;
}
*src
=
0;
return
s;
}
計(jì)算器的c語(yǔ)言程序設(shè)計(jì)
一.功能概述:本程序能計(jì)算帶二重括號(hào)的計(jì)算式的結(jié)果,如輸入((3+2)*(3+2)+5)*((3+2)*(3+2)+5)*(5+5)= 將輸出結(jié)果為9000
二.源程序:
#includestdio.h
int w;
double B[4][40];
shuru(char *pt)
{
int i=0,m;
do
{
*(pt+i)=getchar();
m=i;
i++;
}
while(*(pt+m)!='=');
*(pt+m)='+';
*(pt+m+1)='=';
}
tlchli(char *p)
{
int a,b;
if(*p=='-'||*p=='+')
{
for(b=0;*(p+b)!='=';b++)
;
for(;b=0;b--)
*(p+b+1)=*(p+b);
*p='0';
}
else
{
for(a=1;*(p+a)!='=';a++)
{
if(*(p+a)=='-'||*(p+a)=='+')
{
if(*(p+a-1)=='('*(p+a+1)='0'*(p+a+1)='9')
{
for(b=0;*(p+a+b)!='=';b++)
;
for(;b=0;b--)
*(p+a+b+1)=*(p+a+b);
*(p+a)='0';
a=(a+1);
}
}
}
}
}
jgh(double B[4][40],char *p)
{
int a,b,c=0,d,e,f,h,i,k,n,m;
double g=0,j=0;
for(a=0;a4;a++)
for(b=0;b40;b++)
B[a]=0;
for(d=0;*(p+d)!='=';d++)
{
if(*(p+d)=='+'||*(p+d)=='-'||*(p+d)=='*'||*(p+d)=='/')
{
if(*(p+d)=='+') B[3][c]='+';
if(*(p+d)=='-') B[3][c]='-';
if(*(p+d)=='*') B[3][c]='*';
if(*(p+d)=='/') B[3][c]='/';
if(*(p+d-1)==')'*(p+d-2)==')')
{
B[0][c]=')';
B[1][c]=')';
}
if(*(p+d-1)==')'*(p+d-2)!=')')
B[1][c]=')';
for(e=d-1;*(p+e)'0'||*(p+e)'9';e--)
;
for(f=e;*(p+f)!='.'(f0)*(p+f)='0'*(p+f)='9';f--)
;
if(*(p+f)=='.')
{
for(h=f-1;(h=0)*(p+h)='0'*(p+h)='9';h--)
;
h++;
if(*(p+h-1)=='('*(p+h-2)=='(')
{
B[0][c]='(';
B[1][c]='(';
}
if(*(p+h-1)=='('*(p+h-2)!='(')
B[1][c]='(';
for(i=h;*(p+i)='0'*(p+i)='9';i++)
g=(*(p+i)-48)+g*10.0;
for(k=f+1;*(p+k)='0'*(p+k)='9';k++)
;
k--;
for(n=k;*(p+n)='0'*(p+n)='9';n--)
j=(j/10.0+(*(p+n)-48)/10.0);
B[2][c]=(g+j);
g=j=0;
}
else
{
for(m=e;*(p+m)='0'*(p+m)='9';m--);
m++;
if(*(p+m-1)=='('*(p+m-2)=='(')
{
B[0][c]='(';
B[1][c]='(';
}
if(*(p+m-1)=='('*(p+m-2)!='(')
B[1][c]='(';
for(i=m;*(p+i)='0'*(p+i)='9';i++)
g=(*(p+i)-48)+g*10.0;
B[2][c]=g;
g=0;
}
c++;
}
}
w=(c-1);
}
qkh1(double B[4][40])
{
int a=1,b,c,d,e,f,j,k;
for(b=0;bw;b++)
{
if(B[a]=='(')
{
for(c=b;B[a][c]!=')';c++)
;
for(d=b+1;B[a][d]!='('dc;d++)
;
if(B[a][d]=='(')
k=d;
else
k=b;
B[a][k]=0;B[a][c]=0;
for(e=k;ec;e++)
{
if(B[3][e]=='*')
{
B[2][e+1]=B[2][e]*B[2][e+1];
if(B[3][e-1]=='-'(e0))
{
B[2][e]=0;
B[3][e]='-';
}
else
{
B[2][e]=0;
B[3][e]='+';
}
}
if(B[3][e]=='/')
{
B[2][e+1]=B[2][e]/B[2][e+1];
if(B[3][e-1]=='-'e0)
{
B[2][e]=0;
B[3][e]='-';
}
else
{
B[2][e]=0;
B[3][e]='+';
}
}
}
for(f=k;fc;f++)
{
if(B[3][f]=='+')
{
B[2][f+1]=B[2][f]+B[2][f+1];
B[2][f]=0;B[3][f]='+';
}
if(B[3][f]=='-')
{
B[2][f+1]=B[2][f]-B[2][f+1];
B[2][f]=0;B[3][f]='+';
}
}
b=c-1;
if(B[3][k-1]=='*'k0)
{
for(;kc;k++)
{
B[3][k]='*';
B[2][k]=1.0;
}
}
if(B[3][k-1]=='/'k0)
{
for(;kc;k++)
{
B[3][k]='/';
B[2][k]=1.0;
}
}
}
}
for(j=0;j=w;j++)
{
if(B[1][j]!='('B[1][j]!=')')
B[1][j]=B[0][j];
}
}
qkh2(double B[4][40])
{
int a,b,c,d,e,f,j;
for(b=0;bw;b++)
{
if(B[1]=='(')
{
for(c=b;B[1][c]!=')';c++)
;
B[1]=0;B[1][c]=0;
for(e=b;ec;e++)
{
if(B[3][e]=='*')
{
B[2][e+1]=B[2][e]*B[2][e+1];
if(B[3][e-1]=='-'(e0))
{
B[2][e]=0;
B[3][e]='-';
}
else
{
B[2][e]=0;
B[3][e]='+';
}
}
if(B[3][e]=='/')
{
B[2][e+1]=B[2][e]/B[2][e+1];
if(B[3][e-1]=='-'(e0))
{
B[2][e]=0;
B[3][e]='-';
}
else
{
B[2][e]=0;
B[3][e]='+';
}
}
}
for(f=b;fc;f++)
{
if(B[3][f]=='+')
{
B[2][f+1]=B[2][f]+B[2][f+1];
B[2][f]=0;B[3][f]='+';
}
if(B[3][f]=='-')
{
B[2][f+1]=B[2][f]-B[2][f+1];
B[2][f]=0;B[3][f]='+';
}
}
if(B[3][b-1]=='*'b0)
{
for(;bc;b++)
{
B[3]='*';
B[2]=1.0;
}
}
if(B[3][b-1]=='/'b0)
{
for(;bc;b++)
{
B[3]='/';
B[2]=1.0;
}
}
}
}
}
jshjg(double B[4][40])
{
int b,d,e,f;
for(e=0;ew;e++)
{
if(B[3][e]=='*')
{
B[2][e+1]=B[2][e]*B[2][e+1];
if(B[3][e-1]=='-'e0)
{
B[2][e]=0;
B[3][e]='-';
}
else
{
B[2][e]=0;
B[3][e]='+';
}
}
if(B[3][e]=='/')
{
B[2][e+1]=B[2][e]/B[2][e+1];
if(B[3][e-1]=='-'e0)
{
B[2][e]=0;
B[3][e]='-';
}
else
{
B[2][e]=0;
B[3][e]='+';
}
}
}
for(f=0;fw;f++)
{
if(B[3][f]=='+')
{
B[2][f+1]=B[2][f]+B[2][f+1];
B[2][f]=0;B[3][f]='+';
}
if(B[3][f]=='-')
{
B[2][f+1]=(B[2][f]-B[2][f+1]);
B[2][f]=0;B[3][f]='+';
}
}
}
shuchu(double B[4][40],char *p)
{
printf("answer %f\n",B[2][w]);
}
main()
{
char *p,A[100];
shuru(A);
p=A[0];
tlchli(p);
jgh(B,p);
qkh1(B);
qkh2(B);
jshjg(B);
shuchu(B,p);
}
#include"string.h"
#include"graphics.h"
#include"conio.h"
#include"dos.h"
#include"time.h"
#include"stdlib.h"
#include"stdio.h"
#include"math.h"
/*調(diào)用一系列的庫(kù)函數(shù)*/
int py;/*定義一個(gè)全局變量*/
void mode(int py)/*mode函數(shù),用來(lái)設(shè)置的,來(lái)使用計(jì)算器的多種運(yùn)算功能*/
{ double x1,x2,ans,ans2;
if(py11)
{ printf("input x1,x2:");
scanf("%lf,%lf",x1,x2); }
else {printf("input x:");scanf("%lf",x1);}
switch(py)
{ case 6 : ans=x1+x2;printf("=%.3lf",ans);break;
case 7 : ans=x1-x2;printf("=%.3lf",ans);break;
case 8 : ans=x1*x2;printf("=%.3lf",ans);break;
case 9 : ans=x1/x2;printf("=%.3lf",ans);break;
case 10 : ans=pow(x1,x2);printf("x^%.1lf=%.3lf",x2,ans);break;
case 11 : ans=sqrt(x1);printf("=%.3lf",ans);break;
case 12 : ans=sin(x1);ans2=cos(x1);printf("sin x=%.3lf,cos x=%.3lf",ans,ans2);break;
case 13 : ans=asin(x1);ans2=acos(x1);printf("asin x=%.3lf,acos x=%.3lf",ans,ans2);break;
}
getch();clrscr();
}
int join(char *ps) /*join函數(shù)是輸入用戶名和密碼的,可于已注冊(cè)的用戶進(jìn)行匹配,注冊(cè)用戶可使用高級(jí)功能*/
{ char name[30],pass[20];
int len,i;
printf("ID:");
scanf("%s",name);
printf("\npass word:");
scanf("%s",pass);
clrscr();
for(i=0;istrlen(ps);i++)
if(pass[i]!=*(ps+i)) return 0;
return 1;
}
int menu(int pass)/*menu函數(shù),菜單*/
{int py=6;char key=0;
gotoxy(1,4);
printf("MENU\n\n");
printf("ADD +\n");
printf("SUB -\n");
printf("MUL *\n");
printf("DIV /");
gotoxy(10,6);printf("-");
if(pass) {gotoxy(1,10);printf("INV ^\n");
printf("EVO ~\n");
printf("SIN COS\n");
printf("ASIN ACOS\n");
printf("modify\n");
printf("QUIT"); }
else {gotoxy(1,10);printf("QUIT");}
while(key!=13) /*以下都是控制選擇箭頭的位子的語(yǔ)句*/
{ key=getch();
switch(key)
{ case 80 : gotoxy(10,py);printf(" ");if(!pass) py=py%5+6; else {++py;if(py==16) py=6;}break;
case 72 : gotoxy(10,py);printf(" ");--py; if(py==5) py=10+5*pass; break;
}
gotoxy(10,py);printf("-");
}
return py;
}
main() /*主函數(shù),關(guān)于函數(shù)分配和開(kāi)始動(dòng)畫(huà)的語(yǔ)句*/
{ int gd=DETECT,gm,x=320,y=10,i,l=10,h=10,t,co=3,v=0;
int pass;
FILE *fp;char ps[20];
initgraph(gd,gm,"");/*初始化圖形模式*/
registerbgidriver(EGAVGA_driver);
for(i=1;i31;co=(co++%10),v++,y+=2+v,i++)
{ delay(9e10);cleardevice();
setcolor(co);
setfillstyle(1,co);
sector(x,y,0,360,l,h);/*畫(huà)圓*/
}
for(i=1;i300;i++)
{ setcolor(i%10);
circle(x,y,i);
delay(1000);/*延時(shí)*/
}
cleardevice();/*清屏*/
closegraph();
fp=fopen("file1","r");
if(fp==NULL) pass=1;
else {fgets(ps,20,fp);
pass=join(ps);}
ld: py=menu(pass);
if(py==pass*5+10) {clrscr();printf("bye bye!");getch();return 0;}
else if(py!=14){clrscr();mode(py);} else { fp=fopen("file1","w");
printf("\npass word:");
scanf("%s",ps);
fputs(ps,fp);
fclose(fp); getch();clrscr();
}
goto ld; /*函數(shù)內(nèi)跳轉(zhuǎn)*/
}
#include stdio.h /*庫(kù)函數(shù)*/
struct s_node
{
int data;
struct s_node *next;
};
typedef struct s_node s_list;
typedef s_list *link;
link operator=NULL;
link operand=NULL;
link push(link stack,int value)
{
link newnode;
newnode=(link) malloc(sizeof(s_list));
if(!newnode)
{
printf("\nMemory allocation failure!!!");
return NULL;
}
newnode-data=value;
newnode-next=stack;
stack=newnode;
return stack;
}
link pop(link stack,int *value)
{
link top;
if(stack !=NULL)
{
top=stack;
stack=stack-next;
*value=top-data;
free(top);
return stack;
}
else
*value=-1;
}
int empty(link stack)
{
if(stack==NULL)
return 1;
else
return 0;
}
int is_operator(char operator)
{
switch (operator)
{
case '+': case '-': case '*': case '/': return 1;
default:return 0;
}
}
int priority(char operator)
{
switch(operator)
{
case '+': case '-' : return 1;
case '*': case '/' : return 2;
default: return 0;
}
}
int two_result(int operator,int operand1,int operand2)
{
switch(operator)
{
case '+':return(operand2+operand1);
case '-':return(operand2-operand1);
case '*':return(operand2*operand1);
case '/':return(operand2/operand1);
}
}
void main()
{
char expression[50];
int position=0;
int op=0;
int operand1=0;
int operand2=0;
int evaluate=0;
printf("\nPlease input the inorder expression:");
gets(expression);
while(expression[position]!='\0'expression[position]!='\n')
{
if(is_operator(expression[position]))
{
if(!empty(operator))
while(priority(expression[position])= priority(operator-data)
!empty(operator))
{
operand=pop(operand,operand1);
operand=pop(operand,operand2);
operator=pop(operator,op);
operand=push(operand,two_result(op,operand1,operand2));
}
operator=push(operator,expression[position]);
}
else
operand=push(operand,expression[position]-48);
position++;
}
while(!empty(operator))
{
operator=pop(operator,op);
operand=pop(operand,operand1);
operand=pop(operand,operand2);
operand=push(operand,two_result(op,operand1,operand2));
}
operand=pop(operand,evaluate);
printf("The expression [%s] result is '%d' ",expression,evaluate);
getch();
}
#include"stdio.h"
#include"conio.h"
#include"string.h"
#include"stdlib.h"
void look(); /*聲明查看函數(shù)*/
void save(); /*聲明保存函數(shù)*/
void search_name(); /*聲明按姓名查看函數(shù)*/
void search_number(); /*聲明按學(xué)號(hào)查看函數(shù)*/
void order(); /*聲明排序函數(shù)*/
void del(); /*聲明刪除函數(shù)*/
int openl(); /*聲明打開(kāi)函數(shù)*/
void welcome(); /*聲明我的個(gè)人信息函數(shù)*/
void type(); /*聲明輸入函數(shù)*/
void see(); /*聲明打開(kāi)并查看文件函數(shù)*/
struct student /*定義學(xué)生信息的結(jié)構(gòu)體類型*/
{
char num[15]; /*學(xué)號(hào)*/
char name[20]; /*姓名*/
char sex[4]; /*性別*/
int english; /*英語(yǔ)成績(jī)*/
int math; /*數(shù)學(xué)成績(jī)*/
int chinese; /*語(yǔ)文成績(jī)*/
float aver; /*平均成績(jī)*/
float sum; /*總成績(jī)*/
}stu[100];
int n; /*聲明一個(gè)全局變量*/
void main() /*主函數(shù)即用戶的操作界面*/
{
system("color 1E"); /*設(shè)計(jì)文本顏色*/
int b,flag=0; /*聲明局部變量*/
while(1) /*循環(huán)輸出以下信息*/
{
printf("\n\t\t\t歡迎來(lái)到學(xué)生成績(jī)管理系統(tǒng)!\n");
printf("\n\t\t\t\t ###制作\n");
printf("\t\t\t-------------------------------\n");
printf("\t\t\t1.鍵入學(xué)生的信息\n\n"); /*鍵入學(xué)生的信息*/
printf("\t\t\t2.查看錄入的學(xué)生信息\n\n"); /*查看錄入的學(xué)生信息*/
printf("\t\t\t3.按姓名查看學(xué)生的信息\n\n"); /*按姓名查看學(xué)生的信息*/
printf("\t\t\t4.按學(xué)號(hào)查看學(xué)生的信息\n\n"); /*按學(xué)號(hào)查看學(xué)生的信息*/
printf("\t\t\t5.按平均成績(jī)排序\n\n"); /*排序*/
printf("\t\t\t6.刪除學(xué)生信息\n\n"); /*刪除學(xué)生信息*/
printf("\t\t\t7.保存學(xué)生信息\n\n"); /*保存*/
printf("\t\t\t8.打開(kāi)文件\n\n"); /*打開(kāi)文件*/
printf("\t\t\t9.我的個(gè)人信息\n\n"); /*我的個(gè)人信息*/
printf("\t\t\t0.退出\n\n"); /*退出*/
printf("\t\t\t請(qǐng)輸入你的選擇:");
scanf("%d",b);
switch(b)
{
case 1:type();break; /*調(diào)用鍵入學(xué)生信息函數(shù)*/
case 2:look();break; /*調(diào)用查看函數(shù)*/
case 3:search_name();break; /*調(diào)用姓名查看函數(shù)*/
case 4:search_number();break; /*調(diào)用學(xué)號(hào)查看函數(shù)*/
case 5:order();break; /*調(diào)用排序函數(shù)*/
case 6:del();break;/*調(diào)用刪除函數(shù)*/
case 7:save();break;/*調(diào)用保存函數(shù)*/
case 8:see();break;/*調(diào)用打開(kāi)文件函數(shù)*/
case 9:welcome();break;/*調(diào)用我的個(gè)人信息函數(shù)*/
case 0:flag=1;break;/*退出SWITCH語(yǔ)句*/
default :printf("錯(cuò)誤!");
}
if(flag) break; /*如果選擇0就退出循環(huán)*/
}
}
void welcome() /*我的個(gè)人信息函數(shù)*/
{
system("CLS");
printf("\n\n\t\t------------個(gè)人信息------------"); /*在屏幕上輸出一下信息*/
printf("\n\n\n\n\t\t姓名:###");
printf("\t\t\tSex:#\n");
printf("\t\t年齡:#\n");
printf("\n\t\t\t--------學(xué)習(xí)經(jīng)歷--------\n\n\n");
printf("\t\t小學(xué):######\n\n");
printf("\t\t初中:#####\n\n");
printf("\t\tS高中:######\n\n");
printf("\t\t大學(xué):######\n\n");
printf("\n\n\t\t按任意鍵返回歡迎屏幕!");
getch(); /*按任意鍵返回主函數(shù)*/
}
void type() /*定義鍵入學(xué)生信息函數(shù)*/
{
system("CLS");
int i; /*定義局部變量*/
printf("\t\t輸出你想輸入的學(xué)生信息個(gè)數(shù):");
scanf("%d",n);
for(i=0;in;i++) /*輸入每個(gè)學(xué)生的信息*/
{
printf("\n\t\t\t----------------\n");
printf("\t\t\t學(xué)號(hào):");
scanf("%s",stu[i].num); /*輸入學(xué)號(hào)*/
printf("\t\t\t姓名:");
scanf("%s",stu[i].name); /*輸入姓名*/
printf("\t\t\t性別:");
scanf("%S",stu[i].sex); /*輸入性別*/
printf("\t\t\t英語(yǔ):");
scanf("%d",stu[i].english); /*輸入英語(yǔ)成績(jī)*/
printf("\t\t\t數(shù)學(xué):");
scanf("%d",stu[i].math); /*輸入數(shù)學(xué)成績(jī)*/
printf("\t\t\t語(yǔ)文:");
scanf("%d",stu[i].chinese); /*輸入語(yǔ)文成績(jī)*/
stu[i].aver=((float)stu[i].english+(float)stu[i].math+(float)stu[i].chinese)/3;/*計(jì)算平均成績(jī)*/
stu[i].sum=(float)stu[i].english+(float)stu[i].math+(float)stu[i].chinese;/*計(jì)算總成績(jī)*/
printf("\t\t\t平均成績(jī)=%4.1f\n",stu[i].aver); /*輸出平均成績(jī)*/
printf("\t\t\t總成績(jī)=%4.1f\n",stu[i].sum); /*輸出總成績(jī)*/
}
printf("\n\n\t\t\t按任意鍵返回菜單!!");
getch();
save();
}
void save() /*建立保存文件函數(shù)*/
{
system("CLS");
FILE *fp; /*定義文件型指針*/
int i;
if((fp=fopen("student.txt","wb"))==NULL) /*打開(kāi)輸出文件*/
{
printf("不能打開(kāi)文件!\n");
return; /*終止程序*/
}
for(i=0;in;i++) /*向student文件中寫(xiě)入信息*/
if(fwrite(stu[i],sizeof(struct student),1,fp)!=1)
printf("文件寫(xiě)入錯(cuò)誤\n");
fclose(fp); /*關(guān)閉文件*/
printf("\n\n\n\n\t\t\t學(xué)生信息保存成功!\n");
printf("\n\n\n\n\t\t\t按任意鍵返回菜單!!");
getch();
}
void look() /*定義查看函數(shù)*/
{
system("CLS");
int i;
//n=openl(); /*調(diào)用openl函數(shù)*/
printf("\t學(xué)號(hào)\t姓名\t性別\t英語(yǔ)\t數(shù)學(xué)\t語(yǔ)文\t平均成績(jī)\t總成績(jī)\n");
for(i=0;in;i++) /*輸出所有的學(xué)生信息*/
{
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
printf("\n\n\n\t\t\t按任意鍵返回菜單");
getch();
}
void search_name() /*按姓名查看函數(shù)*/
{
system("CLS");
int i;
char name[20]; /*聲明字符數(shù)組*/
printf("\t\t\t請(qǐng)輸入學(xué)生姓名:\n");
scanf("%s",name);
printf("\t學(xué)號(hào)\t姓名\t性別\t英語(yǔ)\t數(shù)學(xué)\t語(yǔ)文\t平均成績(jī)\t總成績(jī)\n");
for(i=0;in;i++)
if(strcmp(stu[i].name,name)==0) /*將輸入的姓名與結(jié)構(gòu)體中的姓名進(jìn)行比較*/
{
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
printf("\n\n\n\t\t\t按任意鍵返回菜單");
}
getch();
}
void search_number() /*定義按學(xué)號(hào)查看函數(shù)*/
{
system("CLS");
int i;
char number[15]; /*聲明字符數(shù)組*/
printf("\t\t\t請(qǐng)輸入學(xué)號(hào):\n");
scanf("%s",number);
printf("\t學(xué)號(hào)\t姓名\t性別\t英語(yǔ)\t數(shù)學(xué)\t語(yǔ)文\t平均成績(jī)\t總成績(jī)\n");
for(i=0;in;i++)
if(strcmp(stu[i].num,number)==0) /*將輸入的學(xué)號(hào)與結(jié)構(gòu)體中的學(xué)號(hào)進(jìn)行比較*/
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
printf("\n\n\n\t\t\t按任意鍵返回菜單");
getch();
}
void order() /*定義排序函數(shù)*/
{
system("CLS");
int i,j;
char a;
struct student temp; /*聲明結(jié)構(gòu)體變量*/
printf("\t學(xué)號(hào)\t姓名\t性別\t英語(yǔ)\t數(shù)學(xué)\t語(yǔ)文\t平均成績(jī)\t總成績(jī)\n");
for(i=0;in;i++) /*對(duì)數(shù)據(jù)進(jìn)行排序*/
{
for(j=i+1;jn;j++)
if(stu[i].sumstu[j].sum)
{
temp=stu[i];
stu[i]= stu[j];
stu[j]=temp;
}
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
getch();
printf("是否保存?(y or n)");
getchar();
scanf("%c",a);
if(a=='y') /*是否保存排序后的文件*/
save();
else
printf("退出");
getch();
}
void del() /*定義刪除學(xué)生信息函數(shù)*/
{
int i;
char a;
char name[20];
system("CLS");
printf("\t\t\t輸入學(xué)生名字:\n");
scanf("%s",name);
system("CLS");
printf("\t學(xué)號(hào)\t姓名\t性別\t英語(yǔ)\t數(shù)學(xué)\t語(yǔ)文\t平均成績(jī)\t總成績(jī)\n");
for(i=0;in;i++)
if(strcmp(stu[i].name,name)==0)
{
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
getch();
printf("真的刪除?(y or n)");
getchar();
scanf("%c",a);
if(a=='y') /*是否刪除該信息*/
{
for(;in;i++)
stu[i]=stu[i+1];
n=n-1;
printf("你已經(jīng)刪除信息");
}
else
printf("退出");
getch();
}
save();
}
int openl() /*定義打開(kāi)文件函數(shù)*/
{
system("CLS");
int i;
FILE *fp;
if((fp=fopen("student.txt","rb"))==NULL)
{
printf("Cannot open file.\n");
exit(0);
}
for(i=0;!feof(fp);i++)
fread(stu[i],sizeof(struct student),1,fp);
fclose(fp);
return(i-1);
}
void see() /*打開(kāi)并查看文件*/
{
system("CLS");
int i;
n=openl();
printf("文件打開(kāi)成功!\n");
printf("按任意鍵查看!\n");
getch();
printf("\t學(xué)號(hào)\t姓名\t性別\t英語(yǔ)\t數(shù)學(xué)\t語(yǔ)文\t平均成績(jī)\t總成績(jī)\n");
for(i=0;in;i++) /*輸出所有的學(xué)生信息*/
{
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
printf("\n\n\n\t\t\t按任意鍵返回菜單");
getch();
int All;
注意一下,All是全局變量,如果程序結(jié)束了,All的數(shù)值將消失。重新運(yùn)行程序,直接進(jìn)行瀏覽操作,這時(shí)候All=0,所以 for(numL=1;numL=All;numL++)根本不進(jìn)行。
可以把All單獨(dú)寫(xiě)進(jìn)一個(gè)文件保存,程序運(yùn)行時(shí)先讀取它?;蛘?/p>
while(fread(pL,sizeof(struct Phone),1,pLf)==EOF)判斷文件讀取到末尾,把文件東西先提前讀出,在判斷輸入的名字是否匹配。
這是一個(gè)for語(yǔ)句,根據(jù)for語(yǔ)句的形式:for(語(yǔ)句1;語(yǔ)句2;語(yǔ)句3){函數(shù)體;}
的執(zhí)行順序是:語(yǔ)句1,判斷語(yǔ)句2是否成立(非0為真,0為假)函數(shù)體,最后是語(yǔ)句3,(£)再進(jìn)行判斷語(yǔ)句2,是否成立,在執(zhí)行函數(shù)體,語(yǔ)句3
,在執(zhí)行(£)知道條件不滿足語(yǔ)句2,跳出循環(huán);如果,語(yǔ)句2是非邏輯表達(dá)式,即非判斷語(yǔ)句時(shí),循環(huán)體內(nèi),必有滿足條件的跳出語(yǔ)句
break,否則為死循環(huán);
這里的
for(k=1;k+1;k++)
可以這樣解釋:執(zhí)行循環(huán)for()語(yǔ)句時(shí),初始條件
K=1;之后執(zhí)行
K+1
(k=2,非0,條件為真繼續(xù)執(zhí)行)之后執(zhí)行函數(shù)體for下面花括號(hào){}的內(nèi)容,之后在執(zhí)行
K++(K自增1)
所以,明白for()語(yǔ)句的執(zhí)行順序就可以明白了,明白了嗎?