C语言基础题目1
2020-02-03 02:50
537 查看
这道题目涉及到了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 <stdio.h> #include <stdlib.h> #include <string.h> 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<n;i++) scanf("%d %d %s",&a[i].a, &a[i].b, a[i].c); 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<n;i++) for(j=0;j<n-i;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; }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- C语言基础巩固题目
- 基础语言-题目57(6174问题)
- ios开发之c语言基础-结构体经典题目
- 【C语言基础】C语言一些简单题目(一)
- C语言基础------题目1
- 基础语言-题目39(水仙花数)
- Java语言基础相关的面试题目
- 基础语言-题目40(求最大公约数和最小公倍数)
- 基础语言-题目64(鸡兔同笼)
- iOS开发之c语言基础-动态内存分配与管理题目
- 基础语言-题目65(另类的阶乘)
- ios开发之c语言基础-高级指针题目
- 基础语言-题目56(阶乘因式分解)
- 基础语言-题目72(financial)
- 昨晚看《天才知道》3进2的一个java基础题目有感:java是一种跨平台语言,它组成的2个部分是什么
- nyist-基础语言-题目24(素数距离问题)
- C语言基础题目(一)
- 基础语言-题目62(笨小熊)
- 基础语言-题目74(小学算术)
- 嵌入式linux工程师面试题目C语言基础部分