C語言基礎題目1

這道題目涉及到了C語言結構體,函數指針,排序的相關內容
函數

題目

小王是公司的倉庫管理員,一天,他接到了這樣一個任務:從倉庫中找出一根鋼管(倉庫中待測的鋼管數不超過1000根)。這聽起來不算什麼,可是這根鋼管的要求可真是讓他犯難了,要求以下:

一、 這根鋼管必定要是倉庫中最短的;

二、 這根鋼管必定要是最短的鋼管中最粗的;

三、 這根鋼管必定要是符合前兩條的鋼管中編碼最大的(每根鋼管都有一個互不相同的編碼,越大表示生產日期越近)。

相關的資料到是有,但是,手工從幾百份鋼管材料中選出符合要求的那根……

要不,仍是請你編寫個程序來幫他解決這個問題吧。

輸入測試的鋼管數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;
}
相關文章
相關標籤/搜索