初学者入门训练刷题篇——1

Posted 林慢慢i

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学者入门训练刷题篇——1相关的知识,希望对你有一定的参考价值。

前言:该专题为编程入门级别,适合初学者,题目涉及编程基础语法,基本结构等,先来十道简单题试试手(选自牛客网编程入门题)。

初学者入门练习题1:公务员面试

在这里插入图片描述

思路:先输入7个数,进行求和的同时需要找出最大和最小值,后续便于直接扣除。最终输出时小数点后保留两位,用"%.2f\\n"。

int main()
{
    int i = 0;
    int sum = 0;
    int max = 0;
    int min = 100;
    int score = 0;
    for (i = 0; i < 7; i++)
    {
        scanf("%d ", &score);
        sum += score;
        if (score > max)
            max = score;
        if (score < min)
            min = score;
    }
    printf("%.2f\\n", (sum - min - max) / 5.0);
    return 0;
}

初学者入门练习题2:上三角矩阵判定

在这里插入图片描述

思路:先输入n行n列的矩阵,然后判断矩阵的下三角部分是否全是0。

#include <stdio.h>
int main()
{
    int n=0;
    int flag=0;
    int arr[10][10]={0};
    int i=0;
    int j=0;
    scanf("%d ",&n);
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&arr[i][j]);
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<i;j++)
        {
            if(arr[i][j]!=0)
                flag=1;
        }
    }
    if(flag==0)
        printf("YES\\n");
    else
        printf("NO\\n");
    return 0;
}

初学者入门练习题3:最高身高

在这里插入图片描述

思路:输入n行m列,找出最大的数,并输出这个数对应的n、m,但是要记得加一,因为数组是从0开始,方阵是从1开始的。

#include <stdio.h>
int main()
{
    int m=0;
    int n=0;
    int x=0;
    int y=0;
    int i=0;
    int j=0;
    int arr[10][10]={0};
    scanf("%d",&n);
    scanf("%d",&m);
    int max=0;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            scanf("%d ",&arr[i][j]);
            if(max<arr[i][j])
            {
                max=arr[i][j];
                x=i;
                y=j;
            }
        }
    }
    printf("%d %d",x+1,y+1);
    return 0;
}

初学者入门练习题4:台阶问题

在这里插入图片描述

思路:

因为走到第三个楼梯的时候可以从第一阶和第二阶直接走上来;
同理,第四个楼梯的时候可以从第二阶和第三阶直接走上来;
第五个楼梯的时候可以从第三阶和第四阶直接走上来;
… …

所以可以得出公式

a[i]=a[i-1]+a[i-2]
其中有a[0]=0,a[1]=1,a[2]=2;

#include <stdio.h>
int main()
{
    int a[31]={0};
    int n=0;
    int i=0;
    a[0]=0;
    a[1]=1;
    a[2]=2;
    scanf("%d ",&n);
    for(i=3;i<=n;i++)
    {
        a[i]=a[i-1]+a[i-2];
    }
    printf("%d ",a[n]);
    return 0;
}

初学者入门练习题5:缩短二进制

在这里插入图片描述

思路:输出时用下格式控制串即可。

格式控制串

"%d"表示以十进制整数形式输出
"%o"表示以八进制形式输出
"%x"表示以十六进制输出
"%X"表示以十六进制输出,并且将字母(A、B、C、D、E、F)换成大写
"%e"表示以科学计数法输出浮点数
“%E"表示以科学计数法输出浮点数,而且将e大写
“%f"表示以十进制浮点数输出,在”%f"之间加上”.n"表示输出时保留小数点后面n位

printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数。

float 对应%f
double 对应%lf

#include <stdio.h>
int main()
{
    int a=0;
    a=1234;
    printf("0%o 0X%X",a,a);
    return 0;
}

初学者入门练习题6:printf的返回值

在这里插入图片描述

思路:

本题考查printf函数的返回值,printf函数原型为int printf (char *format,args,···),返回值为输出的字符个数,如果出错则返回负数。

#include <stdio.h>
int main()
{
    int n=0;
    n=printf("Hello world!");
    printf("\\n");//这个换行只能放这了!
    printf("%d\\n",n);
    return 0;
}

初学者入门练习题7:学生基本信息输入输出

在这里插入图片描述

思路:

重点要注意浮点数的输入,输出格式,输出中%f之间.n代表小数点后有n位。

  • int scanf(const char *format, …) 函数从标准输入流 stdin 读取输入,并根据提供的 format 来浏览输入。
  • int printf(const char *format, …) 函数把输出写入到标准输出流 stdout ,并根据提供的格式产生输出。
  • format 可以是一个简单的常量字符串,但是您可以分别指定 %s、%d、%c、%f 等来输出或读取字符串、整数、字符或浮点数。还有许多其他可用的格式选项,可以根据需要使用。
#include <stdio.h>
int main()
{
    int n = 0;
    float x,y,z;
    //scanf("%d ", &n);
    scanf("%d;%f,%f,%f",&n,&x,&y,&z);
    //printf("The each subject score of No.%d is %.2f, %.2f, %.2f.", n, x, y, z);
    printf("The each subject score of  No. %ld is %.2f, %.2f, %.2f.", n, x, y, z);
    return 0;
}

初学者入门练习题8:计算一元二次方程

在这里插入图片描述

思路:多组输入用EOF判断,平方根用sqrt函数

#include <stdio.h>
int main() {
    double a, b, c;
    //循环读入a b c
    while(scanf("%lf %lf %lf", &a, &b, &c) != EOF) {
        //计算delta
        double delta = b*b - 4*a*c;
 
        //判断a为零的情况
        if(a == 0.0) {
            printf("Not quadratic equation\\n");
            continue;
        }
 
        //delta小于0,则有两个虚数根
        if(delta < 0.0) {
            double x1 = -b / (2 * a);
            double x2 = sqrt(-delta) / (2 * a);
            printf("x1=%.2lf-%.2lfi;x2=%.2lf+%.2lfi\\n", x1, x2, x1, x2);
        }
        else if(delta == 0.0) { //delta等于0有重根
            double x1 = (-b) / (2 * a);
            printf("x1=x2=%.2lf\\n", x1, x1);
        } 
        else { //否则有两个实数根
            double x1 = (-b - sqrt(delta)) / (2 * a);
            double x2 = (-b + sqrt(delta)) / (2 * a);
            printf("x1=%.2lf;x2=%.2lf\\n", x1, x2);
        }
    }
    return 0;
}

初学者入门练习题9:字符金字塔

在这里插入图片描述

解法一:直接输出

#include <stdio.h>
int main()
{
    char n=0;
    scanf("%c",&n);
    printf("    %c    \\n",n);
    printf("   %c %c   \\n",n,n);
    printf("  %c %c %c  \\n",n,n,n);
    printf(" %c %c %c %c\\n",n,n,n,n);
    printf("%c %c %c %c %c\\n",n,n,n,n,n);
    return 0;
}

解法二:循环嵌套

int main()
{
    char a;
    int b;
    int c;
    int d;
    int e;
 
    scanf("%c", &a);
 
    for (b = 5, c = 1; c <= b; c++)
    {
        for (d = 5 - c; d > 0; d--)
            printf(" ");
        for (e = 1; e <= c; e++)
            printf("%c ", a);
        printf("\\n");
    }
 
    return 0;
}

初学者入门练习题10:你能活几秒

在这里插入图片描述

这道题的知识点就是C的数据类型

类型存储大小值范围
char1 字节-128 到 127 或 0 到 255
unsigned char1 字节0 到 255
signed char1 字节-128 到 127
int2 或 4 字节-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
unsigned int2 或 4 字节0 到 65,535 或 0 到 4,294,967,295
short2 字节-32,768 到 32,767
unsigned short2 字节0 到 65,535
long4 字节-2,147,483,648 到 2,147,483,647
unsigned long4 字节0 到 4,294,967,295
#include<stdio.h>
int main(){
    long int age,second;//需用到长整型
    scanf("%ld",&age);
    second = age * 31560000 ;
    printf("%ld",second);
    return 0;
}

如果内容对你有帮助的话,记得给我三连(点赞、收藏、关注)——做个手有余香的人。

以上是关于初学者入门训练刷题篇——1的主要内容,如果未能解决你的问题,请参考以下文章

Python刷题篇——Python入门 09 字典(上)

Python刷题篇——Python入门 07 循环语句(下)

Python刷题篇——Python入门 09 字典(下)

牛客网——Java刷题篇

二叉树刷题篇层序遍历

二叉树刷题篇(10) 二叉搜索树