第五届全国信息水平设计大赛C语言复赛B卷答案

来源:互联网 发布:手机淘宝首页图片尺寸 编辑:程序博客网 时间:2024/04/28 10:31
#include <stdio.h>#include <conio.h>/*1、编程解决如下问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。   百钱买百鸡,问鸡翁,鸡母,鸡雏各几何?(20分)*/int main(){    int rooster = 0,//公鸡        hen = 0,    //母鸡        child = 0;  //鸡雏    for (rooster = 0; rooster <= 20; rooster++)    {        for (rooster = 0; hen <= 33; hen++)        {            child = 100 - rooster - hen;            if (child >= 0 && 100 == (rooster * 5 + hen * 3 + child / 3 * 1))            {                printf("鸡翁: %d\t鸡母: %d\t鸡雏: %d\n", rooster, hen, child);            }        }    }    getch();    return 0;}    int i;    for (i = 0; i < size; i++)    {        if (strcmp(tmp, art[i].word) == 0)            return i;//返回下标    }    return -1;}/*2、编程实现:有二维数组a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}},将数组a的每一行元素均除以该行上绝对值最大的元素,按行输出新数组。(20分)*/#include <stdio.h>#include <conio.h>int main(){    float a[3][3] = {{1.3, 2.7, 3.6}, {2, 3, 4.7}, {3, 4, 1.27}},          max;    int i, j;    puts("处理前:");    for (i = 0; i < 3; i++)    {        for (j = 0; j < 3; j++)        {            printf("%6f  ", a[i][j]);        }        putchar(10);    }    for (i = 0; i < 3; i++)    {        max = fabs(a[i][i]);        for (j = 1; j < 3; j++)        {            if (max < fabs(a[i][j]))                max = a[i][j];        }        for (j = 0; j < 3; j ++)            a[i][j] /= max;    }    puts("处理后:");    for (i = 0; i < 3; i++)    {        for (j = 0; j < 3; j++)        {            printf("%6f  ", a[i][j]);        }        putchar(10);    }    return 0;}/*3、编程:设x、y取值为区间[1,10]的整数, f(x,y)=(3x-2y)/(x+y),求使f(x,y)取最小值的x1、y1,要求使用自定义函数实现f(x,y)功能。(20分)*/#include <stdio.h>#include <conio.h>double getFx(int x, int y){    return  (3 * x - 2 * y) / (x + y);}int main(){    double fx = 100000, tmp = 0;    int x, y;    int minx, miny;    for (x = 1, y = 1; x <= 10 && y <= 10; x++, y++)    {        tmp = getFx(x, y);        if (fx - tmp > 1e-7)        {            fx = tmp;            minx = x;            miny = y;        }    }    printf("%d %d\n", minx, miny);    return 0;}/*4、编写函数fun,其功能是:在字符串中所有数字字符前加一个“*”字符,要求通过指针实现。(20分)*/#include <stdio.h>#include <conio.h>#include <string.h>int main(){    char str[200], *pBegin = str;    printf("输入一个串:\n");    gets(pBegin);    for (; *pBegin != '\0'; pBegin++)    {        if (*pBegin >= '1' && *pBegin <= '9')        {            putchar('*');            putchar(*pBegin);        }        else            putchar(*pBegin);    }    putchar(10);    getch();    return 0;}/*5、编程:已知学生记录由学号和学习成绩构成,N名学生的记录已存入结构体数组中,找出成绩最低的学生,并输出这个学生的信息,已知学生信息如下。(20分)A01,81;A02,89;A03,66;A04,87;A05,77A06,90;A07,79;A08,61;A09,80;A10,71*/#include <stdio.h>#include <conio.h>#include <string.h>typedef struct{    char sno[5];    int score;}Student;int main(){    Student stu[10] = {{"A01", 81}, {"A02", 89}, {"A03", 66}, {"A04", 87},                       {"A05", 77}, {"A06", 90}, {"A07", 79}, {"A08", 61},                       {"A09", 80}, {"A10", 71}};    int i, min = stu[0].score, index;    for (i = 1; i < 10; i++)    {        if (min > stu[i].score);        {            min = stu[i].score;            index = i;        }    }    printf("成绩最低的学生的信息:\n");    printf("%-5s %d\n", stu[index].sno, min);      getch();    return 0;}/*5、编程:已知学生记录由学号和学习成绩构成,N名学生的记录已存入结构体数组中,找出成绩最低的学生,并输出这个学生的信息,已知学生信息如下。(20分)A01,81;A02,89;A03,66;A04,87;A05,77A06,90;A07,79;A08,61;A09,80;A10,71*/#include <stdio.h>#include <conio.h>#include <string.h>typedef struct{    char sno[5];    int score;}Student;int main(){    Student stu[10] = {{"A01", 81}, {"A02", 89}, {"A03", 66}, {"A04", 87},                       {"A05", 77}, {"A06", 90}, {"A07", 79}, {"A08", 61},                       {"A09", 80}, {"A10", 71}};    int i, min = stu[0].score, index;    for (i = 0; i < 10; i++)    {        if (min > stu[i].score)        {            min = stu[i].score;            index = i;        }    }    printf("成绩最低的学生的信息:\n");    printf("%-5s %d\n", stu[index].sno, stu[index].score);    getch();    return 0;}/*6、附加题:编写一个函数InverseByWord(char *sentence),实现一个英文句子按单词逆序存放的功能,并给出测试程序。(50分)如:This is an interesting programme.逆序后变为:.programme interesting an is This*/#include <stdio.h>#include <conio.h>#include <string.h>void InverseByWord(char *sentence){    int i, j = strlen(sentence) - 1, wordLen = 0;    int index = 0, len = j + 1;    char tmp[201];    if (sentence[j] == '.')    {        tmp[index++] = '.';        j--;    }    while (j >= 0)    {        wordLen = 0;        while (sentence[j] != ' ')        {             j --;             wordLen ++;        }        for (i = 0; i < wordLen; i++)        {            if (j >= 0)                 tmp[index++] = sentence[j + i + 1];        }        while (sentence[j] == ' ')//去掉空格        {             tmp[index++] = sentence[j--];        }    }    strncpy(sentence, tmp, len);}int main(){    char str[201];    int i = 0;    str[0] = ' ';    printf("输入一个字符串:\n");    gets(str+1);    InverseByWord(str);    printf("逆序后:\n");    puts(str);    getch();    return 0;}

原创粉丝点击