• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

北理工c语言期末考试

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
1
给定一个区间,输出其中前半部分数字之和等于后半部分数字之和的数,没有则输出No output。(15分)

题目内容:

给定一个区间,输出其中前半部分数字之和等于后半部分数字之和的数,没有则输出No output。

输入样例:120[空格]130[回车]

输出样例:121[回车]

输入样例:500[空格]500[回车]

输出样例:No output[回车]

时间限制:500ms内存限制:32000kb

#include <stdio.h>

int divide(int i,int *num)
{
    int j = 0;
    while(i)
    {
        num[j] = i%10;
        i = i/10;
        j ++;
    }
    return j;
}

int sum_equal(int *num,int len)
{
    int i,sum,sum1;
    sum = sum1 = 0;
    for(i=0;i<len/2;i++)
    {
        sum += num[i];
        sum1 += num[len-i-1];
    }
    if(sum == sum1)
        return 1;
    else return 0;
}

int main()
{
    int a,b,len,num[12],flag;
    scanf("%d%d",&a,&b);
    flag = 0;
    for(int i=a;i<=b;i++)
    {
        len = divide(i,num);
        if(sum_equal(num,len))
        {
            flag = 1;
            printf("%d\n",i);
        }
        else{
            if(i == b && !flag)
                puts("No output");
        }
    }
    return 0;
}
2
输入数字和大写字母,输出由字母组成的菱形。(15分)

题目内容:

输入数字和大写字母,输出由字母组成的菱形。

输入样例:

3[空格]B[回车]

输出样例:

[空格][空格]B[回车]

[空格]C[空格]C[回车]

D[空格][空格][空格]D[回车]

[空格]E[空格]E[回车]

[空格][空格]F[回车]

时间限制:500ms内存限制:32000kb

#include <stdio.h>

int main()
{
    int num,index;
    char c;
    scanf("%d%c",&num,&c);
    scanf("%c",&c);
    index = 0;
//    printf("%c\n",'c'+1);
    //分开打印上半部分和下半部分
    for(int i=1;i<=num;i++)
    {
        for(int j=num-i;j>0;j--)
            printf(" ");
        printf("%c",c+index);
        for(int k=2*i-3;k>0;k--)
            printf(" ");
        if(i != 1)
            printf("%c",c+index);
        puts("");
        index ++;
    }
    index = num;
    for(int t=num-1;t>=1;t--)
    {
        for(int j=num-t;j>0;j--)
            printf(" ");
        printf("%c",c+index);
        for(int k=2*t-3;k>0;k--)
            printf(" ");
        if(t != 1)
            printf("%c",c+index);
        puts("");
        index ++;
    }
    return 0;
}

第一组用例居然没有通过,不可思议!!!

3
输入学生的个数,然后输入姓名及三科成绩列表,输出按平均成绩从高到低排序的成绩单(10分)

题目内容:

输入学生的个数,然后输入姓名及三科成绩列表,输出按平均成绩从高到低排序的成绩单。

#include <stdio.h>
#include <string.h>
typedef struct STU{
    char name[10];
    int score[3];
    float avg;
}stu;

void SortByAvg(stu *s,int n)
{
    char t_name[10];
    for(int i=0;i<n-1;i++)
        for(int j=i+1;j<n;j++)
            if(s[j].avg > s[i].avg)
            {
                strcpy(t_name,s[j].name);
                strcpy(s[j].name,s[i].name);
                strcpy(s[i].name,t_name);
                for(int k=0;k<3;k++)
                    s[i].score[k] = s[j].score[k] + s[i].score[k] -(s[j].score[k] = s[i].score[k]);
            }
}
int main()
{
    stu s[50];
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        getchar();
        scanf("%s%d%d%d",s[i].name,&(s[i].score[0]),&(s[i].score[1]),&(s[i].score[2]));
        s[i].avg = 1.0*(s[i].score[0]+s[i].score[1]+s[i].score[2])/3;
    }
    SortByAvg(s,n);
    for(int t=0;t<n;t++)
    {
        printf("%s %d %d %d\n",s[t].name,s[t].score[0],s[t].score[1],s[t].score[2]);
    }
    return 0;
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c/C++编译的程序占用的内存分为以下几个部分发布时间:2022-07-14
下一篇:
【C++算法设计】八数码问题发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap