【C算法】编程初学者入门训练140道(1~20)

简介: 【C算法】编程初学者入门训练140道(1~20)

BC1 实践出真知

【说明】

(1)printf的使用

#include <stdio.h>
 
int main(void) 
{
    printf("Practice makes perfect!\n");
     
    return 0;
}

BC2 我是大V

【说明】

(1)\n的使用

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

BC3 有容乃大

【说明】

(1)打印sizeof()类型的值,使用%zd转换说明

#include<stdio.h>
int main()
{
    printf("The size of short is %zd bytes.\n",sizeof(short));
    printf("The size of int is %zd bytes.\n",sizeof(int));
    printf("The size of long is %zd bytes.\n",sizeof(long));
    printf("The size of long long is %zd bytes.\n",sizeof(long long));
    return 0;
}

BC6 小飞机

【说明】

(1)注意对齐

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

BC7 缩短二进制

【说明】

(1)以十进制显示数字,使用%d;以八进制显示数字,使用%o;以十六进制显示数字,使用%x(大写使用%X);

(2)要显示各进制的前缀0、0x或者0X,必须使用%#o、%#x、%#X

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

BC8 十六进制转十进制

链接: 十六进制转十进制

【说明】

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

(2)十六进制的数字需要在前面+0x

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

BC9 printf的返回值

链接: printf的返回值

【说明】

(1)printf的返回值是printf打印出的数据的个数

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

BC10 成绩输入输出

链接: 成绩输入输出

【说明】

(1)使用scanf与printf进行输入输出

#include <stdio.h>
int main()
{
    int grade1, grade2, grade3;
    scanf("%d %d %d", &grade1, &grade2, &grade3);
    printf("score1=%d,score2=%d,score3=%d", grade1, grade2, grade3);
    return 0;
}

BC11 学生基本信息输入输出

链接: 学生基本信息输入输出

【说明】

(1)注意使用scanf输入时需要分号与逗号

#include <stdio.h>
int main()
{
    int student_ID;
    float C_language, math, english;
    scanf("%d;%f,%f,%f", &student_ID, &C_language, &math, &english);
    printf("The each subject score of No. %d is %.2f, %.2f, %.2f.", student_ID, C_language, math, english);
    return 0;
}

BC12 字符圣诞数

【说明】

(1)利用多重for循环

#include <stdio.h>
int main()
{
    char ch;
    ch = getchar();
    for(int i = 1; i <= 5; ++i)
    {
        for(int j = 1; j <= (5-i); ++j)
        {
            printf(" ");
        }
        for(int k = 1; k <= (i); ++k)
        {
            printf("%c", ch);
            printf(" ");
        }
        printf("\n");
    }
    return 0;
}

BC13 ASCII 码

链接: ASCII 码

【说明】

(1)利用数组以及for循环求解

#include <stdio.h>
int main()
{
    int arr[] = {73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33};
    for(int i = 0; i < (sizeof(arr) / sizeof(arr[0])); ++i)
    {
        printf("%c",arr[i]);
    }
    return 0;
}

BC14 出生日期输入输出

链接: 出生日期输入输出

【说明】

(1)scanf输入时,转换说明前面可以添加数字修饰符,来显示最大字段宽度,输入达到最大字段宽度处。

(2)通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。对于数值格式,用前导0代替空格填充字段宽度。对于整数格式,如果出现-标记或者指定精度,则忽略该标记。

#include <stdio.h>
int main()
{
    int year, month, date;
    scanf("%4d %2d %2d", &year, &month, &date);
    printf("year=%04d\nmonth=%02d\ndate=%02d\n", year, month, date);
    return 0;
}

BC15 按照格式输入并交换输出

链接: 按照格式输入并交换输出

【说明】

(1)如果格式控制串中有非格式字符则输入时也要输入该非格式字符。

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

BC16 字符转ASCII码

链接: 字符转ASCII码

【说明】

(1)字符在计算机中是以数字的形式的存储的。

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

BC17 计算表达式的值

链接: 计算表达式的值

【说明】

(1)printf后面的输出列表中可以出现表达式。

#include <stdio.h>
int main()
{
    int a = 40, c = 212;
    printf("%d",(-8+22)*a-10+c/2);
    return 0;
}

BC18 计算带余除法

链接: 计算带余除法

【说明】

(1)除法、求模

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

BC19 反向输出一个四位数

链接: 反向输出一个四位数

【说明】

(1)这里使用for循环进行反向输出

#include <stdio.h>
int main()
{
    int num;
    int n;
    scanf("%d", &num);
    for(int i = 0; i < 4; ++i)
    {
        n = num % 10;
        num /= 10;
        printf("%d",n);
    }
    return 0;
}

BC20 kiki算数

链接: kiki算数

【说明】

(1)熟练使用求模运算符

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


相关文章
|
2月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:理解神经网络与反向传播算法
【9月更文挑战第20天】本文将深入浅出地介绍深度学习中的基石—神经网络,以及背后的魔法—反向传播算法。我们将通过直观的例子和简单的数学公式,带你领略这一技术的魅力。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你打开深度学习的大门,让你对神经网络的工作原理有一个清晰的认识。
|
8天前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
25 2
|
1月前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
58 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
16天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
1月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
1月前
|
存储 缓存 分布式计算
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
这篇文章是关于数据结构与算法的学习指南,涵盖了数据结构的分类、数据结构与算法的关系、实际编程中遇到的问题以及几个经典的算法面试题。
29 0
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
|
1月前
|
机器学习/深度学习 算法
机器学习入门(三):K近邻算法原理 | KNN算法原理
机器学习入门(三):K近邻算法原理 | KNN算法原理
|
1月前
|
机器学习/深度学习 算法 大数据
机器学习入门:梯度下降算法(下)
机器学习入门:梯度下降算法(下)
|
1月前
|
机器学习/深度学习 算法 API
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
|
1月前
|
算法 Java C++
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)