水题

来源:互联网 发布:南方大数据100指数评论 编辑:程序博客网 时间:2024/06/16 17:17

帮其他学校的写了两个大作业(c语言那种)

第一个是个***管理系统

大意就是公司工资管理系统,要计算一下汇率,没什么说的

第二个是一个迷宫,难点在于随机生成迷宫那边,关键是深搜的过程是随机的就可以生成一条道路(这条道路都是可通行的),剩下的点大部分不可通行,当然也不能全不能让人走,否则这条道路就太明显了),想了个办法,如果是那条初始道路就直接铺路,否则很大概率是墙,小概率是道路。

算法还可以继续优化,等有空改成Android的再美化下界面还是不错的。


//工资管理系统#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <cstdlib>using namespace std;int n=0;//数据库中人员的数量FILE *fp;FILE *fp2;int q[]={0,3500,5000,8000,12500,38500,58500,83500};//税的级数double q1[]={0,0.03,0.1,0.2,0.25,0.3,0.35,0.45};int q2[]={0,0,105,555,1005,2775,5505,13505};//速算扣除数typedef struct person//人员,具有收入,{   char name[20];//姓名   char staff_number[20];//员工编号   double Gross_pay;//税前收入   double tax;//税收}person;person a[100];int cmp(person c,person d){    return c.Gross_pay<d.Gross_pay;}void menu()//主界面{    printf("***************************\n");    printf("*****显示信息请按1*********\n");    printf("*****信息管理请按2*********\n");    printf("*****录入信息请按3*********\n");    printf("*****导出信息请按4*********\n");    printf("*****工资排序请按5*********\n");    printf("*****用户退出请按6*********\n");    printf("***************************\n");}void menu2()//基本信息界面{    printf("************添加信息请按1********\n");    printf("************删除信息请按2********\n");    printf("************修改信息请按3********\n");}void menu3(){    printf("*******按照姓名删除请按1**********\n");    printf("*******按照员工编号请按2**********\n");}void show(){  int i;  printf("%10s%10s%10s%10s\n","姓名","员工编号","收入","个税");  for (i=0;i<n;i++)  printf("%8s%10s   %lf %lf\n",a[i].name,a[i].staff_number,a[i].Gross_pay,a[i].tax);  printf("\n\n");}void add(){    int i;    printf("请输入需要添加的员工姓名:    ");    scanf("%s",a[n].name);    printf("请输入需要添加的员工编号:     ");    scanf("%s",a[n].staff_number);    printf("请输入添加的收入:             ");    scanf("%lf",&a[n].Gross_pay);    for (i=0;i<=7;i++)    if (q[i]>=a[n].Gross_pay)    break;    a[n].tax=(a[n].Gross_pay-q[i-1])*q1[i-1]+q2[i-1];    n++;    printf("\n\n");}void shanyuangong(){   char s[20];   int i,j,t;   printf("请输入需要删除的员工姓名:     ");   scanf("%s",s);   printf("\n");   t=0;   for (i=0;i<n;i++)   if (strcmp(a[i].name,s)==0)   {       for (j=i;j<n-1;j++)       a[j]=a[j+1];       t=1;   }   n--;   if (t==0)   printf("数据库中没有该条信息!\n\n");}void shanyuangongbianhao(){    char s[20];    int i,j,t;   printf("请输入需要删除的员工编号:     ");   scanf("%s",s);   printf("\n");   t=0;   for (i=0;i<n;i++)   if (strcmp(a[i].staff_number,s)==0)   {       for (j=i;j<n-1;j++)       a[j]=a[j+1];       t=1;   }   n--;   if (t==0)   printf("数据库中没有该条信息!\n");}void Delete(){    int key;    menu3();    do    {    printf("请输入你的选择:    ");    scanf("%d",&key);    if ((key<=0)||(key>2))    printf("请输入正确的选择\n");    else    {        if (key==1)            shanyuangong();//删除员工        if (key==2)            shanyuangongbianhao();//删除员工编号    }    }while(key<=0||key>2);}void change(){    char s[20];    int i,j,t;    printf("请输入员工的姓名:    ");    scanf("%s",s);    t=0;    for (i=0;i<n;i++)    if (strcmp(a[i].name,s)==0)    {        t=1;        printf("请输入新的员工编号:   ");        scanf("%s",a[i].staff_number);        printf("请输入新的员工收入:    ");        scanf("%lf",&a[i].Gross_pay);    }    if (t==0)    printf("数据库没有这条信息!\n");}void manage(){    int i,key;    menu2();//基本信息界面    do    {    scanf("%d",&key);    if ((key<=0)||(key>3))    printf("请输入正确的选择\n");    else    switch(key)    {        case 1:add();//增加               break;        case 2:Delete();//删除               break;        case 3:change();//修改信息    }    }while(key<=0||(key>3));}void luru(){    fp=fopen("F:\\1.txt","r");    while(fscanf(fp,"%s%s%lf",a[n].name,a[n].staff_number,&a[n].Gross_pay)!=EOF)    {        n++;    }}void daochu(){    int i;    fp2=fopen("F:\\2.txt","w");    printf("%10s%10s%10s%10s\n","姓名","员工编号","收入","个税");    for (i=0;i<n;i++)    printf("%8s%10s   %lf %lf\n",a[i].name,a[i].staff_number,a[i].Gross_pay,a[i].tax);}void paixu(){    int i,j;    sort(a,a+n,cmp);    show();} int main() {     int key;     menu();     do     {         printf("请输入你的选择  ");         scanf("%d",&key);         if ((key<=0)||(key>6))         printf("请输入正确的选择\n\n\n");         else         {             switch(key)             {                 case 1:show();//展示信息                        break;                 case 2:manage();//信息管理                        break;                 case 3:luru();//录入信息(编不出英文了)                        break;                 case 4:daochu();//导出英文                        break;                 case 5:paixu();//排序                        break;            }         }     }while(key!=6);//当输入6退出     printf("*****欢迎使用********\n");     return 0; }

//迷宫#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>int direction[4];//存储4个方向int a[105][105];char s[105][105];int visit[105][105];int Time;int n;//迷宫的行,列void initdirection(){    int i,j,k,ok;    memset(direction,0,sizeof(direction));    for (i=0;i<=3;i++)    {        j=rand()%4;        ok=1;        for (k=0;k<i;k++)        if (j==direction[k])        ok=0;        if (ok)        direction[i]=j;        else        i--;     }}void DFS(int x,int y){    int c[4]={0,0,-1,1};//direction[0,1,2,3]分别对应上下左右    int d[4]={1,-1,0,0};    int dx,dy,i,j;    if ((x==n-1)&&(y==n-1))//如果到终点    {    Time=1;    return;    }    initdirection();//随机生成四个方向(其实就是全排列啦~~)    for (i=0;i<=3;i++)    {       dx=x+c[direction[i]];//更新横纵坐标       dy=y+d[direction[i]];       if ((dx>=0)&&(dx<n)&&(dy>=0)&&(dy<n)&&(!visit[dx][dy])&&(!Time))       {           a[dx][dy]=1;//认为它是通路           visit[dx][dy]=1;           DFS(dx,dy);           if (!Time)           a[dx][dy]=0;       }     }}void initsecretmap()//随机生成迷宫{  int i,j;  for (i=0;i<n;i++)   for (j=0;j<n;j++)     a[i][j]=0;//一开始标记为不可通行     memset(visit,0,sizeof(visit));     a[0][0]=1;     visit[0][0]=1;//起点标记为可通行     DFS(0,0);}int main() {     int i,j,m,k,t;     char ch;     printf("*******欢迎使用+学号的迷宫\n");//此处自行修改........(贴心不)     printf("请输入迷宫的行数\n");     scanf("%d",&n);     srand(time(NULL));     while((n<=0||n>100))     {         printf("请输入正确的数字\n");         scanf("%d",&n);     }     system("cls");     initsecretmap();//随机生成迷宫,最后应该得到a数组,1就是通路     for (i=0;i<n;i++)     for (j=0;j<n;j++)     {     if (a[i][j]==0)     {     m=rand()%100;     if (m<=20)     s[i][j]=' ';     else     s[i][j]='#';     }     else     {         s[i][j]=' ';     }     }     s[0][0]='.';    for (i=0;i<n;i++)    {     for (j=0;j<n;j++)     printf("%c",s[i][j]);     printf("\n");    }    i=0;    j=0;     while((i!=n-1)||(j!=n-1))      {          ch=getchar();          if ((ch=='w')&&(i-1>=0)&&(s[i-1][j]==' '))          {              s[i][j]=' ';              i--;              s[i][j]='.';          }          else            if ((ch=='s')&&(i+1<n)&&(s[i+1][j]==' '))          {              s[i][j]=' ';              i++;              s[i][j]='.';          }          else if ((ch=='a')&&(j-1>=0)&&(s[i][j-1]==' '))          {              s[i][j]=' ';              j--;             s[i][j]='.';          }          else if ((ch=='d')&&(j+1<n)&&(s[i][j+1]==' '))          {              s[i][j]=' ';              j++;              s[i][j]='.';          }          system("cls");          for (k=0;k<n;k++)          {            for (t=0;t<n;t++)            printf("%c",s[k][t]);            printf("\n");          }        }     printf("Yin Win");     return 0;      }


0 0
原创粉丝点击