新手C语言语法 题解

 传送门 <---------------------

注:代码 题解 仅供参考 严禁抄袭!!!严禁抄袭!!!


1001:

sort 排序后(从小到大)就可以从后往前找 如果有分数差值相同的,就会取分数高的。

注 :sort 需要   #include<algorithm> 。

不过现在 只要知道 sort() 可以从小到大排序就好了

感兴趣可以看这个 (初学可能 看不懂 可与先了解一下)

三分钟学会sort排序详解(新手版)-CSDN博客

也可以不用排序  直接找,不过注意找到 分数同样接近的 要取最大值。

1001
 #include<cstdio>
 #include<algorithm>
 #include<cmath>
 using namespace std;

int main()
{
    int n,gad;
    scanf("%d %d",&n,&gad);
    int der=0x3f3f3f3f;
    int a[n];
    int t=-1;
    for(int i=0;i<n;i++) scanf("%d",&a[i]);
    sort(a,a+n);
    for(int i=n-1;i>=0;i--)
    {
        if(abs(a[i]-gad)<der)
        {
            der=abs(a[i]-gad);
            t=a[i];
        }
    }
    printf("%d\n",t);

    return 0;
}

1002:

注:strcmp 函数  需要 #include<cstring> 

详细解释可以看这个
strcmp函数详解:字符串【比较】的利器-CSDN博客

注意多组数据

注意 ac题数可能为0 特殊情况

1002
 #include<cstdio>
 #include<algorithm>
 #include<cmath>
 #include<cstring>

using namespace std;

int main()
{

    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int gad=0;
        int num=0;
         while(n--)
        {
            int x;
            char c[10];
            char ac[10];
            scanf("%d %s",&x,&c);
            if(strcmp(c,"AC")==0)
            {
                gad+=x;
                num++;
            }
        }

        if(num!=0)printf("%d %d\n",gad,gad/num);
        else printf("0 0\n");
    }

    return 0;
}

1003:

条件判断一下就好

分4种情况 :

f1=1,f2=1 都可以

f1=0,f2=1; 只能晚跑

f1=1,f2=0; 只能晨跑

f1=0,f2=0 不管他

只能跑 一个的话直接减去 要求的次数(注意最后不能比0小)

然后判断 都可以跑的 次数是否 可以弥补剩下没跑的晨晚跑次数 就好了。


1003
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>

using namespace std;

int main()
{
    int a,b,n;
   
    int all=0;
    scanf("%d %d %d",&n,&a,&b);
    
    while(n--)
    {
        int f1,f2;
        scanf("%d %d",&f1,&f2);
        if(f1==0&&f2==1) b--;
        else if(f1==1&&f2==0) a--;
        else if(f1==1&&f2==1) all++;
    }
    //printf("%d %d\n",morning,night);
    a=max(a,0);
    b=max(b,0);
    if(all-a-b>=0)
    {
        printf("Yes\n");
    }
    else printf("No\n");

    return 0;
}

1004:

max /min 函数 需要#include<cmath>

也可以 用 if 判断 一样的


1004
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>

using namespace std;

int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
        int a,b;
        scanf("%d %d",&a,&b);
        printf("%d\n",max(a,b));
    }
    return 0;
}

1005:

循环处理

每次要加的数 是之前的 数*10+a。

1005
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>

using namespace std;

int main()
{
    int  a,n;
    

    while (scanf("%d %d",&a,&n)!=EOF)
    {
        int sum=0;
        int temp=a;
        for(int i=1;i<=n;i++)
        {
            if(i!=1)
            {
                temp=temp*10+a;
                sum+=temp;
            }
            else
            {
                sum+=temp;
            }
        }
        printf("%d\n",sum);
    }
    return 0;
}

1006:

判断完全平方数

sqrt函数 需要#include<cmath>  作用是开二次方根。

-1时 要退出循环

1006
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>

using namespace std;

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        if(n==-1) break;
        if(int(sqrt(n))*int(sqrt(n))==n)
        {
            printf("Yes\n");
        } 
        else printf("No\n");
    }

    return 0;
}

1007:

直接输出就好了

代码略 qwq


1008:

输入三角形的边长a、b和c,求其面积

保留小数,浮点数。

1008
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>

using namespace std;



int main()
{
    double a,b,c;
    scanf("%lf%lf%lf",&a,&b,&c);
    double p=(a+b+c)/2;
    printf("%.3f",sqrt(p*(p-a)*(p-b)*(p-c)));

}

1009:

整除 余除一下就好了。

注意输入的 数据单位是,但糖果的单位是

1009
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>

using namespace std;

int main()
{
    int n;
    scanf("%d",&n);
    n*=10;
    printf("%d %d\n",n/3,n%3);

    return 0;
}

1010:

浮点数 保留 小数。

1010

#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>

using namespace std;

int main()
{
    double x;
    scanf("%lf",&x);
    printf("%.12f",x);
    return 0;
}

1011:

注意 int 会不够,数据比较大,所以 用了  long long

仔细观察 是有规律的

由于是直角边关系 a^2+b^2=c^2

s1=s3+s2

s3=s4+s5

s2=s6+s7

你会发现每次增长的 面积就是 s1的面积 。

1011
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>

using namespace std;

int main()
{
    long long a[3],n;
    scanf("%lld%lld%lld%lld",&a[0],&a[1],&a[2],&n);
    sort(a,a+3);
    printf("%lld\n",(n+1)*(a[2]*a[2]));

    return 0;
}

1012:

直接输出 2*n;

1012
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>

using namespace std;

int main()
{
    int n;
    scanf("%d",&n);
    printf("%d\n",n*2);

    return 0;
}

1013:

数字三角形

注意数字前的空格数,数字间的空格,最后是换行 不要留空格。

耐心点就好。

1013
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>

using namespace std;

int main()
{
    int n;
    scanf("%d",&n);
    int space=(n-1)*2;
    for(int i=1;i<=n;i++)
    {
        for(int j=space;j>=1;j--)
        {
            printf(" ");
        }
        space-=2;
        for(int j=1;j<=i;j++)
        {
            if(j!=1) printf(" ");
            printf("%d",j);
        }
        for(int j=i-1;j>=1;j--)
        {
            printf(" %d",j);
        }
        printf("\n");
    }

    return 0;
}

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值