当前位置: 首页 > article >正文

C语言每日一练——day_2(快速上手C语言)

引言

        针对初学者,每日练习几个题,快速上手C语言。第二天。(会连续更新)

        采用在线OJ的形式

什么是在线OJ?

        在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用来测试参赛程序的在线系统,也可以用于平时的练习。

        详细内容可以看一下这篇博客:

关于C/C++语言的初学者在哪刷题,怎么刷题-CSDN博客https://blog.csdn.net/2401_88433210/article/details/146056171?spm=1011.2415.3001.10575&sharefrom=mp_manage_link

                每个题保障你都会有一定的收获

1.小飞机

        直接点进去做题

小飞机_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/5cd9598f28f74521805d2069ce4a108a?tpId=107&&tqId=33287&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:


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

解析:

        换行使用转义字符‘\n’。

        严格按照合适去打印就行了  

        注意*后边的空格可以不打印

2.十六进制转十进制

        直接点进去做题

十六进制转十进制_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/33e148570d5c4e728116e2f861638c9c?tpId=107&&tqId=33289&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

#include <stdio.h>

int main() 
{
    printf("%15d", 0xABCDEF);
    return 0;
}

 解析:

        本题考查的就是%d的格式控制域宽指定。

        可以看这篇博客里面的printf的输出格式部分

速通C语言——03(printf()和scanf()的详细解析和计算机单位的速通)-CSDN博客文章浏览阅读598次,点赞15次,收藏13次。C语言中printf和scanf函数的详解和计算机单位的认识 https://blog.csdn.net/2401_88433210/article/details/146109043?spm=1011.2415.3001.10575&sharefrom=mp_manage_link

3.printf函数的返回值

        点进去直接做题

printf的返回值_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/a19ef1d8e55c4cc786f11cbf6b2fde61?tpId=107&&tqId=33290&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

代码1:
int main()
{
	int ret = printf("Hello world!"); //接收printf的返回值
	printf("\n");
	printf("%d\n", ret);
	return 0;
}



代码2:
#include <stdio.h>

int main() {

    printf("\n%d", printf("Hello world!"));
    return 0;
}

 解析:

printf函数是有返回值的,返回printf函数成功打印了几个字符。

4.学生基本信息的输入输出

        点进去直接做题

学生基本信息输入输出_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/58b6a69b4bf943b49d2cd3c15770b9fd?tpId=107&&tqId=33292&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

#include <stdio.h>
#include <math.h>
int main() 
{
	int id=0;
    float c=0.0;
    float math=0.0;
    float english=0.0;
    scanf("%d;%f,%f,%f",&id,&c,&math,&english);
    printf("The each subject score of No. %d is %.2f, %.2f, %.2f.",id,roundf(c * 100) / 100,roundf(math * 100) / 100,roundf(english * 100) / 100);



    return 0;
}

解析:

注意:小数在内存中可能不能精确保存

        1. float类型对应的浮点型数据为%f;double类型对应的浮点型数据为%lf

        2. 控制输出小数的精确度用%.mf,   m为小数点后的位数;

        eg:保留小数点后两位:%.2f

        3. 不会对小数进行四四舍五入,可以希望你详细看下这篇博客。

C/C++中对小数进行四舍五入-CSDN博客文章浏览阅读199次,点赞2次,收藏3次。C/C++中对小数进行四舍五入 https://blog.csdn.net/2401_88433210/article/details/146139815?spm=1011.2415.3001.10575&sharefrom=mp_manage_link

5.判断字母

        点进去直接做题

判断字母_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/44d2d63103664913bc243d3836b4f341?tpId=107&&tqId=33316&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码

//代码一:
#include<stdio.h>
//A-Z == 65-90
//a-z == 97-122
int main() {
    char ar;
    scanf("%c", &ar);
    if (ar >= 65 && ar <= 90 || ar >= 97 && ar <= 122) 
    printf("YES\n");
    else 
    printf("NO\n");
    return 0;
}



//代码2:用库函数
#include<stdio.h>
#include<ctype.h>
int main() {
    char ar;
    scanf("%c", &ar);
    if (isalpha(ar)) 
    printf("YES\n");
    else 
    printf("NO\n");
    return 0;
}

解析:

1.知道大写字母和小写字母对应的ASCII值

        A-Z == 65-90
         a-z == 97-122

2.学习函数isalpha函数(判断字符是不是字母)可以仔细看一下下面这篇博客:

C/C++中对字符处理的常用函数-CSDN博客文章浏览阅读337次,点赞11次,收藏14次。C语言中的 ctype.h 头文件提供了一系列字符分类和转换函数,用于高效处理字符相关操作。 https://blog.csdn.net/2401_88433210/article/details/146140744?spm=1011.2415.3001.10575&sharefrom=mp_manage_link

  6.字符金字塔      

        点进去直接做题

字符圣诞树_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/0fae60c3b5c64699b7c0f031c2187dde?tpId=107&&tqId=33293&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:(找规律题,希望大家先自己找找规律)

#include<stdio.h>
int main()
{
    char a;
    scanf("%c", &a);//输入一个任意字符
    int i = 1;//记行数用的
    int j, g; //j是输出“空格”用的,g是输出“字符+空格”用的
    for (i = 1; i < 6; i++)//关于行数i在前5行执行的循环(包括第5行)
    {
        for (j = 5 - i; j > 0; j--)//输出第n行的前5-n个空格(n<=5)
        {
            printf(" ");
        }
        for (g = 0; g < i; g++)//输出第n行的所有空格后的字符
        {
            printf("%c ", a);//注意所输出的%c后有一个空格
        }
        printf("\n");//第n行输出结束,执行换行操作
    }//运行到这里就输出了n行的字符金字塔图形
    return 0;
}

解析:

注意:上面代码g循环的作用

这个题的代码看不懂的一定要用纸笔模拟一下,可以锻炼大家的代码能力

本题的难点就是精确的控制空格的个数和字符的个数。

7.ASCII码

        点进去直接做题

ASCII码_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/4280d330fe314e8f98cd5c593e3e9190?tpId=107&&tqId=33294&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

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

解析:

        非常简单的一道打印出ASCII码值对应的字符的题

ASCII 码表 - cppreference.comhttps://zh.cppreference.com/w/cpp/language/ascii

8. 出生日期输入输出

        点进去直接做题

出生日期输入输出_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/4a4a9dd1edb6453ba4a0432319200743?tpId=107&&tqId=33295&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

#include<stdio.h>
int main()
{
    int a,b,c;
    scanf("%4d%2d%2d",&a,&b,&c);
     printf("year=%d\nmonth=%02d\ndate=%02d\n",a,b,c);//这里合起来写了,也可以分开写
}

解析:

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

代码中:%4d就是读取4位整数

               %02d意思是输出不够2位时,左边拿0填充

 9.2的n次方计算

        点进去直接做题

2的n次方计算_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/35a1e8b18658411388bc1672439de1d9?tpId=107&&tqId=33310&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

 参考代码:

#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d",1 << n);
    //注意<<(左移操作符的使用,左移一位有乘2的效果)
    return 0;
}



#include <stdio.h>
#include <math.h> 
int main()
{
    int n;
    scanf("%d",&n);
    int ret = pow(2, n);//用pow可以做的进行2的n次方的运算
    printf("%d",ret);

    return 0;
}

解析:

            注意 <<(左移操作符的使用,左移一位有乘2的效果)

                    >>   (右移操作符的使用,右移一位有除2的效果)

   10.按照格式输入并交换输出

                点进去直接做题

按照格式输入并交换输出_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/95eb723a3e854376a7eb6d116cc7d875?tpId=107&&tqId=33296&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

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




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

 解析:

        非常简单的一道题,自己看代码去

11.字符转ASCII码

        点进去直接做题
字符转ASCII码_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/93f4d05a02d9468db424ed4316bfc8fd?tpId=107&&tqId=33297&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

        

#include <stdio.h>
 
int main() {
    char c = 0;
    scanf("%c",&c);
    printf("%hhd",c);
    printf("%d", c);  //也可以AC但会浪费不必要的空间
    return 0;
}

 解析:

      这题的char型变量,它是在这个编译器里面是一个字节的长度,也就是8位二进制。

而%d是指的int类型的转换规则,也就是4个字节,想要正确的显示char类型的话需要在%后面,d的前面加上一个长度指示符。

        长度指示符对应的类型等级

%hhd = char、

%hd = short、

%d = int、

%ld = long、

%lld = long long。

hh、h、l、ll这几个就是长度指示符。

12.计算表达式的值 

        点进去直接做题

计算表达式的值_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/58457d27f91043edaf95b6591bb64fd6?tpId=107&&tqId=33298&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

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

 解析:按照操作符的优先级直接设计表达式,计算输出就行。

13.计算带余除法

        点进去直接做题:

计算带余除法_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/34d3911bf2fd48a285f6396e886a1259?tpId=107&&tqId=33299&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d",&a,&b);
    printf("%d %d", a / b, a % b);
    return 0;
}

解析:掌握%和/两个操作符的使用,按照格式输出就行


http://www.kler.cn/a/580446.html

相关文章:

  • 安卓逆向环境搭建(Windows/Linux双平台)
  • 【2025】Electron 基础一 (目录及主进程解析)
  • Visual Studio Code 基本使用指南
  • linux docker相关指令
  • QT系列教程(18) MVC结构之QItemSelectionModel模型介绍
  • JAVA面试_进阶部分_深入理解socket网络异常
  • Pytorch实现之SICSGAN实现图像识别
  • 什么是Jmeter? Jmeter工作原理是什么?
  • 【计算机原理】深入解析 HTTP 中的 URL 格式、结构和 URL encode 转义与 URL decode 逆转义原理
  • 【javaEE】多线程(进阶)
  • 蓝桥杯2024年第十五届省赛真题-团建
  • wordpress两个网站用同一个数据库的实现方法
  • 学习笔记:利用OpenAI实现阅卷智能体
  • Android 低功率蓝牙之BluetoothGattCallback回调方法详解
  • STM32项目分享:智能家居语音系统(ASRPRO版)
  • 【Aioredis实战总结】Aioredis简介
  • 理解知识如何在大型Vision-Language Models 中演化
  • go context学习
  • Lua怎么学?Lua编程实战:从基础语法到高级特性
  • c语言笔记 函数参数的等价(下)