跪求一个C语言小程序,100行左右,最好独特一点

发我邮箱:2279248774@qq.com(期末作业,你懂得),回答那里随便打什么都行... 发我邮箱:2279248774@qq.com(期末作业,你懂得),回答那里随便打什么都行 展开
 我来答
百度网友27954dc
2011-12-28
知道答主
回答量:5
采纳率:0%
帮助的人:7827
展开全部
1,输入十个职工的姓名和职工号
2,按职工号从小到大顺序排序,姓名顺序随之调整
3,输入一个职工号,用折半法找出该职工姓名,从主函数输入要查找的职工号,输出该职工姓名

#include<iostream>
#include <string>
#include<conio.h>
using namespace std;

struct Employee
{
long int EID;
string Name;
};

//设置信息
void SetInfo(Employee *p)
{
cout<<"员工编号:";
cin>>p->EID;
cout<<"姓名:";
cin>>p->Name;
}
//显示信息
void Display(Employee *p)
{
cout<<"编号:"<<p->EID<<endl;
cout<<"姓名:"<<p->Name<<endl;
}
//使用快速排序方法按职工号排序
void QuickSort(Employee *A,int s,int t) //对A[s]至A[t]之间的元素进行快速排序
{
int i = s,j = t;
Employee tmp;
if(s<t) //至少有2个元素的情况
{
Employee tmp;
tmp.EID = A[s].EID; tmp.Name = A[s].Name; //区间第一个记录作为基准
while(i != j) //两端向中间扫描至 i = j
{
while(j>i && A[j].EID>tmp.EID) //从右往左,找第一个小于tmp.key的A[j]
j--;
A[i].EID = A[j].EID; A[i].Name = A[j].Name; //找到A[j],将A[i]与A[j]交换
while(i<j && A[i].EID<tmp.EID) //从左往右,找第一个大于tmp.key的A[i]
i++;
A[j].EID = A[i].EID; A[j].Name = A[i].Name; //找到A[i],将A[i]与A[j]交换
}
A[i].EID = tmp.EID; A[i].Name = tmp.Name; //将基准放到A[i]中

QuickSort(A,s,i-1); //对左区间递归排序
QuickSort(A,i+1,t); //对右区间递归排序
}
}
//按职工号折半查找
int BinSearch(Employee *A,int n,long k) //数组A[n]必须是有序数组
{
int low = 0,high = n-1,mid;
while(low<=high)
{
mid = (low+high)/2;
if(A[mid].EID == k)return mid; //找到
if(A[mid].EID > k) high = mid-1;
else low = mid+1;
}
return -1; //没有找到
}

int main()
{
int i,n,op;
long int op2;
cout<<"请输入员工数:";
cin>>n;
Employee *pEmp = new Employee [n];
for(i=0;i<n;i++)
{
cout<<"输入第"<<i+1<<"个员工信息:\n";
SetInfo(pEmp+i);
}
system("cls");
while(1)
{
cout<<"请选择:\n1.显示员工信息\n2.修改员工信息\n3.按职工号排序\n4.查找职工\n5.退出"<<endl;
cin>>op;
switch(op)
{
case 1:
for(i=0;i<n;i++)
{
Display(pEmp+i);
cout<<endl;
}
getch();
system("cls");
break;

case 2:
cout<<"请输入要修改姓名的员工的编号:";
cin>>op2;
for(i=0;i<n;i++)
{
if((pEmp+i)->EID==op2)
{
SetInfo(pEmp+i);
break;
}
}
if(i>=n)cout<<"错误,无此编号!";
getch();
system("cls");
break;
case 3:
QuickSort(pEmp,0,n-1);
cout<<"排序完毕!"<<endl;
getch();
system("cls");
break;
case 4:
cout<<"请输入职工号进行查找:";
cin>>op2;
QuickSort(pEmp,0,n-1); //折半查找要求数组有序,在此先进行排序
i = BinSearch(pEmp,n,op2);
if(i == -1)cout<<"没有找到该编号的职工!"<<endl;
else cout<<"该编号职工的姓名是:"<<(pEmp+i)->Name<<endl;
getch();
system("cls");
break;
case 5:
delete [] pEmp;
return 0;
default:
cout<<"选择有误!\n";
break;
}
}
}
J598527338W
2011-12-28
知道答主
回答量:8
采纳率:0%
帮助的人:3.8万
展开全部
一个纸牌游戏的程序:
编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后...从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次从5的倍数牌翻依次,6的,7的直到以52为基数的翻过,输出:这是正面向上的牌有哪些?
#include<stdio.h>
#include<stdlib.h>
typedef int elempt;
typedef struct node
{
elempt key;
elempt data;
struct node *next;
}linklist;

linklist * InitList(linklist *l)
{
l=(linklist*)malloc(sizeof(linklist));
l->next=NULL;
return (l);
}

linklist * InitData(linklist *l)
{
int i;
linklist *p,*t;
p=(linklist*)malloc(sizeof(linklist));
p=l;
for(i=1;i<=52;i++)
{
t=(linklist*)malloc(sizeof(linklist));
t->data=i;
t->key=1;
l->next=t;
l=l->next;
}
l=NULL;
l=p;
return (l);
}

void Start_Play(linklist *l)
{
int i=2;
linklist *p;
p=(linklist*)malloc(sizeof(linklist));
l=l->next;
while(i<=52)
{
p=l;
while(p!=NULL)
{
if(p->data%i==0)
p->key=-(p->key);
p=p->next;
}
i++;
}
}

void OutPut(linklist *l)
{
l=l->next;
while(l!=NULL)
{
if(l->key==1)
printf("第%d张\n",l->data);
l=l->next;
}
}

int main()
{
linklist *l;
l=InitList(l);
l=InitData(l);
Start_Play(l);
printf("运行结束,正面朝上的纸牌有:\n");
OutPut(l);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
深远且恬静的小百花
2011-12-28 · TA获得超过376个赞
知道小有建树答主
回答量:404
采纳率:0%
帮助的人:222万
展开全部
已发,注意接收 1642301390
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式