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

大家好,我是深鱼~

目录

前言:

在线OJ

<1>什么是在线OJ

<2>为啥训练在线OJ

1.实践出真知

2.我是大V

3.有容乃大

4.缩短二进制

5.反向输出一个四位数

6.大小写转换

7.小飞机

8.十六进制转十进制

9.printf的返回值

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

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


前言:

本部分是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的返回值:打印在屏幕上字符的个数,如这题"Hello world!"就是13个字符(包括空格和感叹号),所以结果就是

注意:\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;

}

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

 求求了,来个三连吧。

猜你喜欢

转载自blog.csdn.net/qq_73017178/article/details/131652147