问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

【50分】c语言程序优化

发布网友 发布时间:2022-04-27 00:14

我来回答

2个回答

热心网友 时间:2022-06-21 07:22

本题一个完整的c程序如下,在win-tc和Dev-c++下调试通过。
这里没有使用结构体,也可以改写为结构体。这里利用的是交换数组的编号,同时程序可以判断当输入职工号重复时,提醒重新输入,效果不错。
/*职工管理系统
该系统的功能包括输入、排序、查找。主程序中包括3个函数其中input()函数的功能是:
输入职工的姓名和职工号。sort()函数的功能是:按职工号由小到大排序,姓名顺序也随之调整。 search()函数的功能是:根据主函数提供的职工号进行查找,若找到该职工则输出对应职工的姓名, 若找不到则输出“not find”。
*/
#include<stdio.h>
#include"string.h"
#define NUMMAX 100
int order[NUMMAX];
void input(int a[],char b[][20],int n)
{
int i=0,j,k,flag;
do
{ flag=0;
printf("please input No.%d worker's code:\n",i+1);
scanf("%d",&a[i]);
printf("please input No.%d worker's name:\n",i+1);
scanf("%s",b[i]);
for(j=0;j<i;j++)
{ for(k=j+1;k<i+1;k++)
if(a[k]==a[j])
{ printf("The code has been inputted! Please input again!\n");
flag=1;
break; /*如有重复立即退出该层循环,提高判断速度*/
}
if(flag==1)
break; /*如有重复立即退出该层循环,提高判断速度*/
}
if(flag==0)
{ order[i]=i;
i++;
}
}while(i<n);
}

void sort(int a[],int n)
{
int i,j,k;
char t[20];
for(i=0;i<n-1;i++) /* 选择排序 */
for(j=i+1;j<n;j++)
if(a[order[i]]>a[order[j]]) /* 交换的是次序不是元素 */
{k=order[i]; /* 这是处理不用结构体使数据一起移动的一种好方法 */
order[i]=order[j];
order[j]=k;
}
}

void search(int n,int num,int a[],char b[][20])
{int i,flag=0;
for(i=0;i<n;i++)
if(num==a[order[i]])
{printf("The worker you find is:%s\n",b[order[i]]);
flag=1;
}
if(flag==0)
printf("Not find!\n");
}

int main()
{
char c,name[NUMMAX][20]; /*职工号数值应在int可以表示的范围内*/
int i,n,code[NUMMAX],num,flag=1;
printf("please input number of workers(<100):\n");
scanf("%d",&n);
input(code,name,n);
sort(code,n);
printf("The sequence of workers after sort are:\n");
for(i=0;i<n;i++)
printf("%-10d%s\n",code[order[i]],name[order[i]]);
while(flag==1)
{
printf("\nInput code to search:");
scanf("%d",&num);
search(n,num,code,name);
printf("\ncontinue or not(Y/N)?");
c=getch();
if(c=='N'||c=='n')
flag=0;
}
return 0;
}

参考资料:如果使用结构体请参阅http://zhidao.baidu.com/question/80443544.html

热心网友 时间:2022-06-21 07:22

int num[NUMMAX]; 这个在程序中没用上,可以去掉
另外你这里sort()只是实现了按序输出功能,根本不涉及排序

初始输入数假如超过NUMMAX的话,会溢出
还是加入一个循环判断吧,假如不超过就继续,超过就重新输入

还有不清楚你想优化什么,想怎么优化……
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
脚崴了挂什么科、急急急 linux 解压缩工具--tar命令 生日祝福语闺蜜 简短独特暖心 QQ有哪些隐藏的图标??他们分别是什么??怎么样点亮?? QQ业务的各种图标怎么点亮? qq怎么点亮图标和名字 诗中书万象=求下联 大爱如山藏万象下联 中国电子展:电位器和可调电阻的区别是什么?这四点很明显 电位器的接线方法是什么 电位器的工作原理如何 发动机连杆轻微变形症状 如果C语言函数参数太多,可以怎么优化 连杆轴瓦坏了的现象 c语言如何优化代码不占cpu 汽车连杆活塞坏了怎么办 如何进行C盘手动优化? 如何优化C++程序代码编写 五菱宏光小连杆咚咚异响 几种C语言优化代码技巧 汽车前稳定杆连接杆坏了会怎么样 这个C语言程序怎么优化比较好? 奥迪a6前横向稳定杆小连杆坏了什么症状 梦见老公半夜抱被子回家 梦见老公抱着一口钟回家 梦见老公在外抱一堆茐回家 长春长生生物科技股份有限公司怎么样? 长生生物疫苗案致市值蒸发多少亿? 孕妇梦见老公把好多尸体抱回家 长春长生疫苗事件 狂苗批号201709065是假药苗? 长春长生已被公安机关立案调查吗? 发动机连杆小头铜套损坏会导致什么结果 c语言算法优化 C/C++代码在实时程序设计中是怎么优化的? 汽车悬挂出故障如何看出 C语言小程序优化 连杆弯曲和扭曲后会导致发动机什么原因 C中用什么方法进行效率优化 摩托车曲轴损坏都什么症状 c语言优化,有满意答案给100分 怎么判断平衡轴坏了? C程序优化 发动机轻微拉缸有何现象? 怎么样对我的C:/盘进行手动的优化 c语言怎样优化代码减少占用ram 牛皮席子粘怎么办 搽来搽去 还是粘 如何提高C语言代码效率 夏天躺在凉席上怎么才能不粘身子 如何优化C代码ARMCC问题,怎么解决 被子和凉席为什么黏黏的怎么办 藤席为什么粘身