C语言笔记(1)

问题描述

1.printf中输出%

2.[Error] lvalue required as left operand of assignment
[Error] variable-sized object may not be initialized

3.整数输出不足两位时补0,控制输入个数

4.浮点数printf输出格式字符串(格式)

5.rand随机数生成函数

6.mask和x同位数

7.C语言中whlie(1)跳出循环的三种结束方式

8.浮点数指数输出[e-(E-)记数法]printf输出

9.0与1

10.N[1000]={100};

11.for循环的初始判断

12.sizeof(a)输出

13.for(int i=len-1;i>0;i–)

14.逻辑类型 bool

15.4<x<6与a=b=c

16.逻辑运算顺序

17.逗号连接两个表达式

18.short int,long int,long double范围

19.类型转换

20.数组初始化

21.char 字符串名称[长度] = {‘字符1’,‘字符2’,…,‘字符n’,’\0’};

22.多维数组的初始化

解决方案:

1.printf中%%

2.原因,赋值语句的左边应该是变量,不能是表达式。而实际上,这里是一个比较表达式,所以要把赋值号(=)改用关系运算符(==)
定义数组的时候使用变量来定义数组长度。char b[a] = “jfkd”;

printf("%02d:%02d",ih,im);

02d 不足两位数时需要补前导零的输出格式

scanf("%3d",&a);

键入123456,实际123

〔标志〕〔输出最少宽度〕〔.精度〕〔长度〕类型
“%-md” :左对齐,若m比实际少时,按实际输出。
“%m.ns”:输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n
“%7.2s” 输入ABCHINA
输出" AB"
“%m.nf”:输出浮点数,m为宽度,n为小数点右边数位
“%3.1f” 输入3852.99
输出3853.0
printf函数的浮点数宽度限制输出:
以%mf或%mlf格式输出浮点时,如果指定的宽度大于实际数据宽度,按指定宽度输出,多余数补空格;如果指定的宽度小于实际数据宽度,浮点数的整数部分将以实际位数输出。整数限宽输出类似
另外:printf %ld %lld %d

5.<stdlib.h>
随机数生成
//先设置种子

srand(time(0)) ;

//然后产生 [m,n] 范围内的随机数num

int num=rand()%(n-m+1)+m;
while(x>9){
		x/=10;
		mask*=10;
	     }

7.方式有三种:break;return;goto;

goto out; ...  out:

8.浮点数指数计数法:ae+b=a*10^b

double eps; 
scanf("%le", &eps);     
scanf("%lf", &eps);

9.if(非0) 执行

10.初始化值的个数可少于数组元素个数.当初始化值的个数少于数组元素个数时,前面的按序初始化相应值, 后面的初始化为0(全局或静态数组)或为不确定值(局部数组).N[1000]={100};只有第一个元素是100

11.for(i=0;i<b;i++)
b=0的话就进不了循环了

12.printf(“sizeof(a)=%ld\n”,sizeof(a));
printf(“sizeof(a)=%lu\n”,sizeof(a)); 相同

13.are only allowed in C99 or C11 mode


#include <stdio.h>
#include <stdbool.h>    //有了这个头文件后就可以使用bool,true,false 
int main()
{
    bool  b = true;
    printf("b=%d\n",b);
    bool  b2 = false;
    printf("b2=%d\n",b2);
    return 0;
}

输出b=1 b2=0

15.4<x<6不能用C语言直接表示,因为4<x的结果是一个逻辑值,应该表示为x>4&&x<6,a=b=c可以,显然abc不可以

逻辑运算都是从左到右进行,如果左边的结果已经决定结果,不会再进行右边的计算 a==6&&b+=1 不要把赋值,包括复合赋值组合进表达式,从而有 短路,
对于&&,左边是false时就不做右边了;对于||,左边是ture时就不做右边了

17.逗号运算符,优先级最低,逗号连接两个表达式,右边表达式的值作为结果

int i;
i=(3+4,5+6);
printf("%d\n",i);  //运行结果是11                                            

18.short int 就是平时用的int,范围32767,long/long int 范围2^31
double 1.710^308 ,
long double 1.7
10^4932,大数就用double,一般不用long 或者long long int,int ,short int, long int是根据编译环境的不同,所取范围不同。

19.自动类型转换
在这里插入图片描述
20.在声明数组后没有进行初始化的时候,静态(static)和外部(extern)类型的数组元素初始化元素为0,自动(auto)类型的数组的元素初始化值不确定。

21.采用第2种方式的时候最后一个元素必须是’\0’,’\0’表示字符串的结束标志

22.①数据类型 数组名称[常量表达式1][常量表达式2]…[常量表达式n] = {{值1,…,值n},{值1,…,值n},…,{值1,…,值n}};
②数据类型 数组名称[常量表达式1][常量表达式2]…[常量表达式n]; 数组名称[下标1][下标2]…[下标n] = 值;
多维数组初始化要注意以下事项:
1采用第一种始化时数组声明必须指定列的维数。因为系统会根据数组中元素的总个数来分配空间,当知道元素总个数以及列的维数后,会直接计算出行的维数;
2采用第二种初始化时数组声明必须同时指定行和列的维数。
二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值