问题描述
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.710^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采用第二种初始化时数组声明必须同时指定行和列的维数。
二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量。