c语言作文的题目_C语言基础题目1

这道题目涉及到了C语言结构体,函数指针,排序的相关内容

题目

小王是公司的仓库管理员,一天,他接到了这样一个任务:从仓库中找出一根钢管(仓库中待测的钢管数不超过1000根)。这听起来不算什么,但是这根钢管的要求可真是让他犯难了,要求如下:

1、 这根钢管一定要是仓库中最短的;

2、 这根钢管一定要是最短的钢管中最粗的;

3、 这根钢管一定要是符合前两条的钢管中编码最大的(每根钢管都有一个互不相同的编码,越大表示生产日期越近)。

相关的资料到是有,可是,手工从几百份钢管材料中选出符合要求的那根……

要不,还是请你编写个程序来帮他解决这个问题吧。

输入测试的钢管数n,整数n(n<=1000)表示测试数据的组数)

每根钢管有这样三个信息,分别表示一根钢管的长度(以毫米为单位)、直径(以毫米为单位)和编码(一个含有9位数字的字符串)。

输出符合条件的那根钢管

钢管结构体定义如下:

typedef struct m

{

int a;//长度

int b;//直径

char c[10];//编号

}Infor;

输入提示信息:"请输入钢管数量:\n"

输入数据格式:"%d"

输入提示信息:"请输入钢管信息(长度、直径和编码:\n"

输入数据格式:"%d%d%s"

输出提示信息:printf("仓库中符合条件的那根钢管的信息是:\n");

输出数据格式:"%d\t%d\t%s\n"

#include

#include

#include

const int maxn = 1010;

typedef struct m info;

struct m

{

int a;

int b;

char c[10];

};

void sort(int n, info a[],int (*cmp)(info, info));

int SortBya(info, info);

int SortByb(info, info);

int SortByc(info, info);

int main(void)

{

int n;

info a[maxn];

printf("请输入钢管数量:\n");

scanf("%d",&n);

printf("请输入钢管信息(长度、直径和编码:\n");

int i;

for(i=0;i

sort(n, a, SortBya);

int find = 0, mark=0;

int t = a[0].a;

while(!find)

{

mark ++;

if(t != a[mark].a) find = 1;

}

sort(mark, a, SortByb);

find = 0;

mark = 0;

t = a[0].b;

while(!find)

{

mark ++ ;

if(t != a[mark].b) find = 1;

}

sort(mark, a, SortByc);

printf("仓库中符合条件的那根钢管的信息是:\n");

printf("%d\t%d\t%s\n", a[0].a, a[0].b, a[0].c);

return 0;

}

void sort(int n, info a[],int (*cmp)(info, info))

{

int i,j;

for(i=1;i

for(j=0;j

if((*cmp)(a[j], a[j+1]))

{

info temp;

temp = a[j];

a[j] = a[j+1];

a[j+1] = temp;

}

}

int SortBya(info a, info b)

{

if(a.a > b.a) return 1;

else return 0;

}

int SortByb(info a, info b)

{

if(a.b < b.b) return 1;

else return 0;

}

int SortByc(info a, info b)

{

long int t1,t2;

t1 = atol(a.c);

t2 = atol(b.c);

if(t1 < t2) return 1;

else return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值