【手把手带你刷题】-C语言编程入门篇(一)

简介: 【手把手带你刷题】-C语言编程入门篇(一)

前言:

本部分是C语言初阶部分题目,一共130题,由易到难,适于初学者学习,非初学者勿看

题目链接:编程语言初学训练营_在线编程+题解_牛客题霸_牛客网 (nowcoder.com),大家一起冲呀

https://www.nowcoder.com/ta/beginner-programmers-v1

在线OJ

<1>什么是在线OJ

在线判题系统(Online Judge)是一种在编程竞赛中用来测试参赛程序的在线系统

<2>为啥训练在线OJ

a.有些比赛,比如ACM之类的编程竞赛都是采用在线OJ的方式进行

b.笔试OJ化,这是未来的趋势

1.实践出真知

链接:牛客网—实践出真知

题目:


题解:

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

打印的内容建议直接复制粘贴,这样可以防止敲错(这题自己敲可能会忘了!)


对应知识点就是C语言的第一个程序:Hello World!

#include<stdio.h>是头文件的包含,stdio中的std是标准,i是输入,o是输出

main函数是程序的入口,并且一个程序中有且只有一个main函数

printf是库函数,是用来打印输出的,库函数的使用得包含头文件,它的头文件就是stdio.h

return 0是在main函数结束的返回值为0

除了第五行,其他的部分都是C语言程序固定部分,是敲代码不可缺少的部分

2.我是大V

链接:我是大V

题目:


题解1: 注意这里要用到换行符\n

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

题解2:简化版:直接用一个printf函数打印

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

3.有容乃大

题目:

题解:

#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 long));
    return 0;
}

sizeof是用来计算变量或者类型所占空间的大小的一个关键字(以字节为单位)


C语言标准:sizeof(long long) >=sizeof (long) >=sizeof (int) >sizeof (short) >sizeof (char)


补充:计算机中常见单位及换算:

bit      -比特位

byte   -字节

KB                          1byte=8bit

MB                         1KB=1024byte

GB                          1MB=1024KB

TB                          1GB=1024MB

PB                          1TB=1024GB

4.缩短二进制

链接:缩短二进制

题目:


题解1:注意怎么控制字母大小写,%x就是小写,%X就是大写

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

题解2:用上题目提示的#

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

拓展:对各种数据的格式控制

%c     -   字符

%d     -    整形

%s     -     字符串

%f      -     单精度浮点数

%lf     -      双精度浮点数

%p     -      地址格式

5.反向输出一个四位数

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

题目:

题解:思路就是不断 -模10除10打印-

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

6.大小写转换

链接:大小写转换

题目:

题解1:

#include <stdio.h>
int main()
{
  int ch = '0';
  while ((ch=getchar()) != EOF)
  {
    getchar();
    putchar(ch + 32);//大写字母的ASCII值比小写的小32
    printf("\n");//防止输出的字符和下次输入的字符在同一行
  }
  return 0;
}

问题1:为啥ch要定义为int类型,而不是char类型

答:getchar:输入/读取一个字符     putchar:输出一个字符(一次只能操作一个字符)

getchar()返回的是字符的ASCII值,是个整数

EOF -end of file 文件结束的标志,通常在文件的末尾,它的值为-1也为整形

问题2:为啥循环中要getchar();

答:因为getchar和键盘中间有个缓冲区,每当输入一个字符的时候,我们都会按下回车键,这也就无形之中多了一个'\n',如果没有这个getchar(),'\n'也是一个字符,在循环中也加上32,变成另一个字符,为了拿走这个字符,就需要getchar()

问题3:多组输入怎么写?

while((ch=getchar())!=EOF)
{
}

题解2:直接用printf()加上\n代替putchar()

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

7.小飞机

链接:小飞机

题目:

题解: 本题主要是考查printf函数的打印

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

8.十六进制转十进制

链接:十六进制转十进制

题目:

题解:本题主要考查格式的输出

#include <stdio.h>
int main() 
{
    printf("%15d",0XABCDEF);//注意这里不能直接写ABCDEF
    return 0;
}

9.printf的返回值

链接:printf的返回值

题目:

题解1:

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

本题主要考查printf的返回值:打印在屏幕上字符的个数(所以是不算字符串的结束标志\0的),如这题"Hello world!"就是12个字符(包括空格和感叹号),所以结果就是

注意:\n不能写在第一个printf函数中,这样printf的返回值会变成13,多了一个

题解2:简化版

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

拓展:这个打印的结果是什么呢

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


答:4321(printf打印是从内层开始的,内层调用完,再进行外层,最里面的printf打印43,接着下一个printf打印上一个printf的返回值(即43的)也就是2,最后就是2的返回值,也就是1)

10.学生基本信息输入输出

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

题目:

题解:注意两个点

(1)scanf输入时要注意格式,看是;(分号)还是,(逗号)

(2)小数在内存中有可能不能精确保存,这题需要四舍五入,double类型不行就换float类型

(3)保留m位小数的写法:%.mf

#include<stdio.h>
int main()
{
    int id = 0;//学号
    float c_score = 0.0;
    float math_score = 0.0;
    float eng_score = 0.0;
    //输入
    scanf("%d;%f,%f,%f", &id, &c_score, &math_score, &eng_score);
    //输出
    printf("The each subject score of No. %d is %.2f, %.2f, %.2f.", id, c_score, math_score, eng_score);
    return 0;
}

结语:彼方尚有荣光在,少年不惧岁月长

求求了,来个三连吧。


目录
相关文章
|
2月前
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
72 2
|
25天前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
80 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
25天前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
41 8
|
29天前
|
C语言
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性。本文探讨了C语言中的错误类型(如语法错误、运行时错误)、基本处理方法(如返回值、全局变量、自定义异常处理)、常见策略(如检查返回值、设置标志位、记录错误信息)及错误处理函数(如perror、strerror)。强调了不忽略错误、保持处理一致性及避免过度处理的重要性,并通过文件操作和网络编程实例展示了错误处理的应用。
64 4
|
2月前
|
NoSQL C语言 索引
十二个C语言新手编程时常犯的错误及解决方式
C语言初学者常遇错误包括语法错误、未初始化变量、数组越界、指针错误、函数声明与定义不匹配、忘记包含头文件、格式化字符串错误、忘记返回值、内存泄漏、逻辑错误、字符串未正确终止及递归无退出条件。解决方法涉及仔细检查代码、初始化变量、确保索引有效、正确使用指针与格式化字符串、包含必要头文件、使用调试工具跟踪逻辑、避免内存泄漏及确保递归有基准情况。利用调试器、编写注释及查阅资料也有助于提高编程效率。避免这些错误可使代码更稳定、高效。
480 12
|
2月前
|
存储 Java 编译器
初识C语言1——C语言入门介绍
初识C语言1——C语言入门介绍
37 1
|
2月前
|
机器学习/深度学习 编译器 C语言
C语言刷题(中)(保姆式详解)
C语言刷题(中)(保姆式详解)
19 0
|
2月前
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
|
3月前
|
Linux C语言
C语言 多进程编程(三)信号处理方式和自定义处理函数
本文详细介绍了Linux系统中进程间通信的关键机制——信号。首先解释了信号作为一种异步通知机制的特点及其主要来源,接着列举了常见的信号类型及其定义。文章进一步探讨了信号的处理流程和Linux中处理信号的方式,包括忽略信号、捕捉信号以及执行默认操作。此外,通过具体示例演示了如何创建子进程并通过信号进行控制。最后,讲解了如何通过`signal`函数自定义信号处理函数,并提供了完整的示例代码,展示了父子进程之间通过信号进行通信的过程。
|
3月前
|
Linux C语言
C语言 多进程编程(四)定时器信号和子进程退出信号
本文详细介绍了Linux系统中的定时器信号及其相关函数。首先,文章解释了`SIGALRM`信号的作用及应用场景,包括计时器、超时重试和定时任务等。接着介绍了`alarm()`函数,展示了如何设置定时器以及其局限性。随后探讨了`setitimer()`函数,比较了它与`alarm()`的不同之处,包括定时器类型、精度和支持的定时器数量等方面。最后,文章讲解了子进程退出时如何利用`SIGCHLD`信号,提供了示例代码展示如何处理子进程退出信号,避免僵尸进程问题。