用汇编语言求“数列极差”问题。程序大约要有500行,要有输入有输出。高人救命啊。。。。

用汇编语言求“数列极差”问题。程序大约要有500行,要有输入有输出。高人救命啊。。。。,第1张

等很久并不是因为权限,是网速造成的,或者是数据库系统内存不足造成。 从本地备份不可行,不过如果你查询的仅有几张表的数据,可在本地建一个数据库,然后和总数据库建立数据库连接,这几张表的数据发生修改时,总数据库把数据同步到你本地数据库。这个方法仅限于你访问的表不多情况下,如果表很多,那数据库同步更影响总库的速度。注意这样做有一个重要的区别,你查询的仅为本地数据库数据,和主库没什么关系,只不过数据库同步让两个库的数据是一样的。

//户籍管理系统, 应该能满足你的要求。

//多给点财富吧

#include<stdioh>

#include<stdlibh>

typedef struct tagHuJiXinXi

{

char shfzhh[64]; //身份z号

char xm[16]; //姓名

char xb[8]; //性别

int nl; //年龄

char xl[64]; //学历

char zhzh[64]; //住址

char dh[32]; //电话

}HuJiXinXi,PtHuJiXinXi;

void readfromfile();

void writetofile();

void tuichu();

void add();

void outputone();

void outputall();

void sortbyage();

void myrealloc();

void findbyagerange();

void del();

void alter();

void find();

void showmenu();

void processmenu(int m);

PtHuJiXinXi pt;

int count=0,capacity=16;

int main()

{

int m;

pt=(PtHuJiXinXi)calloc(capacity,sizeof(HuJiXinXi));

readfromfile();

while(1)

{

showmenu();

scanf("%d",&m);

processmenu(m);

}

system("PAUSE");

return EXIT_SUCCESS;

}

void processmenu(int m)

{

switch(m)

{

case 0:

tuichu();

break;

case 1:

add();

break;

case 2:

del();

break;

case 3:

alter();

break;

case 4:

outputall();

break;

case 5:

sortbyage();

break;

case 6:

findbyagerange();

break;

case 7:

writetofile();

break;

case 8:

find();

break;

default:

printf("不可识别的命令。\n");

}

}

//实现存储空间的自动扩充

void myrealloc()

{

if(count+1>=capacity)

{

int i;

capacity=2;

PtHuJiXinXi temppt=(PtHuJiXinXi)calloc(capacity,sizeof(HuJiXinXi));

for(i=0;i<count;i++)

{

temppt[i]=pt[i];

}

free(pt);

pt=temppt;

}

}

void readfromfile()

{

char f[128];

FILE inf;

HuJiXinXi hjxx;

printf("请输入包含户籍信息的文件的文件名,如果还没有文件,请输入omit(文件中每行一条户籍信息,");

printf("格式:身份z号 姓名 性别 年龄 学历 住址 电话)\n");

gets(f);

if(!strcmp(f,"omit"))

{

return;

}

inf=fopen(f,"r");

if(NULL!=inf)

{

do

{

fscanf(inf,"%s %s %s %d %s %s %s",hjxxshfzhh,hjxxxm,hjxxxb,&hjxxnl,hjxxxl,hjxxzhzh,hjxxdh);

myrealloc();

pt[count++]=hjxx;

}while(!feof(inf));

fclose(inf);

printf("信息已成功加载。\n");

}

else

{

printf("文件名无效或文件无数据。\n");

}

}

void writetofile()

{

char f[128]={'\0'};

FILE outf;

int i;

printf("请输入保存户籍信息的文件的文件名:\n");

scanf("%s",f);

outf=fopen(f,"w");

if(NULL!=outf)

{

for(i=0;i<count;i++)

{

fprintf(outf,"%s %s %s %d %s %s %s",pt[i]shfzhh,pt[i]xm,pt[i]xb,pt[i]nl,pt[i]xl,pt[i]zhzh,pt[i]dh);

if(count-1!=i)

{

fprintf(outf,"%s","\n");

}

}

fclose(outf);

printf("文件保存成功。\n");

}

else

{

printf("文件名无效。\n");

}

}

void showmenu()

{

char menu[]="菜单:\n0、退出\n1、添加一条信息\n2、删除一条信息\n3、批量修改\n4、浏览全部信息\n5、按年龄排序 \n6、按年龄区间查询\n7、保存到文件\n8、随意查询\n请选择一个菜单:";

puts(menu);

}

void tuichu()

{

if(NULL==pt)

{

free(pt);

}

exit(0);

}

//判断身份z号是否重复

int isshfzhhchf(char s[64])

{

int i,r=0;

for(i=0;i<count;i++)

{

if(!strcmp(pt[i]shfzhh,s))

{

r=1;

break;

}

}

return r;

}

void add()

{

myrealloc();

printf("添加一条户籍信息。\n");

printf("请输入身份z号 姓名 性别 年龄 学历 住址 电话:\n");

scanf("%s %s %s %d %s %s %s",pt[count]shfzhh,pt[count]xm,pt[count]xb,&pt[count]nl,

pt[count]xl,pt[count]zhzh,pt[count]dh);

if(!isshfzhhchf(pt[count]shfzhh))

{

count++;

printf("添加成功。\n");

}

else

{

printf("身份z号重复,添加失败。\n");

}

}

//输出下标为n的一条户籍信息

void outputone(int n)

{

if(n>=0 && n<count)

{

printf("第%d条户籍信息:\n",n+1);

printf("%s %s %s %d %s %s %s。\n",pt[n]shfzhh,pt[n]xm,pt[n]xb,pt[n]nl,pt[n]xl,pt[n]zhzh,pt[n]dh);

}

else

{

printf("没有第%d条户籍信息存在。\n",n+1);

}

}

void outputall()

{

if(0==count)

{

printf("系统已空。\n");

}

else

{

int i;

for(i=0;i<count;i++)

{

outputone(i);

}

}

}

void sortbyage()

{

int i,j,px;

HuJiXinXi hjxx;

printf("子菜单:\n1、升序\n2、降序\n请选择:");

scanf("%d",&px);

if(1==px || 2==px)

{

for(i=0;i<count-1;i++)

{

for(j=0;j<count-i-1;j++)

{

if(1==px)

{

if(pt[j]nl>pt[j+1]nl)

{

hjxx=pt[j+1];

pt[j+1]=pt[j];

pt[j]=hjxx;

}

}

else

{

if(pt[j]nl<pt[j+1]nl)

{

hjxx=pt[j+1];

pt[j+1]=pt[j];

pt[j]=hjxx;

}

}

}

}

printf("排序完成。\n");

}

else

{

printf("无法处理的子菜单命令。\n");

}

}

void findbyagerange()

{

int i,min,max,c=0;

printf("请输入要查找的户籍信息的最小年龄和最大年龄:");

scanf("%d %d",&min,&max);

printf("查询结果如下:\n");

for(i=0;i<count;i++)

{

if(pt[i]nl>=min && pt[i]nl<=max)

{

outputone(i);

printf("符合你的要求。\n");

c++;

}

}

if(0==c)

{

printf("没有符合你的要求的户籍信息。\n");

}

}

//删除一条户籍信息

void del()

{

int i,n;

HuJiXinXi hjxx;

printf("请输入要删除的是第几条户籍信息:");

scanf("%d",&n);

if(n-1>=0 && n-1<count)

{

hjxx=pt[n-1];

for(i=n;i<count;i++)

{

pt[i-1]=pt[i];

}

printf("删除成功。\n第%d条户籍信息:\n",n);

printf("%s %s %s %d %s %s %s。",hjxxshfzhh,hjxxxm,hjxxxb,hjxxnl,hjxxxl,hjxxzhzh,hjxxdh);

printf(",已删除。\n");

count--;

}

else

{

printf("删除失败。\n不存在第%d条户籍信息。\n",n);

}

}

//根据hjxx的值修改下标为n的户籍信息

//对于pt[n]的对应字段,如果在hjxx中是用表示的,则不修改

void change(HuJiXinXi hjxx,int n)

{

//返回非0值,意味着hjxxshfzhh(身份z号)不等于,即需要修改pt[n]shfzhh字段,以下都类似

if(strcmp(hjxxshfzhh,""))

{

strcpy(pt[n]shfzhh,hjxxshfzhh);

}

if(strcmp(hjxxxm,""))

{

strcpy(pt[n]xm,hjxxxm);

}

if(strcmp(hjxxxb,""))

{

strcpy(pt[n]xb,hjxxxb);

}

//不等于-1表示需要修改pt[n]nl(年龄)

if(-1!=hjxxnl)

{

pt[n]nl=hjxxnl;

}

if(strcmp(hjxxxl,""))

{

strcpy(pt[n]xl,hjxxxl);

}

if(strcmp(hjxxzhzh,""))

{

strcpy(pt[n]zhzh,hjxxzhzh);

}

if(strcmp(hjxxdh,""))

{

strcpy(pt[n]dh,hjxxdh);

}

}

//对户籍信息进行批量修改

void alter()

{

int n;

HuJiXinXi hjxx;

char nl[16];

while(1)

{

printf("请输入要修改第几条户籍信息(-1退出循环):");

scanf("%d",&n);

if(-1==n)

{

break;

}

else if(n-1>=0 && n-1<count)

{

printf("修改\n");

outputone(n-1);

printf("请输入将此户籍信息修改后的新的姓名 性别 年龄 学历 住址 电话(保持原值的用代替):\n");

scanf("%s %s %s %s %s %s",hjxxxm,hjxxxb,nl,hjxxxl,hjxxzhzh,hjxxdh);

//因为只有nl(年龄)是int型,故对nl作特殊处理,-1表示修改时年龄保持原值不变(不修改)

hjxxnl=(strcmp(nl,"") atoi(nl) : -1);

strcpy(hjxxshfzhh,"");

change(hjxx,n-1);

printf("修改完成。\n");

}

else

{

printf("无法修改,不存在第%d条户籍信息。\n",n);

}

}

}

//用于判断pt[n]是否匹配hjxx的模式

int ismatch(HuJiXinXi hjxx,int n)

{

int r=1;

if(strcmp(hjxxshfzhh,"") && strcmp(hjxxshfzhh,pt[n]shfzhh))

{

r=0;

}

if(r && strcmp(hjxxxm,"") && strcmp(hjxxxm,pt[n]xm))

{

r=0;

}

if(r && strcmp(hjxxxb,"") && strcmp(hjxxxb,pt[n]xb))

{

r=0;

}

if(r && -1!=hjxxnl && hjxxnl!=pt[n]nl)

{

r=0;

}

if(r && strcmp(hjxxxl,"") && strcmp(hjxxxl,pt[n]xl))

{

r=0;

}

if(r && strcmp(hjxxzhzh,"") && strcmp(hjxxzhzh,pt[n]zhzh))

{

r=0;

}

if(r && strcmp(hjxxdh,"") && strcmp(hjxxdh,pt[n]dh))

{

r=0;

}

return r;

}

//按模式查询户籍信息

void find()

{

int i,c=0;

char nl[16];

HuJiXinXi hjxx;

printf("请输入要查询的户籍信息的身份z号 姓名 性别 年龄 学历 住址 电话(只需提供关键信息以用于查询,不提供的信息请用代替):\n");

scanf("%s %s %s %s %s %s %s",hjxxshfzhh,hjxxxm,hjxxxb,nl,hjxxxl,hjxxzhzh,hjxxdh);

//因为只有nl(年龄)是int型,故对nl作特殊处理,-1表示查询时不需比较年龄

hjxxnl=(strcmp(nl,"") atoi(nl) : -1);

for(i=0;i<count;i++)

{

if(ismatch(hjxx,i))

{

printf("找到第%d条满足你的模式要求的户籍信息如下:\n",c+1);

printf("%s %s %s %d %s %s %s。\n",pt[i]shfzhh,pt[i]xm,pt[i]xb,pt[i]nl,pt[i]xl,pt[i]zhzh,pt[i]dh);

c++;

}

}

if(!c)

{

printf("系统中没有满足你的模式要求的户籍信息。\n");

}

}

随便写了些

不满意你自己在改改吧

#include <stdioh>

#include <malloch>

#include <memoryh>

#include <stringh>

typedef struct student{

int Num;

char name[12];

int age;

struct student pNext;

}STUDENT,PSTUDENT;

#define LEN sizeof(STUDENT)

PSTUDENT pHeader,pNail;

int n=0;

void PrintMenu();

bool ExistStudent(int Num);

void InsertInfo();

bool DeleteInfo(int Num);

bool UpdateInfo(int Num,PSTUDENT pNewInfo);

void PrintInfo();

int main()

{

PrintMenu();

int iSel=0;

while(1)

{

printf("输入 *** 作选择:");

scanf("%d",&iSel);

switch(iSel)

{

case 0:

return 0;

case 1:

PrintInfo();

continue;

case 2:

InsertInfo();

continue;

case 3:

{

int num=0;

printf("输入要删除的学生学号:");

scanf("%d",&num);

if(DeleteInfo(num))

printf("删除成功!\n");

else

printf("删除失败!\n");

continue;

}

case 4:

{

int num=0;

printf("输入要修改的学生学号:");

scanf("%d",&num);

STUDENT stu={0};

printf("输入该学生的新信息(空格分隔):");

scanf("%d%s%d",&stuNum,&stuname,&stuage);

if(UpdateInfo(num,&stu))

printf("修改成功!\n");

else

printf("修改失败!\n");

continue;

}

continue;

default:

continue;

}

}

return 0;

}

void PrintMenu()

{

printf(" *** 作菜单\n");

printf(" 1 打印学生信息\n");

printf(" 2 添加学生信息\n");

printf(" 3 删除学生信息\n");

printf(" 4 修改学生信息\n");

printf(" 0 退出系统\n");

printf("\n");

}

void InsertInfo()

{

PSTUDENT pCur;

printf("请输入学生记录(各元素用空格分隔,输入学号为0时停止)\n");

while(true)

{

pCur = (PSTUDENT)malloc(LEN);

memset(pCur,NULL,LEN);

printf("==>:");

scanf("%d%s%d",&pCur->Num,pCur->name,&pCur->age);

if(pCur->Num==0)

break;

if(ExistStudent(pCur->Num))

{

printf("该学生信息已经存在!\n");

break;

}

if(n==0)

{

pNail=pHeader=pCur;

pHeader->pNext=NULL;

}

else

{

pNail->pNext=pCur;

pNail=pCur;

pCur->pNext=NULL;

}

n++;

}

}

bool DeleteInfo(int Num)

{

PSTUDENT pStu=pHeader;

if(!pStu)

return false;

for(pStu;pStu!=NULL;pStu=pStu->pNext)

{

if(Num==pStu->Num)

{

pHeader=pStu->pNext;

return true;

}

else if(pStu->pNext&&Num==pStu->pNext->Num)

{

pStu->pNext=pStu->pNext->pNext;

return true;

}

}

return false;

}

bool UpdateInfo(int Num,PSTUDENT pNewInfo)

{

PSTUDENT pStu=pHeader;

if(!pStu)

return false;

if(Num!=pNewInfo->Num&&ExistStudent(pNewInfo->Num))

return false;

for(pStu;pStu!=NULL;pStu=pStu->pNext)

{

if(Num==pStu->Num)

{

pStu->Num=pNewInfo->Num;

memset(pStu->name,0,sizeof(pStu->name));

strcpy(pStu->name,pNewInfo->name);

pStu->age=pNewInfo->age;

return true;

}

}

return true;

}

void PrintInfo()

{

PSTUDENT pStu=pHeader;

if(!pStu)

{

printf("没有学生信息!\n");

return;

}

for(pStu;pStu!=NULL;pStu=pStu->pNext)

printf("学号:%d 姓名:%s 年龄:%d\n",pStu->Num,pStu->name,pStu->age);

}

bool ExistStudent(int Num)

{

PSTUDENT pStu=pHeader;

if(!pStu)

return false;

for(pStu;pStu!=NULL;pStu=pStu->pNext)

{

if(Num==pStu->Num)

return true;

}

return false;

}

以上就是关于用汇编语言求“数列极差”问题。程序大约要有500行,要有输入有输出。高人救命啊。。。。全部的内容,包括:用汇编语言求“数列极差”问题。程序大约要有500行,要有输入有输出。高人救命啊。。。。、学了一学期的C语言,要做大作业。 求一个500行C语言程序代码。 可以在VC++6.0上运行的。、C语言程序设计学生成绩管理系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10208711.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存