C语言基础3

printf的返回值

printf返回的是它打印了多少个字符

例:printf("%d",printf("%d",printf("%d",43)));

括号最里面的printf打印输出一个值43,这个时候它给相邻的printf函数返回了43这个值的个数2,这个printf会给最外层的printf函

返回2的个数1,这样一层层运行,最后输出的值就是4321。

scanf的返回值

scanf()函数有返回值且为int型。 

scanf()函数返回的值为:正确按指定格式输入变量的个数;即能正确接收到值的变量个数。

 例:     scanf("%d%d", &a, &b);

如果a和b都被成功读入,那么scanf的返回值就是2

如果只有a被成功读入,返回值为1

如果a和b都未被成功读入,返回值为0

如果遇到错误或遇到end of file,返回值为EOF

断言assert

断言是编程术语,表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断

验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。

使用断言可以创建更稳定、品质更好且 不易于出错的代码。当需要在一个值为FALSE时中断当前操作的话,可以使用断言。

断言不是函数,而是一个宏。

#include<stdio.h>
#include<assert.h>
bool IsPrime(int n)//判断一个数是否为素数
{
	assert(n != 1);
	for(int i = 2;i < n;i++)
	{
		if(n % i == 0)
		{
			return false;
		}
	}
	return true;
}
int main()
{
	bool flg = IsPrime(6);
	printf("%d\n",flg);
	return 0;
}

逗号表达式

	int c;
	int b = (a = 20,c = 30);
	printf("%d\n",b);

得到的结果是b=30

求三个数的最大值

#include<stdio.h>
int Max2(int a,int b)//把两个数字先进行比较
{

	return a > b ? a : b;
}

int Max3(int a,int b,int c)
{
	return Max2(Max2(a,b),c);
}
int main()
{
	int max = Max3(10,20,30);
    printf("%d\n",max);
	return 0;
}

isdigit是计算机C(C++)语言中的一个函数,主要用于检查其参数是否为十进制数字字符。

判断字符ch是否为英文字母,若为英文字母,返回非0(小写字母为2,大写字母为1)。若不是字母,返回0。

for循环

1.语句最简形式为:

for( ; ; )

2.一般形式为:

for(单次表达式;条件表达式;末尾循环体)

{

中间循环体;

}

其中,表示式皆可以省略,但分号不可省略,因为";"可以代表一个空语句,省略了之后语句减少,即为语句格式发生变化,则

编译器不能识别而无法进行编译。

for循环小括号里第一个";"号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量

赋初值; 也可用来计算其它与for循环无关但先于循环部分处理的一个表达式。

int main()//运行这个程序可以清楚看到for循环的内部构造
{
	int i;
	for(i = 0,printf("#1%d\n",i);printf("#2:%d\n",i),i < 3;i++,
		printf("#3:%d\n",i))
	{
		printf("语句块\n");
	}
	return 0;
}

if和switch

switch与if的区别:(if 和else都为条件判断语句)

 1.switch会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。程序首先判断switch变量是否大于最大case 常量,若大于,则跳到default分支处理;否则取得索引号为switch变量大小的跳表项的地址,程序接着跳到此地址执行,到此完成了分支的跳转。

 2. 当分支较多时,当时用switch的效率是很高的。因为switch是随机访问的,就是确定了选择值之后直接跳转到那个特定的分支,switch只能是在常量选择分支时比ifelse效率高,但是if能应用于更多的场合,if比较灵活。

 3. switch适合处理判断分支较多的情况下,而if适合处理判断分支较少的情况下 。

 4.switch可以同时对多个条件进行处理和选择,而if 每次只能描述一个条件,多个需要用到if语句嵌套。

 5.if :不管有多少次比较,都会一一进行比较   switch() >=4   被优化为一次比较

switch 语句,仅能够处理整型数值,即switch()括号中的判断的值,必须是整型的,float 和double不能被判断,而且每个case后面跟的值,也必须是整形的。对于大规模的连续数值,比如if(a>=1 && a<=100) 这样的语句,要用switch则需要连续写100个case,这种情况下,switch是不适用的。但是总体来说,对于散列的整型数据,用switch语句更清晰明确,而对于其它情况,if语句则更好。

#include<stdio.h>
void Fun(char ch)
{
	switch(ch)
	{
	case 'A':
		printf("90-100\n");
		break;
	case 'B':
		printf("70-80\n");
		break;
	case 'C':
		printf("60-70\n");
		break;
	case 'D':
		printf("60以下\n");
		break;
	default:
		printf("不及格\n");
		break;
	}
}
int main()
{
	Fun('A');
	Fun('B');
	return 0;
}

数字求和

#include<stdio.h>
void Sum(int n)//求和
{
	int sum = 0;
	int sumOdd = 0;//奇数
	int sumEve = 0;//偶数

	for(int i  = 1;i <= n; i++)
	{
		sum += i;
	}
	for(int i = 1;i <= n;i += 2)
	{
		sumOdd += i;
	}
	for(int i = 2;i <= n;i += 2)
	{
		sumEve += i;
	}
	printf("sum ==>%d",sum);
	printf("sumOdd ==>%d",sumOdd);
	printf("sumEve ==>%d",sumEve);
}
int main()
{
	Sum(1000);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41078889/article/details/83047562