星球杯实验室2022年招新第一次作业题题解

这节课由于只讲了输入输出,所以题目难度偏简单,各位在完成题目之余多复习,对题目多思考,多拓展,看我的题解如果看不懂可以来问我或者根据原题去C语言网找到原题,去看各位大佬的题解。

A题:

原题:题目1001: 

[编程入门]第一个HelloWorld程序

代码部分:

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

题解:

很简单的一道题,”Hello World!“大概是所有人初学C语言输出的第一句话吧。这题在输出Hello World的基础上,增加了两行花边,主要考察转义字符的使用(\n很常用)

PS:遇见这种固定输出,记得善用ctrl+c和ctrl+v


B题:

原题:题目 1005: 

[编程入门]温度转换

代码部分:

#include "stdio.h"
int main(){
    float f;
    scanf("%f",&f);
    float c;
    c=5*(f-32)/9;
    printf("c=%.2f",c);
}

题解:

依旧是简单的输入输出问题,不过附加了浮点数计算。注意,因为我这里定义f的类型是float,如果你定义的类型是double,就该把%f换成%lf,printf处同理,换成%.2lf。


C题:

原题:题目 1006: 

[编程入门]三个数找最大值

代码部分:

#include "stdio.h" //方法一,三目运算符
int main(){
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    int max;
    max=a>=b?a:b;
    max=max>=c?max:c;
    printf("%d",max);
}
#include<stdio.h> //方法二:if else
int main(){
    int a,b,c,max;
    scanf("%d %d %d",&a,&b,&c);
    if(a>b){
        max=a;
    }else{
        max=b;
    }
    if(c>max){
        max=c;
    }
    printf("%d\n",max);
    return 0;
}

题解:

方法一:题目是输入a、b、c三个值,输出其中最大值,除了需要a,b,c三个变量以外,还需要一个变量max存放最大值,第一段三目运算将a和b中较大的值赋给max,第二段三目运算将max(即a和b中较大的)和c中较大的值赋给max(答案),此时的max是a,b,c中最大的值

方法二:题目是输入a、b、c三个值,输出其中最大值,除了需要a,b,c三个变量以外,还需要一个变量max存放最大值,先拿a和b比较,如果a>b则max存放a的值,否则存放max的值,再拿c和max比较(因为max中存放的是a,b中最大的),如果c>max,则把c中的值替换max中的值,输出max


D题:

原题:题目 1055: 

二级C语言-进制转换

代码部分:

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

题解:

1、%d-以十进制形式输出带符号整数;

2、%o-以八进制形式输出无符号整数(不输出前缀O);

3、%x-以十六进制形式输出无符号整数(不输出前缀OX);

4、%u-以十进制形式输出无符号整数;

5、%f-以小数形式输出单、双精度实数;

6、%e-以指数形式输出单、双精度实数;

7、%g-以%f%e中较短的输出宽度输出单、双精度实数;

8、%c-输出单个字符;

9、%s-输出字符串;

本题考察基础输入输出与输出类型格式


E题:

原题:题目 1951: 

求平方和

代码部分:

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

题解:

没什么难的,读入两个整数,再输出两个整数的平方和,看代码就可以看懂啦


F题:

原题:题目 1952: 

求长方形面积

代码部分:

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    int c=2*a+2*b;//周长
    printf("C:%d\n",c);
    int s=a*b;//面积
    printf("S:%d",s);
    return 0;
}

题解:

和E题其实是一样的,不过注意题目的输出格式,不要忘记了“C:”和“S:”


G题:

原题:题目 1953: 

三位数分解

代码部分:

#include<stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    int hundred=a/100;//百位
    int ten=a/10%10;//十位
    int bits=a%10;//个位
    printf("%d\n",hundred);
    printf("%d\n",ten);
    printf("%d",bits);
    return 0;
}

题解:

做这题之前,我们要先知道一个知识点,int类型不管在进行除法运算还是取余运算时,结果都是向下取整的。所以我们可以利用这个特性来取出一个整数的每一位,比如123这个数,我想取最后一位,可以用123对10取余,得到的就是个位数3,如果我想取出第二位,那么我就先用123除以10,得到12,再用12对10取余,得到的就是十位数2,以此类推。

PS.如果题目是给你一个50位数,难道要写50行printf吗?

PPS.如果本题没有告诉你是几位数,那么该怎么做呢?

PPPS.关于本题,可以去中国大学MOOC看翁恺老师的课,他有专门的一节课讲了这个知识点,视频全长16:59,不会占用太长时间的(顺便强推翁恺老师的C语言课,讲得很好)

附上链接https://www.icourse163.org/learn/ZJU-1001614008?tid=1206448231#/learn/content?type=detail&id=1211196185&cid=1213756520

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值