c语言课程设计源代码(C语言课程设计 小学生四则运算练习系统 源程序)

2024-07-20 15:30:50 6

c语言课程设计源代码(C语言课程设计 小学生四则运算练习系统 源程序)

本文目录

C语言课程设计 小学生四则运算练习系统 源程序

#include《stdio.h》#include《stdlib.h》#include《math.h》#define maxsize 50void trans(char str)/*将算术表达式str转换成后缀表达式exp*/{ struct { char data; /*存放运算符*/ int top; /*栈指针*/ }opr; /*定义运算符栈*/ char ch; int i=0,t=0; /*t作为exp的下标,i作为str的下标*/ opr.top=-1; /*初始化设定top的值为负一*/ ch=str;i++; /*逐个读取字符串中的字符*/ while (ch!=’\0’) /*str表达式未扫描完时循环*/ { switch(ch) /*判定*/ { case ’(’: opr.top++;opr.data=ch; /*判定为’(’号,则将其入栈opr*/ break; case ’)’: while (opr.data!=’(’) /*判定为’)’号*/ { exp; /*将栈opr中’(’以后的字符依次删除并存入数组exp中*/ opr.top--; t++; } opr.top--; /*将左括号删除*/ break; case ’+’: /*判定为加号或减号*/ case ’-’: while (opr.top!=-1 &&opr.data!=’(’) { exp; /*将当前栈opr中(以前的所有字符依次删除并存入数组exp中*/ opr.top--; t++; } opr.top++;opr.data=ch; /*将ch存入栈opr中*/ break; case ’*’: case ’/’: while (opr.data==’^’) { exp; /*将当前栈opr中连续的’*’或’/’或’^’依次删除并存入数组exp中*/ opr.top--; t++; } opr.top++;opr.data=ch; /*将ch存入栈opr中*/ break; case ’^’: /*判定为乘方号*/ while (opr.data==’^’) { exp; /*将当前栈opr中连续的’^’依次删除并存入数组exp中*/ opr.top--; t++; } opr.top++;opr.data=ch; /*将ch存入栈opr中*/ break; case ’ ’: break; /*过滤掉空格*/ default: while(ch》=’0’&& ch《=’9’||ch==’.’) /*判定为数字*/ { exp=ch;t++; /*将后续数字依次存入数组中*/ ch=str;i++; } i--; exp=’#’;t++; /*用#标示一个数值串结束*/ } ch=str;i++; } while (opr.top!=-1) /*此时str扫描完毕,栈不空时循环*/ { exp; t++;opr.top--; } exp=’\0’; /*给exp表达式添加结束标示*/ } float compvalue(char exp) /*计算后缀表达式的值*/ { struct { float data; /*存放数值*/ int top; /*栈指针*/ } st; /*定义数值栈*/ float d,d2;double po; char ch; int t=0,flag=1,i,count; /*t作为exp的下标*/ st.top=-1; ch=exp;t++; while (ch!=’\0’) /*exp字符串为扫描完时循环*/ { switch(ch) { case ’+’:st.data; /*执行两次退栈,并将计算结果入栈*/ st.top--;break; case ’-’:st.data; st.top--;break; case ’*’:st.data; st.top--;break; case ’/’: if(st.data!=0) st.data; else { printf("\n除零错误!\n"); exit(0); /*除数为零,异常退出*/ } st.top--;break; case ’^’: po=pow(st.data=(float)po;/*调用pow子函数进行乘方运算*/ st.top--;break; default: d=0; flag=1; d2=0; /*将数字字符转换成对应的数值存放到d中*/ while(ch》=’0’&&ch《=’9’&&flag) /*判定为数字字符*/ { d=10*d+ch-’0’; ch=exp;t++; if(ch==’.’) flag=0; } if(flag==0) { ch=exp;t++;count=0; while(ch》=’0’&&ch《=’9’) /*判定为数字字符*/ {d2=10*d2+ch-’0’; ch=exp;t++;count++; } for(i=1;i《=count;i++) d2=0.1*d2; } d+=d2; st.top++; st.data=d; } ch=exp;t++; } return st.data; }int main() { char str; /*str存储原算术表达式,exp存储对应的后缀表达式*/ printf("the arithmetic expression is:\n"); gets(str); trans(str,exp); printf("the postfix expression is:%s\n",exp); printf("the result is %g\n",compvalue(exp));}

谁有C语言课程设计贪吃蛇源代码,急需,谢谢!

程序源代码及注释#define N 200#include 《graphics.h》#include 《stdlib.h》#include 《dos.h》#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=50000;/*游戏速度自己调整*/struct Food{int x;/*食物的横坐标*/int y;/*食物的纵坐标*/int yes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/struct Snake{int x;int y;int node;/*蛇的节数*/int direction;/*蛇移动方向*/int life;/* 蛇的生命,0活着,1死亡*/}snake;void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DrawK(void);/*开始画面*/void GameOver(void);/*结束游戏*/void GamePlay(void);/*玩游戏具体过程*/void PrScore(void);/*输出成绩*//*主函数*/void main(void){Init();/*图形驱动*/DrawK();/*开始画面*/GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/}/*图形驱动*/void Init(void){int gd=DETECT,gm;registerbgidriver(EGAVGA_driver);initgraph(&gd,&gm,"c:\\program files\\winyes\\tc20h\\bgi");cleardevice();}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/void DrawK(void){/*setbkcolor(LIGHTGREEN);*/setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/for(i=50;i《=600;i+=10)/*画围墙*/{rectangle(i,40,i+10,49); /*上边*/rectangle(i,451,i+10,460);/*下边*/}for(i=40;i《=450;i+=10){rectangle(50,i,59,i+10); /*左边*/rectangle(601,i,610,i+10);/*右边*/}}/*玩游戏具体过程*/void GamePlay(void){randomize();/*随机数发生器*/food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/snake.life=0;/*活着*/snake.direction=1;/*方向往右*/snake.x=100;/*蛇头*/snake.x=100;snake.node=2;/*节数*/PrScore();/*输出得分*/while(1)/*可以重复玩游戏,压ESC键结束*/{while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/{if(food.yes==1)/*需要出现新食物*/{food.x=rand()%400+60;food.y=rand()%350+60;while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/food.x++;while(food.y%10!=0)food.y++;food.yes=0;/*画面上有食物了*/}if(food.yes==0)/*画面上有食物了就要显示*/{setcolor(GREEN);rectangle(food.x,food.y,food.x+10,food.y-10);}for(i=snake.node-1;i》0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/{snake.x;snake.y;}/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/switch(snake.direction){case 1:snake.x+=10;break;case 2: snake.x-=10;break;case 3: snake.y-=10;break;case 4: snake.y+=10;break;}for(i=3;i《snake.node;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/{if(snake.x){GameOver();/*显示失败*/snake.life=1;break;}}if(snake.x《55||snake.y》455)/*蛇是否撞到墙壁*/{GameOver();/*本次游戏结束*/snake.life=1; /*蛇死*/}if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/break;if(snake.x==food.y)/*吃到食物以后*/{setcolor(0);/*把画面上的食物东西去掉*/rectangle(food.x,food.y,food.x+10,food.y-10);snake.x=-20;/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/snake.node++;/*蛇的身体长一节*/food.yes=1;/*画面上需要出现新的食物*/score+=10;PrScore();/*输出新得分*/}setcolor(4);/*画出蛇*/for(i=0;i《snake.node;i++)rectangle(snake.x+10,snake.y-10);delay(gamespeed);setcolor(0);/*用黑色去除蛇的的最后一节*/rectangle(snake.x,snake.x-10);} /*endwhile(!kbhit)*/if(snake.life==1)/*如果蛇死就跳出循环*/break;key=bioskey(0);/*接收按键*/if(key==ESC)/*按ESC键退出*/break;elseif(key==UP&&snake.direction!=4)/*判断是否往相反的方向移动*/snake.direction=3;elseif(key==RIGHT&&snake.direction!=2)snake.direction=1;elseif(key==LEFT&&snake.direction!=1)snake.direction=2;elseif(key==DOWN&&snake.direction!=3)snake.direction=4;}/*endwhile(1)*/}/*游戏结束*/void GameOver(void){cleardevice(); PrScore();setcolor(RED);settextstyle(0,0,4);outtextxy(200,200,"GAME OVER");getch();}/*输出成绩*/void PrScore(void){ char str;setfillstyle(SOLID_FILL,YELLOW);bar(50,15,220,35);setcolor(6);settextstyle(0,0,2);sprintf(str,"score:%d",score);outtextxy(55,20,str);}/*图形结束*/void Close(void){ getch();closegraph();}

C语言课程设计不少于200行代码

#include "stdio.h"#include"stdlib.h"#include "conio.h"#include"string.h"struct SStudent{unsigned number;char name;char tele;struct SStudent * link;};void main(){ struct SStudent * CreateTable();void AppendToTable(struct SStudent * stu);void InsertToTable(struct SStudent * stu);void QueryTable(struct SStudent * stu, unsigned number);void SortTable(struct SStudent * stu);void PrintTable(struct SStudent * stu);void Save(struct SStudent * stu);void Load(struct SStudent * stu);void Help();void modi(struct SStudent *h);void search(struct SStudent *h);struct SStudent * student;unsigned number;char keyValue;student = CreateTable();//clrscr();system("cls");Help();printf("\n= ");while((keyValue = getche()) != ’q’ && keyValue != ’Q’ && keyValue != 27){puts("");switch(keyValue){case ’l’: case ’L’:PrintTable(student); break;case ’d’: case ’D’:printf("Please input the number you want delete: ");scanf("%d", &number);QueryTable(student, number);break;case ’a’: case ’A’:AppendToTable(student); break;case ’i’: case ’I’:InsertToTable(student); break;case ’s’: case ’S’:SortTable(student);puts("Sort complished! Please use command L to list.");break;case ’f’: case ’F’:search(student);break;case ’m’: case ’M’:modi(student);break;case ’v’: case ’V’:Save(student); break;case ’o’: case ’O’:Load(student); break;case ’h’: case ’H’:Help(); break;default: puts("Error command!");}printf("\n= ");}}struct SStudent * CreateTable(){struct SStudent * stu;stu = (struct SStudent *) malloc(sizeof(struct SStudent));stu-》number = 0;stu-》name = ’\0’;stu-》tele = ’\0’;stu-》link = NULL;return(stu);}void AppendToTable(struct SStudent * stu){struct SStudent * next, * last;int number;last = stu;while(last-》link) last = last-》link;printf("Please input the number (0 to quit): ");scanf("%d", &number);while(number){next = (struct SStudent *) malloc(sizeof(struct SStudent));next-》number = number;printf("Please input name: ");scanf("%s", next-》name);printf("Please input tele: ");scanf("%s", next-》tele);last-》link = next;last = last-》link;printf("\nPlease input the number (0 to quit): ");scanf("%d", &number);}last-》link = NULL;}void InsertToTable(struct SStudent * stu){struct SStudent * next, * last;int number;printf("Please input the number (0 to quit): ");scanf("%d", &number);while(number){next = (struct SStudent *) malloc(sizeof(struct SStudent));next-》number = number;printf("Please input name: ");scanf("%s", next-》name);printf("Please input tele: ");scanf("%s", next-》tele);last = stu;while(last-》link){if(last-》link-》number 》 next-》number){next-》link = last-》link;last-》link = next;break;}else last = last-》link;}printf("\nPlease input the number (0 to quit): ");scanf("%d", &number);}}void QueryTable(struct SStudent * stu, unsigned number){struct SStudent * temp, * next;next = stu;while(next-》link){if(next-》link-》number == number){temp = next-》link;next-》link = next-》link-》link;free(temp);}else next = next-》link;}}void PrintTable(struct SStudent * stu){stu = stu-》link;if(!stu){puts("The table is EMPTY!");return;}printf("number\tname\ttele\n");while(stu){printf("%3d\t", stu-》number);printf("%-s\t", stu-》name);printf("%-s\t", stu-》tele);printf("\n");stu = stu-》link;}}void SortTable(struct SStudent * stu){struct SStudent * next, * last, * temp;int flag;last = stu;while(last-》link){next = stu; flag = 1;while(next-》link != last-》link){if(next-》link-》number 》 last-》link-》number){temp = last-》link;last-》link = last-》link-》link;temp-》link = next-》link;next-》link = temp;flag = 0;break;}else next = next-》link;}if(flag) last = last-》link;}}void Save(struct SStudent * stu){char filename;FILE * fileSave;printf("Please input the filename you want save in: ");scanf("%s", filename);if((fileSave = fopen(filename, "wb")) == 0){printf("Cannot open file %s !\n", filename);return;}puts("Saveing ...");stu = stu-》link;while(stu){fwrite(stu, sizeof(struct SStudent), 1, fileSave);stu = stu-》link;}puts("Saveing is finished!");}void Load(struct SStudent * stu){char filename;《br》FILE * fileLoad;《br》struct SStudent * temp;《br》while(stu-》link)《br》{《br》temp = stu-》link;《br》stu-》link = stu-》link-》link;《br》free(temp);《br》}temp = (struct SStudent *) malloc(sizeof(struct SStudent));printf("Please input the filename you want load from: ");scanf("%s", filename);if((fileLoad = fopen(filename, "rb")) == 0){printf("Cannot open file %s !\n", filename);return;}puts("Loading ...");while(fread(temp, sizeof(struct SStudent), 1, fileLoad)){stu-》link = temp;《br》stu = stu-》link;《br》temp = (struct SStudent *) malloc(sizeof(struct SStudent));《br》}stu-》link = NULL;puts("loading is finished!");}void Help(){ puts(" *********************************************");puts(" * System Command Help *");puts(" *********************************************");puts(" * L = List all records *");puts(" * D = Delete a record seleced by number *");puts(" * A = Append records *");puts(" * I = Insert records *");puts(" * S = Sort records *");puts(" * F= Search records *");puts(" * M= Modi records *");puts(" * H = Show this help message *");puts(" * V = Save records to a file *");puts(" * O = Load records from a file *");puts(" * Q = Quit System *");puts(" *********************************************");}void modi(struct SStudent *h){ struct SStudent *p; /* 移动指针*/unsigned num; /*存放学号的变量*/// clrscr(); /*清屏幕*/ system("cls"); printf("please enter number for modifi\n"); scanf("%d",#); /*输入学号*/ p=h; /*将头指针赋给p*/ while( (p-》number!=num)&&p!=NULL) /*当记录的姓名不是要找的,且指针不为空时*/ p=p-》link; /*移动指针,指向下一结点*/ if(p==NULL) /*如果指针为空*/ printf("\nlist no %d student\n",num); /*显示没有该学生*/ else /*修改找到的记录信息*/ {printf("Please input new name: ");scanf("%s", p-》name);printf("Please input new tele: ");scanf("%s", p-》tele);printf("|number | name | tel | \n");printf("|----------|---------------|---------------|\n");printf("|%6d|%-10s|%12s|\n", p-》number,p-》name,p-》tele); }}void search(struct SStudent *h){ struct SStudent *p; /* 移动指针*/ char s; /*存放姓名的字符数组*/// clrscr(); /*清屏幕*/ system("cls"); printf("please enter name for search\n"); scanf("%s",s); /*输入姓名*/ p=h; /*将头指针赋给p*/ while(strcmp(p-》name,s)&&p!=NULL) /*当记录的姓名不是要找的,且指针不为空时*/ p=p-》link; /*移动指针,指向下一结点*/ if(p==NULL) /*如果指针为空*/ printf("\nlist no %s student\n",s); /*显示没有该学生*/ else /*显示找到的记录信息*/ { printf("\n\n***********************havefound***********************\n"); printf("|number | name | tel | \n");printf("|----------|---------------|---------------|\n");printf("|%10d|%-10s|%12s|\n", p-》number,p-》name,p-》tele);printf("****************************end***************************\n"); }}

c语言程序 课程设计 求大神给个源代码

int Conversion(char num, int t, int n){ int i,ii,j,k,m,x,b,c; double d,r; ii=0; p=0; memset(out,0,20); m=strlen(num);//求字符串的长度 x=m; for(k=0,j=0;k《m;k++)//主要是分段,以小数点为界限,只转换整数部分 { if(num==’.’) { x=k; break; } } for(j=x-1;j》=0;j--) { if(num==’-’) break; //符号的处理 if(num==’A’) r=10; else if(num==’B’) r=11; else if(num==’C’) r=12; else if(num==’D’) r=13; else if(num==’E’) r=14; else if(num==’F’) r=15; else r=num-’0’;//将字符转换成数字 p=p+r*(pow ((double)t,(double)(x-j-1)));//计算结果 } if(num==’.’) { for(j=x+1;j《m;j++) { if(num==’A’) r=10; else if(num==’B’) r=11; else if(num==’C’) r=12; else if(num==’D’) r=13; else if(num==’E’) r=14; else if(num==’F’) r=15; else r=num-’0’;//将字符转换成数字 p=p+r*(pow ((double)t, (double)(x-j))); } } //g_print("%f",p); if(n==10)//如果要转换成十进制 { if(num==’-’) { p=-p; } return 0; } else //如果要转换成其他进制 { k=(int)p; i=0; while(k)//判定需要转换的数是否变为0 { h=k%n;//取余,进行进制转换,但是顺序与正确值相反 k/=n;//转换一位之后进行相应的变化 } c=0; if(p!=(int)p)//选择性计算,如果是整数就不用进行这一步的计算了 { d=p-(int)p;//取小数部分 while(d!=0) { b=(int)(d*n);//算法为×N取整 d=d*n-b; c++; if(c》=10) break;//主要是控制小数后面万一出现无限小数的时候好跳出循环以免出现死循环 } } if(num==’-’) { out=’-’; ii++; } for(j=i-1;j》=0;j--,ii++)//反序输出,大于10的数字进行相应的变化 { if(h=’A’; else if(h=’B’; else if(h=’C’; else if(h=’D’; else if(h=’E’; else if(h=’F’; else if(h=’9’; else if(h=’8’; else if(h=’7’; else if(h=’6’; else if(h=’5’; else if(h=’4’; else if(h=’3’; else if(h=’2’; else if(h=’1’; else out=’0’; } if(p!=(int)p)//选择性输出,这样可以节约输出时间和程序的运行时间 { out=’.’; for(j=0;j《c;j++)//正序输出 { if(b=’A’; else if(b=’B’; else if(b=’C’; else if(b=’D’; else if(b=’E’; else if(b=’F’; else if(b=’9’; else if(b=’8’; else if(b=’7’; else if(b=’6’; else if(b=’5’; else if(b=’4’; else if(b=’3’; else if(b=’2’; else if(b=’1’; else out=’0’; ii++; } } //puts(out); return 0; } }***隐藏网址***

200积分急求一C语言课程设计源码(偶有详细要求)

#include 《c:\c.c》//头文件集合 C盘下的文件#define M 10struct date{ int year; int month; int day;};struct commodity{ char no; char name; float price; int number; struct date indate; struct date deadline;}a;void menu(){}int input(){}void output(){}void search(){}void sort(){}void insert(){}void del(){}void modify(){}main(){}//大体结构示意

求C语言课程设计源代码 急~!!

#include "stdio.h"#define MAX 100 /*定义输入数据的最大长度*/void countmax(int a,int N){ /*计算最值的函数*/ int minn=a; /*minn表最小值,maxx表最大值*/ for(int i=0;i《=N;i++){ /*N是实际输入数组的长度*/ if(a《minn) /*循环求最值*/ minn=a; else if(a》maxx) maxx=a; }printf("\n最小值:%d\n最大值:%d\n",minn,maxx);printf("\n————————————————————————\n");}void found(int a,int N){ /*查找函数*/ int Flag = 1,x; /*Flag用来标记是否查找成功,0表成功,1表未成功*/ printf("请输入你要查找的数: "); scanf("%d",&x); /*x是待查找的数*/ for(int i=0;i《=N;i++){ if(a==x){ printf("所找的数在数组中的位置是第 %d 位\n",i+1); Flag = 0; break; } } if(Flag == 1) printf("Not Found!\n"); printf("————————————————————————\n");}void deletedata(int a,int N){ /*删除操作函数*/ int Flag = 1,x,pos; /*Flag用来标记是否删除成功,0表成功,1表未成功,pos用来记录删除的位置*/ printf("请输入你要删除的数: "); scanf("%d",&x); for(int i = 0;i 《= N;i++){ /*在数组中循环查找所要删除的数*/ if(a==x){ for(int j=i;j《=N;j++) /*删除位置后的数全部向前移动一位*/ a; Flag = 0; N--; /*数组长度减1*/ pos = i; /*记录删除位置*/ break; } } if(Flag==1) printf("Not Found!"); else{ printf("删除成功!\n"); printf("所删除的数在数组中的位置是第 %d 位\n",pos+1); }printf("删除操作后的数据为:\n"); for(int j=0;j《=N;j++) printf("%d ",a);printf("\n————————————————————————\n");}void sumdata(int a,int N){ /*求奇数和偶数函数*/ int SUM1=0,SUM2=0,N1=0,N2=0; /*SUM1表示偶数之和,N1表偶数个数**SUM2表示奇数之和,N2表奇数个数*/ for(int i=0;i《=N;i++){ if(a%2==0){ N1++; SUM1 = SUM1 + a; } else{ N2++; SUM2 = SUM2 + a; } } printf("数据中的偶数个数为: %d 个,平均值为: %d\n",N1,SUM1/N1); printf("数据中的奇数个数为: %d 个,平均值为: %d\n",N2,SUM2/N2); printf("————————————————————————\n");}int main(){int i=0,k,N,a,data; /*k用来标记所选择的操作,data表示输入的数据,a数组用来存储输入的数据*/printf("请输入数据:\n");scanf("%d",&data);while(data!=0){ a=data; scanf("%d",&data); N=i++;}printf("\n您输入了%d个数据,如下所示:\n",N+1);for(i=0;i《=N;i++) printf("%d ",a);printf("\n————————————————————————");printf("\n\n请选择下面的一个项目:\n");printf("1、求最值\n2、查找\n3、删除\n4、统计及平均\n5、退出\n");printf("————————————————————————\n");scanf("%d",&k);switch(k){case 1: countmax(a,N); break;case 2: found(a,N); break;case 3: deletedata(a,N); break;case 4: sumdata(a,N); break;case 5: break;default: break;}return 0;}

c语言课程设计代码

/* 2013年12月23日 12:43:46 目的:计算器的实现 */ # include 《stdio.h》 # include 《ctype.h》 # include 《math.h》 char get_choice(void); //获取用户输入的选项,并建立目 char get_first(void); //获取用户输入的选项,并剔除错误输入 float get_int(void); //获取用户输入的计算值 float add(void); //定义加法函数 float subtraction(void); //定义减法函数 float multiplication(void); //定义乘法函数 float division(void); //定义除法函数 float extract(void); //定义开方函数 float square(void); //定义平方函数 float cube(void); //定义立方函数 int count = 0; int main(void) { char choice; printf("***欢迎使用由小钱制作的计算器***\n"); choice = get_choice(); while(choice != ’q’) { switch(choice) { case ’a’: add(); break; case ’b’: subtraction(); break; case ’c’: multiplication(); break; case ’d’: division(); break; case ’e’: extract(); break; case ’f’: square(); break; case ’g’: cube(); break; default : printf("您输入有误,请重新输入:"); break; } fflush(stdin); choice = get_choice(); } printf("bye"); return 0; } //获取用户输入的选项,并建立目录 char get_choice(void) { char ch; int a = 0; //建立目录 printf("\n--------------------------------\n"); printf("a. 加法\t\t\tb. 减法\nc. 乘法\t\t\td. 除法\n"); printf("e. 开方\t\t\tf. 平方\ng. 立方\t\t\tq. 退出\n"); printf("--------------------------------\n"); printf("请输入你的选项:"); ch = get_first(); while(ch == ’ ’ || ch == ’\n’ || ch == ’\t’) ch = get_first(); //判断用户输入的选项是否有误 while((ch《’a’ || ch》’g’) && ch !=’q’) { putchar(ch); printf(" 你输入的选项有误,请重新输入:"); ch = get_first(); } return ch; } //获取用户输入的选项,并剔除错误输入 char get_first(void) { char ch; ch = getchar(); //剔除由用户输入选项时产生的换行符 while(ch == ’\n’) { ch = getchar(); } return ch; } //获取用户输入的计算值 float get_int(void) { float input; char ch; int a; if(count == 0) printf("亲!请输入数值:"); if(count == 1) printf("亲!请输入第一个数值:"); if(count == 2) printf("亲!请输入第二个数值:"); a = scanf("%f", &input); //判断用户的输入是否为一个数值 while(a != 1) { //剔除用户输入错误的字符 while((ch = getchar()) != ’\n’) { putchar(ch); printf(" 不是一个数值,请输入例如3、111.2、或者-1"); a = scanf("%f", &input); } } return input; } //定义加法函数 float add(void) { float i, j, sum; count = 0; count = count+1; i = get_int(); count = count+1; j = get_int(); sum = i + j; printf("%.2f + %.2f = %.2f\n", i, j, sum); return sum; } //定义减法函数 float subtraction(void) { float i, j, sum; count = 0; count = count+1; i = get_int(); count = count+1; j = get_int(); sum = i - j; printf("%.2f - %.2f = %.2f\n", i, j, sum); return sum; } //定义乘法函数 float multiplication(void) { float i, j, sum; count = 0; count = count+1; i = get_int(); count = count+1; j = get_int(); sum = i * j; printf("%.2f * %.2f = %.2f\n", i, j, sum); return sum; } //定义除法函数 float division(void) { float i, j, sum; count = 0; count = count+1; i = get_int(); count = count+1; j = get_int(); //判断除数是否为0 while(j == 0) { printf("除数不能为0\n请重新输入!!!\n"); j = get_int(); } sum = i / j; printf("%.2f / %.2f = %.2f\n", i, j, sum); return sum; } //定义开方函数 float extract(void) { float i, sum; count = 0; i = get_int(); //判断开方数是否小于0,如果小于0,则让用户重新输入 while(i 《 0) { printf("请输入大于0的数值\n"); i = get_int(); } sum = sqrt(i); printf("%.2f的开方等于%.2f\n", i, sum); return sum; } //定义平方函数 float square(void) { float i, sum; count = 0; i = get_int(); sum = i * i; printf("%.2f的平方等于%.2f\n", i, sum); return sum; } //定义立方函数 float cube(void) { float i, sum; count = 0; i = get_int(); sum = i * i * i; printf("%f的立方等于%.3f\n", i, sum); return sum; }

c语言课程设计—教师工作量管理系统源代码

#include《stdio.h》 //标准输入、输出头文件#include《string.h》 //包含字符串函数处理头文件#include《stdlib.h》 //包含动态存储与释放函数头文件#include《iostream》 // system#define TEALEN sizeof(teanode) //教师信息结构体长度#define LEN sizeof(Lnode) //链表节点长度#define MAX 10int SAME;typedef struct teanode{ char name; //教师姓名 int lesson; //授课工作量 int exper; //实验工作量 int cdesign; //课程设计工作量 int gdesign; //毕业设计工作量 int total; //总工作量 int pos; //排序位置}teanode,*linknode;//教师信息结构体typedef struct Lnode{ char no; //教师编号 linknode info; //节点信息详细指针指向教师信息结构体 struct Lnode *prior,*next; //双向链表指针域}Lnode,*linklist;//链表节点void newLnode();void initlist();void prin();void initlist(linklist *T){ *T=(linklist)malloc(LEN); (*T)-》info=(linknode)malloc(TEALEN);//为头结点申请空间 (*T)-》prior=*T;//设置头结点的前驱指针 (*T)-》next=*T;//设置头结点的后继指针}//初始化双向循环链表void newLnode(linklist*p){ *p=(linklist)malloc(LEN);//新节点 if(!p) { printf("申请节点失败"); exit(0); } (*p)-》info=(linknode)malloc(TEALEN);}void prin(linklist * L){ if(L==NULL) { printf("没有可以显示的信息\n"); return; } linklist p=(*L)-》next; // printf("********************************************************************************\n"); printf("教师编号 教师姓名 工作量排名 工作总量\n\n"); while (p!=*L) { printf("%7s%9s%10d%10d\n",p-》no,p-》info-》name,p-》info-》pos,p-》info-》total); p=p-》next; }}void main() { linklist input(linklist L); linklist sort(linklist L); int j;//用来判断是否结束 linklist L; initlist(&L); do{ system("cls");//清屏函数 printf(" ★--- 您好,欢迎进入教师工作量统计系统! ---★\n"); printf("================================================================================\n"); printf( " -------- ☆ 1.输入教师工作量信息 ☆-------- \n\n" " -------- ☆ 2.进行教师工作量排序 ☆-------- \n\n" " -------- ☆ 3.显示教师工作量情况 ☆-------- \n\n" " -------- ☆ 0.退出 ☆-------- \n\n"); printf("================================================================================\n"); printf("请在0-3中选择以回车键结束:\n\n"); scanf("%d",&j); switch(j) { case 1: L=input(L); prin(&L); printf("录入结束\n"); system("pause"); break; case 2: L=sort(L); printf("排序成功\n"); system("pause"); break; case 3: prin(&L); system("pause"); break; case 0:; break; } }while(j!=0); printf("谢谢使用,再见!\n");}//主函数结束linklist input(linklist L){ linklist workload(linklist p); linklist adworkload(linklist p); linklist searinsert(linklist L,linklist p); linklist sort(linklist L); int flag=0; char no; linklist p; p=L-》next; for(;;) { if(flag==1) break; printf("请输入教师编号输入@结束:\n\n"); scanf("%s",no); if(no==’@’) { flag=1; break; } while (p!=L)//当链表不空时 { if (strcmp(p-》no,no)==0) { printf("该教师编号已存在,输入需要增加的工作量\n\n"); p-》prior-》next=p-》next; p-》next-》prior=p-》prior;//删除P, p=adworkload(p);//修改P中的详细信息info指针域的内容 L=searinsert(L,p);//重新查找P的位置插入链表L中 return L; } p=p-》next; }//跳出循环则该教师编号第一次输入 newLnode(&p); strcpy(p-》no,no); printf("请输入教师姓名:\n"); scanf("%s",p-》info-》name); p=workload(p); L=searinsert(L,p); } return L;}linklist adworkload(linklist p){ int a; printf("请输入增加的授课工作量:\n"); scanf("%d",&a); p-》info-》lesson+=a; printf("请输入增加的实验工作量:\n"); scanf("%d",&a); p-》info-》exper+=a; printf("请输入增加的课程设计工作量:\n"); scanf("%d",&a); p-》info-》cdesign+=a; printf("请输入增加的毕业设计工作量:\n"); scanf("%d",&a); p-》info-》gdesign+=a; //p-》info-》pos=0; p-》info-》total=p-》info-》lesson+p-》info-》exper+p-》info-》cdesign+p-》info-》gdesign;//求总工作量 return p;}linklist workload(linklist p){ printf("请输入该教师的授课工作量:\n"); scanf("%d",&(p-》info-》lesson)); printf("请输入该教师的实验工作量:\n"); scanf("%d",&(p-》info-》exper)); printf("请输入该教师的课程设计工作量:\n"); scanf("%d",&(p-》info-》cdesign)); printf("请输入该教师的毕业设计工作量:\n"); scanf("%d",&(p-》info-》gdesign)); p-》info-》pos=0; p-》info-》total=p-》info-》lesson+p-》info-》exper+p-》info-》cdesign+p-》info-》gdesign;//求总工作量 return p;}linklist searinsert(linklist L,linklist p){//将P放置L中合适的位置 linklist tra;//遍历指针 linklist x;//P插入位置的前一个节点指针 tra=L-》next;//指向第一个节点 if ((L-》next==L)||(p-》info-》total》tra-》info-》total)) //第一次插入或者大于表头的情况 { x=L;//插入表头 } else if (p-》info-》total《L-》prior-》info-》total) //小于表尾的情况 { x=L-》prior;//插入表尾 } else { while (p-》info-》total《tra-》info-》total) tra=tra-》next; x=tra-》prior;//正常查找情况 } //将P接到X后面 p-》next=x-》next; p-》prior=x; x-》next=p; p-》next-》prior=p; return L;}linklist sort(linklist L) { linklist sortfisrtlast(linklist L,linklist first,linklist last,int n); int i; for(i=0;i《MAX;i++) SAME linklist p,first,last; int x,n=1,k; p=L-》next; while (p!=L) { x=1; while ((p-》next-》info-》total!=p-》info-》total)&&p!=L) { p-》info-》pos=n; p=p-》next; n++; } if (p==L) return L; else while ((p-》next-》info-》total==p-》info-》total)&&p!=L) { k=n; if (x==1) { //k=n; first=p; } p-》info-》pos=k; x++; p=p-》next; p-》info-》pos=k; //保存X SAME=x; } n+=x-1; if (p==L) return L; else { last=p; p=last-》next; L=sortfisrtlast(L,first,last,k);//调用fisrt last函数 } }}linklist sortfisrtlast(linklist L,linklist first,linklist last,int n){ if (first==last) return L; linklist head,posa,posb,p,t; linklist tra;//遍历指针 linklist x;//P插入位置的前一个节点指针 posa=first-》prior;//接入位置a posb=last-》next;//接入位置b posa-》next=last-》next; last-》next-》prior=posa; last-》next=NULL; first-》prior=NULL;//删除这段 initlist(&head); p=first; while (p!=NULL) { tra=head-》next; if ((head-》next==head)||strcmp(p-》no,tra-》no)《0)//第一次插入或者小于当前节点 x=head; else if (strcmp(p-》no,head-》prior-》no)》0) x=head-》prior; else { while(strcmp(p-》no,tra-》no)》0) tra=tra-》next; x=tra-》prior; } t=p;//将P接到X后 p=p-》next; t-》next=x-》next; t-》prior=x; x-》next=t; t-》next-》prior=t;} printf("********************************************************************************\n");// printf("================================================================================\n"); printf("工作量名次相同的教师名单:(按编号排序)\n\n"); printf("名次为%d教师共有%d名\n\n",n,SAME); prin(&head); first=head-》next; last=head-》prior; posa-》next=first; first-》prior=posa; posb-》prior=last; last-》next=posb; return L;}

c语言课程设计源代码(C语言课程设计 小学生四则运算练习系统 源程序)

本文编辑:admin

更多文章:


e520(e52070v2)

e520(e52070v2)

e52070v2关于“E52070 v2”的有关内容,目前我所掌握的知识仅能提供一个基本的概述。下面是一些可能的相关信息:1. 处理器型号:E52070 v2 可能指的是一种特定型号的CPU(中央处理器)。根据我的知识,这个型号很可能是一款

2024年7月27日 14:05

thinkpad x220(thinkpad x220续航能力)

thinkpad x220(thinkpad x220续航能力)

thinkpad x220续航能力ThinkPad X220是联想的一款经典商务笔记本电脑。关于其续航能力,以下是相关的详细解释:1. 电池配置: * ThinkPad X220的续航能力主要取决于其电池配置,包括电池容量和类型。 *

2024年7月15日 03:18

二手手机估价(二手手机估价查询)

二手手机估价(二手手机估价查询)

二手手机估价查询关于“二手手机估价查询”的相关内容,以下是条理清晰的解释:1. 定义: * 二手手机估价查询是指通过特定的平台或工具,对二手手机进行价值评估的过程。 * 用户可以通过输入手机型号、品牌、使用情况等信息,获取一个大致的估价

2024年7月26日 07:06

办公笔记本电脑推荐(便携办公笔记本电脑推荐)

办公笔记本电脑推荐(便携办公笔记本电脑推荐)

便携办公笔记本电脑推荐**便携办公笔记本电脑推荐**一、推荐理由随着科技的发展,便携办公笔记本电脑已成为现代商务人士的必备工具。它们轻便、高效,能满足各种办公需求。以下是一些关于便携办公笔记本电脑的推荐理由及详细解释。二、推荐型号及特点1.

2024年7月25日 03:26

联想昭阳k23(联想昭阳k23最大内存)

联想昭阳k23(联想昭阳k23最大内存)

联想昭阳k23最大内存关于联想昭阳K23最大内存的相关内容,以下是一些解释:1. 内存定义:内存是计算机中用于存储和传输数据的部件,对于电脑的运行速度和性能至关重要。2. 联想昭阳K23的内存配置:联想昭阳K23是一款笔记本电脑,其具体型号

2024年7月13日 09:56

联想10寸笔记本电脑(联想10寸笔记本电脑价格)

联想10寸笔记本电脑(联想10寸笔记本电脑价格)

联想10寸笔记本电脑价格关于“联想10寸笔记本电脑价格”的相关内容,以下是详细解释:1. 联想品牌:联想是一家全球知名的电脑品牌,其产品线涵盖了各种尺寸和配置的笔记本电脑。因此,当谈及联想10寸笔记本电脑时,指的是由联想公司设计和制造的、屏

2024年7月6日 12:46

ati radeon hd 545v(ATI Radeon HD 545v怎么样)

ati radeon hd 545v(ATI Radeon HD 545v怎么样)

ATI Radeon HD 545v怎么样ATI Radeon HD 545v是一款中端的图形处理单元(GPU),用于计算机的图形渲染和图像处理。以下是关于这款显卡的一些详细解释:1. 性能:该显卡在性能上属于中等水平,可以满足大多数日常使

2024年7月28日 03:30

华硕a42(华硕a42j笔记本参数)

华硕a42(华硕a42j笔记本参数)

华硕a42j笔记本参数华硕A42J笔记本是一款较为经典的笔记本电脑,以下是关于其参数的详细解释:1. 处理器:该笔记本通常配备的是Intel处理器,具体型号可能因产品版本而异。处理器是电脑的核心部件,负责执行各种操作和计算任务。2. 内存:

2024年7月23日 06:02

地球人笔记本(地球人笔记本电脑)

地球人笔记本(地球人笔记本电脑)

地球人笔记本电脑“地球人笔记本电脑”是一个品牌或型号的笔记本电脑,其具体信息可能因地区、时间等因素而有所不同。以下是一些关于“地球人笔记本电脑”的常见内容:1. 品牌与制造商:地球人笔记本电脑是某个特定品牌或制造商的产品,该品牌可能在中国或

2024年7月16日 20:35

联想g475(联想g475详细参数)

联想g475(联想g475详细参数)

联想g475详细参数联想G475是一款笔记本电脑,其详细参数如下:一、基本参数1. 处理器:G475采用Intel或AMD系列处理器,根据具体型号而异。2. 操作系统:该系列笔记本大多支持Windows 7、Windows 8或Window

2024年7月7日 18:21

华硕x42(华硕x42j笔记本参数)

华硕x42(华硕x42j笔记本参数)

华硕x42j笔记本参数华硕X42J笔记本参数如下:1. 处理器:通常搭载的是Intel的处理器,具体型号可能因市场和发布时间而异。2. 内存:内存大小通常为2GB或更高,支持内存扩展,可以满足大多数用户的需求。3. 存储:通常配备有硬盘,容

2024年7月7日 03:46

惠普主页(惠普主页面)

惠普主页(惠普主页面)

惠普主页面“惠普主页面”通常指的是惠普公司(HP)的官方网站主页。以下是对惠普主页面相关内容的条理化解释:1. 首页布局: - 顶部导航栏:通常包括“首页”、“产品”、“支持”、“服务与支持”、“公司”等主要栏目,方便用户快速找到所需信

2024年7月17日 10:46

联想6000平板电脑(联想60046平板电脑)

联想6000平板电脑(联想60046平板电脑)

联想60046平板电脑关于“联想60046平板电脑”的相关内容,条理清晰的解释如下:1. 品牌:联想(Lenovo)是一家全球知名的电脑制造公司,以其稳定、耐用的产品赢得了广大用户的信赖。2. 型号:60046是联想平板电脑的特定型号。该型

2024年7月8日 04:41

联想s1(联想s15 g2)

联想s1(联想s15 g2)

联想s15 g2“联想S15 G2”是一款电子产品,具体来说是一款笔记本电脑或平板电脑。以下是对其相关内容的条理清晰的解释:1. 品牌与制造商: - 联想(Lenovo):是一个知名的电子产品制造商,主要生产电脑、手机等电子产品。

2024年7月24日 16:16

平板电脑最新资讯(平板电脑最新资讯怎么关闭)

平板电脑最新资讯(平板电脑最新资讯怎么关闭)

平板电脑最新资讯怎么关闭关于“平板电脑最新资讯如何关闭”的详细解释,具体步骤可能会因不同品牌和型号的平板电脑而异,但大致的思路是相似的。以下是一个通用的操作流程:1. 确认资讯来源:首先,需要确定“平板电脑最新资讯”是从哪里来的。这可能包括

2024年7月20日 00:30

最畅销的笔记本电脑(最畅销的笔记本电脑有哪些)

最畅销的笔记本电脑(最畅销的笔记本电脑有哪些)

最畅销的笔记本电脑有哪些以下是关于“最畅销的笔记本电脑有哪些”的相关内容:笔记本电脑市场琳琅满目,不同的品牌、型号、配置、价格等都可能导致市场销量的变化。但是根据销售数据和市场反馈,通常有几种笔记本电脑最为畅销:一、主要品牌:1. 苹果(A

2024年7月11日 04:41

联想客服电话(联想客服电话24小时人工服务热线)

联想客服电话(联想客服电话24小时人工服务热线)

联想客服电话24小时人工服务热线“联想客服电话24小时人工服务热线”是指联想公司提供的全天候人工客服服务电话,以下是关于此服务的相关内容解释:1. 服务时间:24小时人工服务意味着该热线电话提供全天候的客服支持,无论何时何地,用户都可以拨打

2024年7月18日 02:01

性能最好的笔记本(性能最好的笔记本电脑排名)

性能最好的笔记本(性能最好的笔记本电脑排名)

性能最好的笔记本电脑排名关于“性能最好的笔记本电脑排名”的内容,我会从以下几个方面为你进行详细的解释:1. 排名依据: * 性能排名通常基于笔记本电脑的处理器、显卡、内存、存储和散热等多方面的性能表现进行评估。 * 也会考虑价格、品牌声

2024年7月23日 12:12

联想ideapadz470(联想ideapadz470笔记本参数)

联想ideapadz470(联想ideapadz470笔记本参数)

联想ideapadz470笔记本参数联想 IdeaPad Z470 笔记本是一款较为常见的家用或办公笔记本电脑。以下是关于联想 IdeaPad Z470 笔记本的一些主要参数:1. 处理器:通常配备英特尔的处理器,如第二代或第三代的酷睿i系

2024年7月13日 03:41

联想笔记本电脑售后服务网点(沈阳联想笔记本电脑售后服务网点)

联想笔记本电脑售后服务网点(沈阳联想笔记本电脑售后服务网点)

沈阳联想笔记本电脑售后服务网点关于“沈阳联想笔记本电脑售后服务网点”的相关内容,以下是条理清晰的解释:一、概述沈阳联想笔记本电脑售后服务网点是联想公司在沈阳地区设立的专门为消费者提供售后服务支持的机构。其主要职责是解决消费者在使用联想笔记本

2024年7月22日 22:18

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1731
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1156
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索