C语言刷题——“C”

简介: C语言刷题——“C”

各位CSDN的uu们你们好呀,今天,小雅兰要巩固一下之前学过的知识,那么,最好的复习方式就是刷题啦,现在,我们就进入C语言的世界吧


从最简单的开始噢 完完全全零基础都能看懂 题目来源于牛客网


编程语言初学训练营_在线编程+题解_牛客题霸_牛客网


BC1-实践出真知


BC2-我是大V


BC3-有容乃大


BC6-小飞机


BC7-缩短二进制


BC8-十六进制转十进制


BC9-printf的返回值


BC10-成绩输入输出


BC11-学生基本信息输入输出


BC12-字符圣诞树


BC13-ASCII码


BC14-出生日期输入输出


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


BC16-字符转ASCII码


BC17-计算表达式的值


BC18-计算带余除法


BC19-反向输出一个四位数


BC28-大小写转换


BC29-2的n次方计算


BC35-判断字母

47e803a91fc44deaa271ded99e54b490.png

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

本题是一个没有输入要求的题目,只考察输入,所以只需要准确无误的输出结果就行了。


在C语言中,以.c为后缀的文件名就是我们的源文件,以.h为后缀的文件名就是头文件


printf是一个库函数,是为输出操作,必须得引入头文件stdio.h


写主函数,main函数是程序的入口,代码是从main函数的第一行开始执行的!


一个工程中,有且仅有一个main函数


运行:[Fn]+Ctrl+F5   VS


如果执行的结果一闪而过了,那么就要设置项目属性,让执行结果停留在屏幕上

b6c23147f1324e939fb7326e8062ba94.png

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

这道题目还有另外一种写法

#include <stdio.h>
int main()
{
    //一行输出的效果
    printf("v   v\n v v\n v\n");
    return 0;
}

这个题也是没有输入要求的题目,所以相对比较简单。

题目中只要能够找到输出的规律和掌握 \n的使用就没问题。

这里简单提及:转义字符,可以做一个拓展。

3a6620ccd7524e69be6dd15bbfb3e0fe.png

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

计算机中的单位:

06d3f4713cce4586982fb140b8f7729f.png

这类入门的题目基本都是没有输入操作的。

本题的关键是要掌握C语言的 sizeof 这个操作符。

sizeof 是C语言的一个单目操作符,用来计算不同类型数据所占内存空间的大小,单位是字节。5dc6fae4936341f496ebddf5c535e88b.png

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

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

0379180845a348fa939bf284cb10656e.png

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

根据这道题目的备注可知,这个题目还有一种表现形式

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

这里需要我们掌握对个各种数据的格式控制

91948eaf03a64c9fb5c87a195fd8c0f9.png

注意:还是严格按照题目要求的格式输出,才能保证正确性。  

03044335f7634447a337c6977b881fd7.png

e234d199b625443c9494b2c76f82a792.png

9d73b6c8dbaf4fcdba95ff9ed14b1e10.png

c87b78d62eda4cbe85f8f6824bc0f520.pngfcf7f3f7627047c09d2e457a80b00362.png

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

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

bf0db92dec3743fdaabbb4ad6a56b407.png


d7bad8e4b3fd4fb997f6f14cbfc31dc6.png


printf函数返回的是:打印在屏幕上的字符的个数

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

在这里,不能随便在Hello world!后面加\n,因为:\n也算一个字符,最后结果就不准确

这个题目还有更简洁的写法

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

更详细地请看我的博客

函数——“C”_认真学习的小雅兰.的博客-CSDN博客

函数递归+青蛙跳台阶——“C”_认真学习的小雅兰.的博客-CSDN博客

bf4f83a1ffd14c99930a37c00ad3d136.png

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

9ee5d7a7b5564c008a753b7202e79d35.png

#include <stdio.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.\n",id,C,math,English);
    return 0;
}

这个题的最大坑,也是格式的指定,还有空格的控制,必须和题目要求的输出结果一致,比如:of的后边有2个空格。  

浮点数打印要指定小数点后边的位数为2位。

小数在内存中有可能不能精确保存!


7daa2d56c1544d96a9f1c1c37e670a7f.png

小雅兰就吃了这个题目的亏

413515365c46462190022d4951e87ce1.png

6e54140b7fa74419accf2a9189b6282e.png

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

每一行的输出是前边空格,后边 1

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

b50e22ccd04a48d6a53801ac36429794.png

#include <stdio.h>
int main()
{
    int arr[]={73,32,99,97,110,32,100,111,32,105,116,33};
    //arr是数组,数组是用下标来访问的!
    //计算数组元素的个数
    int sz=sizeof(arr)/sizeof(arr[0]);
    int i=0;
    for(i=0;i<sz;i++)
    {
        printf("%c",arr[i]);
    }
    return 0;
}

这里得了解清楚ASCII编码,如果采用ASCII编码,每个字符都有一个对应的数字,这个数字被称为这个字符的ASCII码,如果把这个数字按照%c打印,打印的就是字符。


d3ad1e36b9484eefa20c6aecb7c233d1.png

#include <stdio.h>
int main() 
{
    int year=0;
    int month=0;
    int date=0;
    scanf("%4d%2d%2d",&year,&month,&date);
    //%4d就是读取4位整数
    //输出不够2位时,左边拿0填充
    printf("year=%d\nmonth=%02d\ndate=%02d\n",year,month,date);
    return 0;
}

本题的难点在于如何按照指定域宽读取数据,如何按照指定格式打印数据。  

f8a478ff08e445e98eeddc6b5950024e.png

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

输入和输出格式的控制,如果格式控制串中有非格式字符则输入时也要输入该非格式字符。

3def860e04f5456da012dc99165426da.png

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

直接按照%d打印,就是字符对应的ASCII码值

433c070c99fb44b58ed1a80bcc6be795.png

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

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

087deda49f89478c9e8e887ef5f81dd5.png

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

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


f5f2434e852c445a8b6a3879a8aefd1e.png

452b33670440403c861bb516dc70ce72.png

#include <stdio.h>
int main()
{
    int n = 0;
    //输入数据
    scanf("%d", &n);
    //获取每一位
    while(n)
    {
        printf("%d", n%10);
        n /=10;
    }
    return 0;
}

这里得掌握操作符 % 和 / 的基本使用和特点。其次是循环的使用。

f03ae76ff656422eb3126d10d099a83e.png

在这道题目中,我们要知道两个函数——getchar、putchar

4f92f3d804384aeba9faf8bb0a43458f.png

53c8c9e6b8ee496e93d29f39466b13f6.png

getchar——获取一个字符、输入一个字符


putchar——打印一个字符、输出一个字符


多组输入——一般使用while循环,本题就是while((ch=getchar())!=EOF)


EOF——end of file——文件结束标志——通常是为文件的末尾


然后,这道题目与ASCII码值也有密切的关系,大写字母的ASCII码值加上32就是小写字母的ASCII码值

e15835fb4c934690b92cb2079106ae66.jpg

#include <stdio.h>
int main()
{
    int ch=0;
    while((ch=getchar())!=EOF)
    {
        putchar(ch+32);
        printf("\n");
        getchar();//读取\n
    }
    return 0;
}

getchar 清理缓冲区的问题,这里得理解输入缓冲区的问题。getchar拓展_认真学习的小雅兰.的博客-CSDN博客

cb771792627447a8b4b71ddc098d2c96.png

#include <stdio.h>
int main()
{
    int n = 0;
    while(scanf("%d", &n) != EOF)
   {
        printf("%d\n", 1<<n);
   }
    return 0;
}

<< 左移操作符 移动的是二进制位 向左移动多少位 就表示2的几次方


int a=1;


a<<1;


//00000000000000000000000000000001


//00000000000000000000000000000010——左移一位 2^1


a<<2;


//00000000000000000000000000000001


//00000000000000000000000000000100——左移两位 2^2

896cd973656d4167a89b88a5b1ff7db1.png

#include <stdio.h>
int main()
{
    char ch=0;
    while((ch=getchar())!=EOF)
    {
        if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
        {
            printf("YES\n");
        }
        else 
        {
            printf("NO\n");
        }
        getchar();//处理\n
    }
    return 0;
}

这个题目还有另外一种写法,使用我们的库函数

isalpha——是专门用来判断一个字符是不是字母的

是字目就返回非0的值,不是字母就返回0

35e5b530c2f14df49d2b8dc12b76be1a.png

#include<stdio.h>
#include<ctype.h>
int main()
{
    int ch = 0;
    while((ch=getchar()) != EOF)
   {
        //使用库函数
        if(isalpha(ch))
            printf("YES\n");
        else
            printf("NO\n");
        getchar();
   }     
    return 0;
}

1. 本地是多组输入,一定要注意循环输入的问题

2. 字符的判断可以自己写,也可以借助于库函数,要熟悉库函数都有哪些。


好啦,小雅兰今天的复习就到这里啦,后续还会继续复习噢

4d02006a313149038ca18734e1071cae.jpg

相关文章
|
6月前
|
安全 C语言
【C语言刷题】字符串逆序
【C语言刷题】字符串逆序
61 0
|
6月前
|
存储 C语言
【C语言刷题】操作符系列
【C语言刷题】操作符系列
44 0
|
6月前
|
C语言
【C语言刷题】青蛙跳台阶
【C语言刷题】青蛙跳台阶
96 1
|
6月前
|
机器学习/深度学习 C语言
【C语言刷题】函数递归系列
【C语言刷题】函数递归系列
34 1
|
4天前
|
存储 算法 C语言
C语言刷题~Leetcode与牛客网简单题
C语言刷题~Leetcode与牛客网简单题
|
4天前
|
C语言
C语言刷题1
C语言刷题1
421 0
|
4天前
|
C语言
C语言刷题:整数加逗号、删除公共字符、求最小公倍数和将字符串倒置
C语言刷题:整数加逗号、删除公共字符、求最小公倍数和将字符串倒置
32 0
|
4天前
|
C语言
错误的集合(初阶C语言刷题)
错误的集合(初阶C语言刷题)
|
4天前
|
C语言
C语言刷题训练【第11天】
C语言刷题训练【第11天】
|
4天前
|
C语言
C语言刷题训练【第十天】
C语言刷题训练【第十天】