【无标题】

C语言常犯错误

1.判断闰年

输⼊⼀个年份year,判断year是否是闰年
(1)能被4整除并且不能被100整除是闰年
(2)能被400整除是闰年

2.寻找素数

找出100~200之间的素数,并打印在屏幕上
(1)判断number是否为素数,需要拿2到number-1之间的数字去试除number
(2)如果2~number-1之间有数字能整除number,则number不是素数
(3)如果都不能整除,则i是素数

int main()
{
	for (int number = 100; number < 201; number++)
	{
		int n = 1;
		for (int j = 2; j <= number-1; j++)
		{
			if (number % j == 0)
			{
				n = 0;
				break;
			}
		}
		if (n == 1)
			printf("%d	", number);
	}
	return 0;
}

3.最大公约数和最小公倍数(暴力穷举法)

(1)最大公约数(GCD)的求解方法:
如果大数可以整除小数,那么最大公约数为小数。
如果大数不可以整除小数,那么两个数中较小的数开始,逐个往下枚举,找到两个数都能整除的最大的数,即为最大公约数。
如果两个数中有一个数为0,则另一个数即为最大公约数

(2)最小公倍数(LCM)的求解方法:
先求出最大公约数。
两个数的乘积除以最大公约数即为最小公倍数。

4. 将三个整数数按从大到小输出

int a, b, c, temp;
scanf("%d %d %d", &a, &b, &c);
if (a > b)
{
	temp = a;
	a = b;
	b = temp;
}
if (a > c)
{
	temp = a;
	a = c;
	c = temp;
}
if (b > c)
{
	temp = b;
	b = c;
	c = temp;
}
printf("%d %d %d", c, b, a);
return 0;

5.打印九九乘法表

int main()
{
	for (int i = 1; i < 10; i++)
	{
		for (int j = 1; j < (i+1); j++)
		{
			printf("%d*%d=%d	", i, j, i * j);
		}
		printf("\n");
	}
	return 0;
}

6.strlen和数组

#include <stdio.h>
#include <string.h>

int main()
{
    char arr[] = {'b', 'i', 't'};
    printf("%d\n", strlen(arr));
	return 0;
}

strlen是用来获取字符串的有效长度的,结尾标记’\0’不包含在内。
strlen获取的规则非常简单:从前往后依次检测,直到遇到’\0’是就终止检测。
而题中arr是一个字符数组,不是一个有效的字符串,因为后面没有放置’\0’,因此strlen在求解时,将有效字符检测完之后,还会继续向后检测,直到遇到’\0’是才终止,因此答案为不确定。

7.算术操作符

A:除号两边只要有一个是小数,就执行小数除法
B:%操作符的操作数只能是整数
C:%操作符计算的结果是两个操作数整除之后的余数
D.负数求模的规则是,结果的正负号由第一个运算数的正负号决定。

8.scanf函数

A.scanf中也有占位符,占位符和后边的参数提供的地址一一对应。
B:scanf()处理数值占位符时,会自动过滤空白字符,包括空格、制表符、换行符,scanf输出字符占位符的时候,不忽略空白字符,总是返回当前第一个字符,无论该字符是否为空格。
C:scanf的占位符%s表示读取一个字符串,遇到空白字符就停止读取。
D:scanf需要包含stdio.h这个头文件的

9.printf函数

A.printf()的作用是将参数文本输出到屏幕。它名字里面的f代表format(格式化),表示可以定制输出文本的格式。
B.printf()不会在行尾自动添加换行符,运行结束后,光标就停留在输出结束的地方,不会自动换行。
C.printf()可以在输出文本中指定占位符,“占位符”,就是这个位置可以用其他值代入。
D.printf()参数与占位符是一一对应关系,如果有n个占位符,printf()的参数就应该有n+1个
E.printf()允许限定占位符的最小宽度。%5d表示占位符的宽度至少为5位。如果不满5位,对应的值的前面会添加空格。如果超过5位,正常输出就行,5是最少输出5位。

10.关系操作符

A.C语言的关系操作符就是用来比较大小关系的
B.关系操作符中判断是否相等使用==
C.两个字符串是否相等不能使用==,应该使用strcmp函数
D.关系操作符参与的关系表达式,通常返回0或1,表示真假

11.switch语句

(1)switch语句时多分支的选择语句,switch中表达式结果命中那个case,就执行该case子项,如果case子项后没有跟break语句,则继续往下执行。
例如:

#include <stdio.h>
int main() {
	int x = 3;
	int y = 3;
	switch (x % 2) {
	case 1:
		switch (y)
		{
		case 0:
			printf("first");
		case 1:
			printf("second");
			break;
		default: printf("hello");
		}
	case 2:
		printf("third");
	}
	return 0;
}

(2)switch©语句中,switch语句中表达式的类型只能是整形和枚举类型,不可以是浮点类型。

12.while循环

while(条件表达式) 循环体,条件表达式的执行次数总是比循环体的执行次数多一次

13.rand函数

A.rand函数生成了0~32767之间的随机数
B.rand函数生成的是伪随机数,是通过某种算法生成的随机数
C.rand函数在使用之前,需要调用srand函数设置随机数的生成器
D.rand函数的使用需要包含stdlib.h的头文件

14.数组

(1)要点
A.数组的下标是从0开始的
B.数组在内存中是连续存放的
C.数组名表示首元素的地址。
数组名既可以表示数组的地址,也可以表示数组首元素的地址,两个在数值上是一样的,但是含义不一样。
注意:数组名只有在sizeof和&后才代表整个数组,其它都表示首元素的地址。
D.根据系统而定,一般都是数组下标由小到大,地址由低到高
(2)例题1

char acX[] = "abcdefg";
char acY[] = { 'a','b','c','d','e','f','g'};

分析:
acX和acY都是字符数组,但是初始化表达式不同。
区别:
acX:数组中总共有8个元素,分别是:‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘\0’
acY:数组中总共有7个元素,分别是:‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’
sizeof求的是数组大小,数组大小等于有效元素个数*每个元素的大小。sizeof(acX) = 8,sizeof(acY) = 7
strlen求的是字符串长度,从首元素开始计算,遇见‘\0’停止,由于acY数组没有’\0‘,所以strlen(acY)的结果是个随机值。
(3)例题2(sizeof函数)

#include <stdio.h>
int main()
{
    int arr[] = {1,2,(3,4),5};
    printf("%d\n", sizeof(arr));
    return 0;
}

分析:对于int arr[] = {1,2,(3,4),5}数组,里面总共有4个元素,(3,4)为逗号表达式,取后者,因此数组中元素分别为:1,2,4,5。而sizeof(arr)求的是整个数组所占空间的大小,即:4sizeof(int)=44=16

(4)例题3(sizeof函数、strlen函数、数组)

#include <stdio.h>
int main()
{
    char str[] = "hello bit";
    printf("%d %d\n", sizeof(str), strlen(str));
	  return 0;
}

分析:
str字符数组使用"hello bit"初始化,最终也会将’\0’放置到数组中,因此数组中总共有10个元素
sizeof(str):获取数组的总大小,10个元素,每个元素占1个字节,因此总共是10个字节
strlen(str): 获取字符串中有效字符的个数,不算’\0’,因此总共9个有效字符
故上述printf会分别打印:10 9

相关推荐

  1. 标题

    2024-07-19 20:12:04       68 阅读
  2. 标题

    2024-07-19 20:12:04       67 阅读
  3. 标题

    2024-07-19 20:12:04       63 阅读
  4. 标题

    2024-07-19 20:12:04       73 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 20:12:04       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 20:12:04       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 20:12:04       62 阅读
  4. Python语言-面向对象

    2024-07-19 20:12:04       72 阅读

热门阅读

  1. z-fighting多视锥方案缺失depth information的思考

    2024-07-19 20:12:04       15 阅读
  2. 代码随想录打卡第二十九天

    2024-07-19 20:12:04       19 阅读
  3. 产品经理的样板

    2024-07-19 20:12:04       14 阅读
  4. 关于二进制和八进制

    2024-07-19 20:12:04       18 阅读
  5. Linux 和 Unix 系统中非常流行文本处理工具awk

    2024-07-19 20:12:04       16 阅读
  6. 专升本-1.0.4(英语)-升本208天-学习成果展示

    2024-07-19 20:12:04       18 阅读
  7. 1818:ATP

    2024-07-19 20:12:04       21 阅读
  8. 使用容器化技术部署淘客返利系统的实践与挑战

    2024-07-19 20:12:04       20 阅读
  9. 【WiFi】DFS Vs ZW-DFS

    2024-07-19 20:12:04       17 阅读