2018年试题编程题答案

24.输出9*9乘法口诀(本题就是考察对for循环的操作,以及输出的格式)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    for (int i = 1; i < 10; i++)
    {
        for (int j =1 ; j < i+1; j++)
        {
        
            printf("%d*%d=%2d ",i,j, i*j);

        }
        printf("\n");
    }


    getch();
}

25.从键盘上输入100人的姓名、性别和年龄,分别统计0-29岁、30-59、60以上的男、女人数。(本题笔者感觉考察的是结构体的运用,用结构体数组保存数据,同时还有分支结构的考察,弄清楚各种情况的分界点)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

struct Person
{
    char name[20];
    int age;
    char xingbie;
}arr[100];

void inputs(struct Person peolep[])
{
    for (int i = 0; i <100; i++)
    {
        printf("请输入第%d个人的信息\n",i+1);
        printf("请输入姓名");
        scanf("%s",peolep[i].name);
        printf("\n请输入年龄");
        scanf("%d", &peolep[i].age); 
        printf("\n请输入性别");
        scanf(" %c",&peolep[i].xingbie); //在这里%c前面有一个空格,我在这里就出错了加空格屏蔽了空白字符,另外千万注意加&。

    }
}

int print(struct Person peolep[])
{
    int Mp29 = 0, Fp29 = 0, Mp59 = 0, Fp59 = 0, Mp60=0,Fp60=0;
    for (int i = 0; i < 100; i++)
    {
        if (peolep[i].age>=0&& peolep[i].age<=29)
        {
            if (peolep[i].xingbie=="M")
            {
                Mp29++;
            }
            else 
            {
                Fp29++;
            }
        }
        else
        {
            if (peolep[i].age >= 30 && peolep[i].age <= 59)
            {
                if (peolep[i].xingbie == "M")
                {
                    Mp59++;
                }
                else
                {
                    Fp59++;
                }
            }
            else
            {
                if (peolep[i].xingbie == "M")
                {
                    Mp59++;
                }
                else
                {
                    Fp59++;
                }
                /*printf("%s%d%c", peolep[i].name, peolep[i].age, peolep[i].xingbie);*/
            }
        }
        
    }
    printf("0-29岁的男生的人数为%d\n",Mp29);
    printf("0-29岁的女生的人数为%d\n",Fp29);
    printf("30-59岁的男生的人数为%d\n",Mp59);
    printf("30-59岁的女生的人数为%d\n",Fp59);
    printf("60岁以上的男生的人数为%d\n", Mp60);
    printf("60岁以上的女生的人数为%d\n", Fp60);
}

int main()
{
    struct Person  *p= arr;
    
    inputs(p);
    print(p);

    getch();
}

26.从键盘上输入字符串1,将字符串1中除去数字字符‘0’-‘9’之后的其他字符保留在字符串2中,并输出字符串2.

方法一:

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

void print(char *str1,char *str2)
{
    int j = 0;
    for (int i = 0; i < strlen(str1); i++)
    {
        if (str1[i]>='0'&&str1[i]<='9')
        {
            continue;
        }
        else 
        {
        
            str2[j] = str1[i];
            j++;
        }
    }
    printf("%s", str2);
}

int main()
{
    char str1[100];
    char str2[100] = {'\0'};   //注意这里的数组的初试化很重要,不然会出现乱码的情况。
    scanf("%s", str1);
    print(str1, str2);
    getch();
}

方法二:优化点的

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


int main()
{
    char str1[100], str2[100];
    int i = 0, j = 0;
    gets(str1);
    while (str1[i])
    {
        if (str1[i]<'0' || str1[i]>'9')
            str2[j++] = str1[i];
        i++;
    }
    str2[j] = '\0';
    printf("%s", str2);
    getch();
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值