牛客竞赛语法入门班顺序结构习题C语言代码及部分解析

目录

1001 这是一道签到题

1002 排列式

1003 小飞机

1004 学姐的"Helloword!"

1005 乘法表

1006 KiKi学程序设计基础

1007 疫情死亡率

1008 爱因斯坦的名言

1009 字符串输出1.0

1010 牛牛学说话之-整数

1011 牛牛学说话之-浮点数

1012 牛牛学加法

1013 牛牛学除法

1014 牛牛学取余

1015 浮点数除法

1016 计算带余除法

1017 水题再次袭来:明天星期几?

1018 开学?

1019 helloworld

1020 a+b

1021 整数的个位

1022 整数的十位

1023 反向输出一个四位数

1024 总成绩和平均分计算

1025 计算平均成绩

1026 牛牛学梯形

1027 牛牛学矩形

1028 牛牛学立体

1029  计算三角形的周长和面积

1030 你能活多少秒

1031 时间转换

1032 温度转换

1033 计算机内存

1034 【NOIP2017】成绩

1035 KiKi的最高分

1036 组队比赛

1037 平方根

1038 长方体

1039 使徒来袭

1040 白兔的分身术

1041 纸牌

1042 Tobaku Mokushiroku Kaiji

1043  珂朵莉的假动态仙人掌

1044 旅游观光

1045 【NOIP2002】自由落体

1046 挂科

1047 得不到的爱情


1001 这是一道签到题

#include<stdio.h>
int main()
{
   printf("zhe\nshi\nyi\ndao\nqian\ndao\nti");
   return 0;
}

1002 排列式

#include<stdio.h>

int main()
{
    printf("4396 = 28 x 157\n5346 = 18 x 297\n5346 = 27 x 198\n5796 = 12 x 483\n5796 = 42 x 138\n6952 = 4 x 1738\n7254 = 39 x 186\n7632 = 48 x 159\n7852 = 4 x 1963");
           return 0;
           }

1003 小飞机

#include<stdio.h>
int main()
{
    printf("     **     \n");
    printf("     **     \n");
    printf("************\n");
    printf("************\n");
    printf("    *  *    \n");
    printf("    *  *    ");
    return 0;
}

1004 学姐的"Helloword!"

#include<stdio.h>
int main()
{
    printf("Helo word!");
    return 0;
}

1005 乘法表

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i,j;
    for(i=1;i<=9;i++)
    {
        for(j=1;j<=i;j++)
        {
            printf("%d*%d=%2d ",j,i,j*i);
}
        printf("\n");
}
    return 0;
}

1006 KiKi学程序设计基础

#include<stdio.h>
int main()
{
    printf("printf(\"Hello world!\\n\");\n");
    printf("cout << \"Hello world!\" << endl;");
    return 0;
}

1007 疫情死亡率

解析:在C语言中整数除以整数结果只会显示整数部分,当除数和被除数中存在浮点数时,计算的结果为浮点数

#include<stdio.h>
int main()
{
    float a,b;
    scanf("%f %f",&a,&b);
    printf("%.3f%%",(b/a)*100);
    return 0;
}

1008 爱因斯坦的名言

解析:C语言中在引号中输出引号时需要在输出的引号前加一个\,要输出百分号时,需要敲入两个百分号

#include<stdio.h>
int main()
{
    printf("\"Genius is 1%% inspiration and 99%% perspiration.\"");
    return 0;
}

1009 字符串输出1.0

#include<stdio.h>
int main(){
    for(int i=1;i<=3;i++){
        printf("Welcome to ACM / ICPC!\n");
    }
    return 0;
}

1010 牛牛学说话之-整数

#include<stdio.h>
int main()
{
    int i;
    scanf("%d",&i);
    printf("%d",i);
    return 0;
}

1011 牛牛学说话之-浮点数

#include<stdio.h>
int main()
{
    float a;
    scanf("%f",&a);
    printf("%.3f",a);
    return 0;
}

1012 牛牛学加法

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d",a+b);
    return 0;
}

1013 牛牛学除法

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%d",a/b);
    return 0;
}

1014 牛牛学取余

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%d",a%b);
    return 0;
}

1015 浮点数除法

#include <stdio.h>
int main()
{
    float a,b;
    scanf("%f%f",&a,&b);
    printf("%.3f",a/b);
    return 0;
}

1016 计算带余除法

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%d %d",a/b,a%b);
    return 0;
}

1017 水题再次袭来:明天星期几?

#include<stdio.h>
int main()
{
    int i;
    scanf("%d",&i);
    if(i!=7) printf("%d",i+1);
    else printf("1");
    return 0;
}

1018 开学?

解析:一周有七天所以延迟的天数对7取余,再用原本的开学星期加上取余得到的余数,如果加上余数超过七天,则把前面一周的七天用余数的部分天数填满,而后剩下天数就是下一周的天数,由此得到开学是星期几

#include<stdio.h>
int main()
{
    int x,n,i;
    scanf("%d%d",&x,&n);
    if(x+n%7>7) printf("%d",n%7-(7-x));
    else printf("%d",x+n%7);
    return 0;
}

1019 helloworld

#include <stdio.h>
int main()
{
    printf("%c",'h'+1);
    printf("%c",'e'+1);
    printf("%c",'l'+1);
    printf("%c",'l'+1);
    printf("%c",'o'+1);
    printf("%c",' '+1);
    printf("%c",'w'+1);
    printf("%c",'o'+1);
    printf("%c",'r'+1);
    printf("%c",'l'+1);
    printf("%c",'d'+1);
    return 0;
}

1020 a+b

解析:printf("%X",a);可以输出a对应的十六进制大写字母表示的形式,printf("%x",a);可以输出a对应的十六进制小写字母表示的形式

#include <stdio.h>
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%x",a+b);
    return 0;
}

1021 整数的个位

#include <stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    printf("%d",a%10);
    return 0;
}

1022 整数的十位

#include<stdio.h>
int main()
{
   int a;
    scanf("%d",&a);    
    printf("%d",a/10%10);
    return 0;
}

1023 反向输出一个四位数

#include <stdio.h>
int main()
{
    int num,a,b,c,d;
    scanf("%d",&num);
    a=num/1000;
    b=num/100%10;
    c=num/10%10;
    d=num%10;
    printf("%d%d%d%d",d,c,b,a);
    return 0;
}

1024 总成绩和平均分计算

#include <stdio.h>
int main()
{
    float a,b,c,sum,average;
    scanf("%f %f %f",&a,&b,&c);
    sum=a+b+c;
    average=sum/3;
    printf("%.2f %.2f",sum,average);
    return 0;
}

1025 计算平均成绩

#include <stdio.h>
int main()
{
    float a,b,c,d,e,average;
    scanf("%f %f %f %f %f",&a,&b,&c,&d,&e);
    average=(a+b+c+d+e)/5;
    printf("%.1f",average);
    return 0;
}

1026 牛牛学梯形

#include <stdio.h>
int main()
{
    float up,down,height,area;
    scanf("%f%f%f",&up,&down,&height);
    printf("%.3f",(up+down)*height/2);
    return 0;
}

1027 牛牛学矩形

#include <stdio.h>
int main()
{
    float up,down,height,area;
    scanf("%f%f%f",&up,&down,&height);
    printf("%.3f",(up+down)*height/2);
    return 0;
}

1028 牛牛学立体

#include <stdio.h>
int main()
{
    int a,b,c,S,V;
    scanf("%d%d%d",&a,&b,&c);
    V=a*b*c;
    S=(a*b+b*c+a*c)*2;
    printf("%d\n%d",S,V);
    return 0;
}

1029  计算三角形的周长和面积

#include <stdio.h>
#include <math.h>
int main()
{
    float a,b,c;
    scanf("%f%f%f",&a,&b,&c);
    float p=(a+b+c)/2;
    printf("circumference=%.2f area=%.2f",a+b+c,sqrt(p*(p-a)*(p-b)*(p-c)));
    return 0;
}

1030 你能活多少秒

注意:需要定义为long long 型,否则容易溢出出错

#include <stdio.h>
int main()
{
    long long age;
    long long m;
    scanf("%lld",&age);
    m=age*31560000;
    printf("%lld",m);
    return 0;
}

1031 时间转换

#include <stdio.h>
int main()
{
    long long a;
    long long hour,minute,second;
    scanf("%lld",&a);
    hour=a/3600;
    minute=a/60%60;
    second=a%60;
    printf("%lld %lld %lld",hour,minute,second);
    return 0;
}

1032 温度转换

注意:需要乘以1.0转换

#include<stdio.h>
int main()
{
    double a;
    scanf("%lf",&a);
    printf("%.3f",1.0*5/9*(a-32));
    return 0;
}

1033 计算机内存

#include <stdio.h>
int main()
{
    int n;
    long long m;
    scanf("%d",&n);
    m=(n*1024*1024)/4;
    printf("%lld",m);
    return 0;
}

1034 【NOIP2017】成绩

注意:直接乘以小数会得0

#include <stdio.h>
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    printf("%d",(a*2+b*3+c*5)/10);
    return 0;
}

1035 KiKi的最高分

#include<stdio.h>
#include<math.h>
int main()
{
    int a,b,c,temp;
    scanf("%d %d %d",&a,&b,&c);
    temp=fmax(a,b);
    temp=fmax(temp,c);
    printf("%d",temp);
    return 0;
}

1036 组队比赛

#include <stdio.h>
#include <math.h>
int main()
{
    int a,b,c,d,result;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    int m1=fabs(a+b-c-d);
    int m2=fabs(a+c-b-d);
    int m3=fabs(a+d-b-c);
    result=fminf(m1,m2);
    result=fminf(result,m3);
    printf("%d",result);
    return 0;
}

1037 平方根

将n定义为int型对sqrt(a)取整数

#include<stdio.h>
#include<math.h>
int main()
{
    int a;
    scanf("%d",&a);
    int n=sqrt(a);
    printf("%d",n);
    return 0;
}

1038 长方体

解析:设三条棱长分别为x,y,z;三个面积为a,b,c;设a=x*y,b=x*z,c=y*z,则a*b/c=x^2,同理可求出其它几条棱长

#include <stdio.h>
#include <math.h>
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    int x=sqrt(a*b/c);
    int y=sqrt(a*c/b);
    int z=sqrt(b*c/a);
    printf("%d",4*(x+y+z));
    return 0;
}

1039 使徒来袭

解析:根据不等式:a+b+c>=3*(a*b*c)^1/3可以求得a+b+c的最小值;

注意,要用1.0/3,如果用1/3则得到的商只保留整数,结果会为0,会导致a+b+c的最小值始终为3.000

#include<stdio.h>
#include<math.h>
int main()
{
    float n;
    scanf("%f",&n);
    float msum;
    msum=3*pow(n,1.0/3);
    printf("%.3f",msum);
    return 0;
}

1040 白兔的分身术

解析:根据题意,p^k=n;对于指数函数y=a^x,当x越大,函数增长越快,所以在此当k=1时,p取得最大值,p的最大值为n,所以p+k的最大值为n+1

#include<stdio.h>
int main()
{
    long long n;
    scanf("%lld",&n);
    printf("%lld",n+1);
    return 0;
}

1041 纸牌

#include<stdio.h>
int main()
{

    int n;
    scanf("%d",&n);
    int a=n/2;
    int i=n,j=n;
    i=j-a;
    j=j-i;
    i=i-j;
    printf("%d",i+j);
    return 0;
}

1042 Tobaku Mokushiroku Kaiji

#include<stdio.h>
int main()
{
    int a,b,c,d,e,f;
    scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
    int i,j,k;
    if(a-e>=0) i=e;
    else i=a;
    if(b-f>=0) j=f;
    else j=b;
    if(c-d>=0) k=d;
    else k=c;
    int sum=i+j+k;
    printf("%d",sum);
    return 0;
}

1043  珂朵莉的假动态仙人掌

解析:以1和2的本数交替送

#include<stdio.h>
int main()
{
    int n,result,sum;
    scanf("%d",&n);
    result=n%3;
    if(result==0) sum=n/3*2;
    else sum=n/3*2+1;
    printf("%d",sum);
    return 0;
}

1044 旅游观光

解析:(1+n)mod(n+1)=0;(1+n-1)mod(n-1+1)=0....以此类推得到,当n为偶数时总票价为:n/2-1,当n为奇数时,总票价为:n/2;

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    if(n%2==0) printf("%d",n/2-1);
    else printf("%d",n/2);
    return 0;
}

1045 【NOIP2002】自由落体

解析:计算出小球下落到和小车顶部高度一样时的时间和小车最右端的位置,进而计算出此时可接收到的的小球的位置编号,计算出小球下落到地面时的时间和小车最左端的位置,进而计算出此时可接收到的小球的位置编号,注意:因为小球和小车距离不超过0.00001都可看作能够被小车接到,所以在这里要注意细节处理

#include<stdio.h>
#include<math.h>
int main()
{
    double H,S1,V,L,K,n;
    scanf("%lf%lf%lf%lf%lf%lf",&H,&S1,&V,&L,&K,&n);
    double H2=H-K;
    double t1,t2,x1,x2;
    t1=sqrt(H2/5);//小球下落到与小车顶部高度相同的时刻
    t2=sqrt(H/5);
    x1=S1-V*t1+L;//t1时刻小车最右端位置
    x2=S1-V*t2;//t2时刻小球最左端位置
    int sum,Max,Min;
    if(x2>n-1+0.00001||x1<-0.00001)//一个小球都接不住的情况
    sum=0;
    else
    {
        if(x1>=n-1-0.00001)//最右端的小球在可接收范围时
            Max=n-1;
        //floor(x1):对x1向下取整
        else if(x1-floor(x1)>=0.9999)//小数部分大于0.9999时,x1位置后面的一个球也会被接收
            Max=floor(x1)+1;
        else Max=floor(x1);
        if(x2<=0.00001)
            Min=0;
        else if(x2-floor(x2)<=0.00001)
            //如果小数部分小于0.00001则x1位置的前一个球也会被接到
            //x1位置前一个球的位置编号为floor(x2)
            Min=floor(x2);
        else Min=floor(x2)+1;//小数部分大于0.00001时,x2位置后一个球被接到,该球位置编号为floor(x2)+1
        sum=Max-Min+1;//最大位置编号-(最小位置编号-1)
}
    printf("%d",sum);
    return 0;
}

1046 挂科

#include<stdio.h>
#include<math.h>
int main()
{
    int n,x,y;
    scanf("%d%d%d",&n,&x,&y);
    int max,min;
    if(x>=y) max=y;
    else max=x;
    if(x+y>=n)
    min=x+y-n;
    else min=0;
    printf("%d %d",max,min);
    return 0;
}

1047 得不到的爱情

根据塞瓦维斯特定理: 已知a,b为大于1的正整数,a,b的最大公约数为1或者gcd(a,b)=1或者a与b胡志或者a与b互素,则使不定式方程ax+by=C不存在的最大非负数C=a*b-a-b;

#include<stdio.h>
int main()
{
    long long n,m;
    scanf("%lld%lld",&n,&m);
    printf("%lld",n*m-n-m);
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值