c语言current,C语言问题求高手解答

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

saddam1986

2017.10.05

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:55%    等级:8

已帮助:113人

帮你写好了,这里帮你编译运行了,没任何问题,不放心的话你自己试试

struct staff

{

char name[50];

float salary;

unsigned int age;

struct staff *next;

};

int main(void)

{

struct staff *head=NULL;

struct staff *prev,*current;

char input[50];

printf("请输入员工姓名:");

while(gets(input)!=NULL&&input[0]!='\0')

{

current=(struct staff *)malloc(sizeof(struct staff));

if (head==NULL)

head=current;

else

prev->next=current;

current->next=NULL;

strcpy(current->name,input);

printf("请输入他的工资:");

scanf("%f",¤t->salary);

printf("请输入他的年龄:");

scanf("%d",¤t->age);

while(getchar()!='\n')

continue;

printf("请输入员工姓名:(空行开头来结束)");

prev=current;

}

if (head==NULL)

puts("没有任何数据,抱歉!");

else

{

printf("下面是需要的数据:\n");

printf("员工姓名 员工工资 员工年龄 \n ");

}

current=head;

while(current!=NULL)

{

printf("%s %f %d\n",current->name,current->salary+30,current->age+1);

current=current->next;

}

current=head;

while(current!=NULL)

{

prev=current->next;

free(current);

current=prev;

}

return 0;

}

scanf("%d",¤t->age); 这里其实是¤t->age 不知道为什么这里会显示乱码,如果粘贴不能正常出来的话自己改一下~追问: 不好意思哦,后面的是为每个员工增加30%,要怎么改呢。

追答:工资增加30%吗?,current->salary+30 这里输出结果的时候用1.3*(current->salary) 就好~

00分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用C语言编写的贪心算法解TSP问题的代码: ```c #include <stdio.h> #include <stdlib.h> #include <limits.h> #define MAX_N 100 // 最大城市数 #define INF INT_MAX // 定义无穷大 int n; // 城市数 int start; // 起点 int distance[MAX_N][MAX_N]; // 距离矩阵 int visited[MAX_N]; // 记录每个城市是否被访问过 int path[MAX_N]; // 记录访问路径 // 计算两个城市之间的距离 int calc_distance(int city1, int city2) { return distance[city1][city2]; } // 选择距离当前城市最近的未访问城市 int select_next_city(int current_city) { int min_distance = INF; int next_city = -1; for (int j = 0; j < n; j++) { if (!visited[j] && distance[current_city][j] < min_distance) { min_distance = distance[current_city][j]; next_city = j; } } return next_city; } // 使用贪心算法解TSP问题 void tsp_greedy() { // 初始化 for (int i = 0; i < n; i++) { visited[i] = 0; path[i] = -1; } path[0] = start; visited[start] = 1; // 选择下一个城市 for (int i = 1; i < n; i++) { int current_city = path[i-1]; int next_city = select_next_city(current_city); visited[next_city] = 1; path[i] = next_city; } // 将最后一个城市与起点相连形成回路 path[n-1] = start; } int main() { // 读入城市数和距离矩阵 scanf("%d", &n); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { scanf("%d", &distance[i][j]); } } // 随机选择一个起点 start = rand() % n; // 使用贪心算法解TSP问题 tsp_greedy(); // 输出访问路径和回路的总长度 int total_distance = 0; printf("Path: "); for (int i = 0; i < n; i++) { printf("%d ", path[i]); if (i > 0) { total_distance += calc_distance(path[i-1], path[i]); } } printf("\nTotal distance: %d\n", total_distance); return 0; } ``` 其中,`distance`是一个二维数组,表示各个城市之间的距离;`visited`和`path`分别是记录每个城市是否被访问过和记录访问路径的数组。程序读入城市数和距离矩阵,随机选择一个起点,使用贪心算法解TSP问题,并输出访问路径和回路的总长度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值