【C生萬物】零基础选手初窺c語言(2)


一、strlen和sizeof的区别是什么?

一、strlen与sizeof的区别:

    1、strlen只计算字符串的具体长度,不包括字符串结束符(\0)

    2、sizeof计算声明后(extern)所占的字节大小,包含‘\0’。

    3、sizeof是取字节运算符,strlen是函数。

#include<stdio.h>
int main()
{
	//strlen是函数
	//strlen计算的是数组中字符串的具体长度,遇到空字符\0为止,
	//如果数组中没有写入\0,则一直到遇到\0为止(这种时候输出为不固定随机值)
	// stelen只计算字符串长度
	// sizeof是运算符
	//sizeof计算的是声明后数组的字节大小,包含‘\0’。
	//sizeof不局限于计算数组

	
	char arr[] = { 1,2,3,4,5,6,7,8,9 ,};
	char brr[] = { 1,2,3,4,5,6,7,8,9 ,10,'\0'};
	int a = { 1 };
	printf("%d\n", strlen (arr));//58,随机值
	printf("%d\n", sizeof(arr));//9
	printf("%d\n", strlen(brr));//10
	printf("%d\n", sizeof(brr));//11
	printf("%d\n", a);//1
	return 0;
}

二、为什么写代码的时候要加注释

注释为对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。注释为编写程序时,写程序的人给一个语句、程序段、函数等的解释或提示,能提高程序代码的可读性。注释只是为了提高可读性,不会被计算机编译。

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>//头文件

int main()//主函数
{
	printf("I lost my tellphone/n" );//打印字符及要打印的东西
	return 0;//返回符
}

//注释是为了更好的理解代码,提高阅读理解效率。

三、选择语句(if else)

举个例子,小明想坐电梯回家,电梯满载12人,此时电梯前有很多人要做电梯,上一趟2分钟,下一趟2分钟。小明现在数人头,那么请你算算小明坐电梯回家需要多久。

#include<stdio.h>
int main()
{
    int a = 0 ;//小明数人头后输入数量
    int b = 2;
    int c = 2;
    scanf("%d", &a);
    if (a < 12)//如果满足a<12
    {
        printf("%d\n", b);//打印b
    }
    else if (a >12)//如果满足a>12
        printf("%d\n", 4 * (a / 12) + c);//打印4 * (a / 12) + c的结果
        return 0;
}//if else常跟循环语句一起使用。

 选择语句一般在暂未确定要计算的数量时使用,或者说需要计算多种情况下使用。


四、while循环语句

while是计算机的一种基本循环模式。当满足条件时进入循环,进入循环后,当条件不满足时,执行完循环体内全部语句后再跳出,而不是立即跳出循环。

话不多说,直接敲

#include<stdio.h>
int main()
{
	int a = 1;
	int r = 6;//确定值
	while (a <= 8)//给定条件范围

		if (a <= 5)
		{
			printf("%d\n", a);
			a++;//小于等于5就往回加1,直到大于5跳出,转到下一个条件
		}
		else
		{
			printf("%d\n", r);//满足则依次打印
			a++;//大于5往回加1,直到超出条件范围(a<=8)退出
		}

		return 0;
}
当执行完条件内的指令后跳出循环
打印结果为1,2,3,4,5,6,6,6
#include<stdio.h>
int main()
{
	int a = 1;
	int r = 6;//确定值
	while (a <= 8)//给定条件范围

		if (a <= 5)
		{
			//break;//当遇到break时循环终止,这里往下的命令都不执行
			printf("%d\n", a);
			a++;//小于等于5就往回加1,直到大于5跳出,转到下一个条件
		}
		else
		{

			continue;//while中出现continue时,a>5后不再自加,陷入死循环
			//此时运行代码只输出1,2,3,4,5后一直返回表达式部分,不再输出。
			printf("%d\n", r);//满足a>5,则依次打印
			a++;//大于5往回加1,直到超出条件范围(a<=8)退出
		}

	return 0;
}

五、如何用函数实现两数相加

给定两个值a,b.使得随机写入两个数相加得到结果。

再给出一个值装这两个值的和。也可以调用函数实现相加。

#include<stdio.h>
int main()
{
	int a = 20;
	int b = 18;
	int sum = 0;
	sum = a + b;//a+b的值汇总到一起
	printf("%d\n",sum);//输出38
	return 0;
}
#include<stdio.h>
int ADD(int x, int y)
{
	int z = 0;
	z = x + y;
}
int main()
{
	int a = 10;
	int b = 20;
	int sum = 0;
	sum = ADD(a,b);//借用ADD的值,x=a,y=b
	printf("%d\n",sum);//此时输出结果为30
	return 0;
}

六、数组的使用及下标的概念

数组我们可以理解为一个存放相同元素的集合,例如我们的整数1,2,3。字母a,b,c,d,e。将这些相同的元素存放在一个集合,这个集合就是数组。

下标可以理解为是数组内元素的位置,打印这个下标输出的就是具体的单个元素。

下标是从0开始计算的。

#include<stdio.h>
int main()
{
	char arr[6] = { '1','2','3' };
	char gft[10] = { 'a','b','c','d','e'};
    //下标是从0开始算的,也就是说a的下标是0,b的下标是1
	printf("%s\n", arr);//1 2 3
	printf("%s\n", gft);//a b c d e
	printf("%c\n", arr[2]);//3
	printf("%c\n", gft[1]);//b
	return 0;
}
//打印数组用%s,%s是打印字符串类型
//打印下标用%c,%c是打印字符类型

七、且&&与或||及逗号表达式

&&是并且的意思,即同时满足两个条件

或是或者的意思,即满足a条件或满足b条件

比如,你可以同时买雪糕和饮料,

           你可以买雪糕或者饮料。

逗号表达式,当一条件成立?成立,输出二的文本,不成立,输出三的文本。

                     a>=1&&a<=5  ?  yes   :     no

                     a>=1 || a>=5  ?  yes   :     no

int main()
{
	int a = 3;
	a >= 1 && a <= 5 ? printf("yes\n") : printf("no\n");
	
	a >= 1 || a >= 5 ? printf("yes\n") : printf("no\n");
	return 0;
}

输出结果为两个yes

\n是换行符的意思。

八、关键字typedef及static(附上unsigned int概念解释)

typedef,是类型重定义的意思。即把一个类型的名字定义成一个新名字,当需要多次输入一个相同的类型时,typedef提供了很好的便携性。

#include<stdio.h>
typedef unsigned int sf;
int main()
{
	unsigned int a = 1;
	sf b = 1;//此时sf等于unsigned int
	printf("%d\n", a);//1
	printf("%d\n", b);//1
	return 0;
}

unsigned int,是无符号整型的意思。

unsigned的取值范围在0-2^32。不能表示负数。

每一种整型(int short long longlong)都有无符号(unsigned)和有符号(signed)两种类型,在一般情况下的整型变量都是有符号的,如果需声明无符号的话就会在类型前加上unsigned。

static,可以修饰局部变量,全局变量以及函数。

修饰局部变量时,改变生命周期,不改变作用域。

修饰全局变量时,使变量不可跨文件(源文件)使用,只能在本文件内使用

(一般情况下不加static全局变量加上声明是支持跨文件使用的)

修饰函数时,使函数不可跨文件(源文件)调用和访问,只能在本文件内使用

(一般情况下不加static函数加上声明是支持跨文件使用的)

 

 

 

 

 九、如何用函数实现除法及取余

这两天刷到一道题很有意思,是说随机输入一个数,将它转化成时间(小时,分钟,秒)

比如3661转化成时间就是一小时一分钟一秒。

除号/,取余数用%

%可以理解为余数,比如说1%60即1。

#include<stdio.h>
int main() {
    int h, m, s;
    scanf("%d", &s);
    h = s / 3600;//计算小时,一小时3600秒
    m = s / 60 %60 ;//计算分(取余就是去掉转换成小时的分钟数)
    s = s % 60;//计算秒数
    printf("%d %d %d", h, m, s);
    return 0;
}

 写的不好还请多多指教哦~

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值