牛客网基础语法篇——基础语法BC1—BC15

一.题目解析

题目来源编程语言初学训练营_在线编程+题解_牛客题霸_牛客网【牛客题霸专属】为编程语言初学者入门训练设立,每道题均为牛客精选且配有官方题解,同时每道题均有考试模式和练习模式,可切换练习。包含输入输出、基本计算、选择结构、循环结构、数组、字符串、函数、指针等知识点,可根据需求练习。https://www.nowcoder.com/ta/beginner-programmers-v1

1.BC1—实践出真知

题目要求输出"Practice makes perfect!"

printf("Practice makes perfect!\n");

解题思路:第一题printf函数输出

2.BC2—我是大V

题目要求:每个人都想成为大V (VIP:Very Important Person),但要一点一点积累才行,先从小v做起。要求输出由小写字母v组成的大V。

v   v

 v v

  v

#include <stdio.h>

int main()

{

    printf("v   v\n");

    printf(" v v\n");

    printf("  v\n");

}

解题思路:需要用printf函数进行输出, \n 是换行的作用

3.BC3—有容乃大

题目要求:确定不同整型数据类型在内存中占多大(字节),输出不同整型数据类型在内存中占多大(字节)。

#include <stdio.h>

int main()

{

    printf("The size of short is %d bytes.\n", sizeof(short));               //2

    printf("The size of int is %d bytes.\n", sizeof(int));                       //4

    printf("The size of long is %d bytes.\n", sizeof(long));                 //4

    printf("The size of long long is %d bytes.\n", sizeof(long long)); //8

    return 0;

}

解题思路:运用sizeof操作符,sizeof是计算字节大小的操作符。

4.BC6—小飞机

题目要求:输出一个飞机

#include <stdio.h>

int main()

{

    printf("     **     \n");

    printf("     **     \n");

    printf("************     \n");

    printf("************     \n");

    printf("    *  *    \n");

    printf("    *  *    \n");

    return 0;

}

解题思路:printf函数输出小飞机

5.BC7— 缩短二进制

题目要求:我们处理的整数通常用十进制表示,在计算机内存中是以二进制补码形式存储,但通常二进制表示的整数比较长,为了便于在程序设计过程中理解和处理数据,通常采用八进制和十六进制,缩短了二进制补码表示的整数,但保持了二进制数的表达特点。请输出十进制整数1234对应的八进制和十六进制。

#include <stdio.h>

int main()

{

    printf("0%o 0X%X", 1234,1234);

    return 0;

}

解题思路:printf可以使用“%o” ,“%x“分别输出八进制整数和十六进制整数


6.BC8—十六进制转十进制

题目要求:写了一个十六进制整数ABCDEF,他问KiKi对应的十进制整数是多少。

#include <stdio.h>

int main() {

    int a = 0XABCDEF;

    printf("%15d",a);

    return 0;

}

解题思路:printf可以使用”%x的区域宽为x的十进制整数

7.BC9— printf的返回值

题目要求:程序输出printf(“Hello world!”)的返回值

#include <stdio.h>

int main()

{

    printf("\n%d", printf("Hello world!"));  // 12

    return 0;

}

解题思路:printf的返回值为打印字符的总数,所以printf(“Hello world!”)的返回值为12

8.BC10—成绩输入输出

题目要求:输入3科成绩,然后把三科成绩输出,成绩为整数形式

#include <stdio.h>

int main()

{

    int score1 = 0;                    // 创建3个int类型的成绩

    int score2 = 0;

    int score3 = 0; 

    scanf("%d %d %d", &score1, &score2, &score3);  // 输入3门成绩

    printf("score1=%d,score2=%d,score3=%d", score1, score2, score3); // 输出成绩

    return 0;

}

解题思路:scanf读取输入的三科成绩,再使用printf进行输出

9.BC11—学生基本信息输入输出

题目要求:

依次输入一个学生的学号,以及3科(C语言,数学,英语)成绩,在屏幕上输出该学生的学号,3科成绩(注:输出成绩时需进行四舍五入且保留2位小数)。

#include <stdio.h>

int main()

{

    long id = 0;                          //创建 long 类型的变量储存学号

    float c = 0.0;                        // 三科成绩含小数部分所以创建为浮点型

    float math = 0.0;

    float english = 0.0;

    scanf("%ld;%f,%f,%f", &id, &c, &math, &english);//  输入信息

    printf("The each subject score of No. %ld is %.2f, %.2f, %.2f.", id, c, math, english); //输出

    return 0;

}

解题思路:printf可以使用”%.xf” 输出保留x位的小数

10.BC12— 字符圣诞树

题目要求:输入一个字符,用它构造一个边长为5的三角形圣诞树

方法一: 直接使用printf进行5边形的输出

#include <stdio.h>

int main()

{

    char num = 0;

    scanf("%c",&num);

    printf("    %c\n", num);

    printf("   %c %c\n", num, num);

    printf("  %c %c %c\n", num, num, num);

    printf(" %c %c %c %c\n", num, num, num, num);

    printf("%c %c %c %c %c\n", num, num, num, num, num);

    return 0;

}

方法二:使用循环语句

#include<stdio.h>
int main()
{
    char num = 0;                   
    scanf("%c", &num);              // 输入要打印的字符
    int i = 0;                      // 创建临时变量i,i用来控制循环的次数
    for (i = 1; i <= 5; i++)        
    {                               
        int j = 0;                  // 创建变量j,用来控制每一行打印的空格和字符个数

        // 边长为5的三角形 第一行是4个空格加1个字符,第二行是3个空格加2个字符 ,                    //第三行是2个空格加3个字符 ,第四行是1个空格加4个字符,
        // 第五行是0个空格加5个字符

        for (j = 1; j <= 5 - i; j++)// 打印空格的循环  
        {                    
            printf(" ");                 
        }
        for (j = 1; j <= i; j++)    // 打印字符串的循环
        {
            printf("%c ", num);
        }
        printf("\n");               //每一行打印完要进行换行操作
    }
    return 0;
}

 

解题思路:打印每行空格个数的循环判断条件使用 j <= (总行数)- (a); 打印每行字符个数 j = (a),****a表示某一行,例如第三行a就是3,第五行a就是5;

11.BC13— ASCII码

题目要求: BoBo出了一个问题给KiKi,转换以下ASCII码为对应字符并输出他们。

#include <stdio.h>

int main()

{

    int arr[] = { 73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116, 33 };  //将这组数存入数组arr中

    int sz = 0;

    for (sz = 0; sz < 12; sz++)

    {

        printf("%c", arr[sz]);                       // 通过下标访问,%c 打印出ASCLL码所对应的字符

    }

    return 0;

}

 

解题思路:%c打印字符,熟悉ASCll码表

12.BC14— 出生日期输入输出

题目要求:输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。

数据范围:年份满足 1990 \le y \le 2015 \1990≤y≤2015 ,月份满足 1 \le m \le 12 \1≤m≤12  ,日满足 1 \le d \le 30 \1≤d≤30 

#include <stdio.h>

int main()

{

    int year = 0;

    int month = 0;

    int day = 0;

    scanf("%4d%2d%2d", &year,&month,&day);

    printf("year=%4d\n",year);

    printf("month=%02d\n",month);

    printf("date=%02d\n",day);

    return 0;

}

解题思路:通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。

13.BC15— 按照格式输入并交换输出

题目要求:输入两个整数,范围-231~231-1,交换两个数并输出

#include <stdio.h>

int main()

{

    int a = 0;

    int b = 0;

    scanf("a = %d,b = %d", &a, &b);  // 输入a,b

    int c = 0;                                       //创建变量c

    c = a;                                            //将a赋值给c

    a = b;                                            //再将b赋值给a

    b = c;                                            //最后将c赋值给b

    printf("a=%d,b=%d", a, b);           //打印交换后的 a,b

    return 0;

}

解题思路:交换两个数需要借助中间变量,相当于a,b是两杯水,a是西瓜汁,b是柠檬水,要想交换两杯水,需要将a的水(西瓜汁)先倒入空杯c中,再将b的水(柠檬汁)倒入a中,最后将c中的(西瓜汁)倒入b中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值