成信大807程序综合设计2018年试题答案(部分)

此答案系学长自己做出来的答案,并非官方答案,有问题欢迎留言交流!由于答案不完整,大家也可以将自己做的以及相关想法写在留言栏里面,方便大家交流查阅,谢谢!

一、单项选择题

  1. B
  2. C
  3. A
  4. D
  5. A
  6. D
  7. B
  8. C
  9. C
  10. B

二、判断题

  1. ×
  2. ×
  3. ×
  4. ×
  5. ×
  6. ×

三、程序分析题

21题:
功能:对字符串的字母进行计数,并区分大小写。
运行结果:
K - 1
O - 1
T - 1
a - 2
e - 1
g - 1
h - 1
i - 2
m - 1
o - 1
p - 1
r - 2
s - 3
t - 2

上面的答案是错误的,正确答案如下(更新于2018年11月11日17:05:28)
功能:对字符串中的字母进行统计,不区分大小写,最终在输出计数结果时统一按照大写字母输出结果!
运行结果:

统计结果为:
A - 2
E - 1
G - 1
H - 1
I - 2
K - 1
M - 1
O - 2
P - 1
R - 2
S - 3
T - 3

22题:
功能:分别输出成绩最高与最低的学生的姓名与分数。
运行结果:

Max is: Wanghai, 93
Min is: Liuhong, 62

23题:
功能:将输入的正整数逆序输出。
运行结果:54321

四、程序设计题

24题:

25题:

#include<stdio.h>
#include<string.h>

#define N 100

struct person
{
    char name[20];
    char sex;
    int age;
}per[N];

int main()
{
    int i, count[6]={0};
    printf("请输入100个人的姓名、性别和年龄:\n");
    for(i=0;i<N;i++)
    {
        printf("请输入第 %d 个人的信息:\n", i+1); 
        gets(per[i].name);
        per[i].sex = getchar();
        scanf("%d", &per[i].age);
        getchar(); // 接收多余的回车符 
    }
    for(i=0; i<N; i++)
    {
        if(per[i].sex == 'M')
        {
            if(per[i].age>=0 && per[i].age<=29)
            {
                count[0]++;
            }
            else if(per[i].age>=30 && per[i].age<=59)
            {
                count[1]++;
            }
            else if(per[i].age>=60)
            {
                count[2]++;
            }
        }
        else if(per[i].sex=='W')
        {
            
            if(per[i].age>=0 && per[i].age<=29)
            {
                count[3]++;
            }
            else if(per[i].age>=30 && per[i].age<=59)
            {
                count[4]++;
            }
            else if(per[i].age>=60)
            {
                count[5]++;
            }
        }
        
    }
    printf("男性0~29岁:%d人, 30~59岁:%d人, 60岁以上:%d人\n", count[0], count[1], count[2]);
    printf("女性0~29岁:%d人, 30~59岁:%d人, 60岁以上:%d人\n", count[3], count[4], count[5]);
    
    return 0;
} 

26题:

📢📢📢此题的答案由一位不愿意透露姓名的好心人提供,让我们一起感谢他吧!🙏🙏🙏

#include<stdio.h>
#include<string.h>

void sort(char a[],int len)
{
    char b[100];
    int m=0;
    for(int i=0;i<len;i++)
    {
        if(a[i]<'0' || a[i]>'9')
        {    
            b[m]=a[i];
            m++;
            
        }
    }
    for(int j=0;j<m;j++)
    {
        printf("%c",b[j]);
    }
    putchar('\n');
}


int main()
{
    char a[100];
    
    gets(a);

    int len=strlen(a);

    sort(a,len);
    
    return 0;
}

相关链接

此答案系学长自己做出来的答案,并非官方答案,有问题欢迎留言交流!由于答案不完整,大家也可以将自己做的以及相关想法写在留言栏里面,方便大家交流查阅,谢谢!

文章最后更新时间为:2019 年 08 月 28 日 23:53:51

已有 5 条评论
  1. 张云霞 张云霞

    我认为21题结果题有问题,我运行出来不是这个结果

    1. 您好,谢谢您的反馈,这儿的答案确实是我做错了,我现在马上更新!

  2. 张云霞 张云霞

    21题我运行出来的结果是字母个数,小写字母转换成大写字母

    1. 嗯,是的,的确应该是统计的字母个数,不区分大小写,最终在输出计数结果时都转换成了大写字母!

      谢谢反馈~~

    2. 不好意思,我描述还是有问题,只是在输出的时候那儿显示的是大写字母,并没有将小写字母转换成大写字母!!!

添加新评论