前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C基础系列(一)

C基础系列(一)

作者头像
Vincent-yuan
发布2020-06-02 16:01:35
4600
发布2020-06-02 16:01:35
举报
文章被收录于专栏:Vincent-yuanVincent-yuan

这里做一些C语言的语法的总结。

1.输出数字类型

代码语言:javascript
复制
printf("%d\n",2);

2.保留小数点后一位,示例为1 不是 L

代码语言:javascript
复制
printf("%.1f\n",8.0/5.0);

3.整数值用 %d,实数用 %f 输出。

4.开平方,需要引入 #include<math.h>

代码语言:javascript
复制
sqrt(3)

5.scanf中的占位符和变量的数据类型应一一对应,且每个变量前都需要加&符号。

6.输入两个实数(含小数):这里是两个L,即为 lf , 这里要注意,输入实数采用的是 “%lf ” 而不会 “ %f ”

代码语言:javascript
复制
scanf("%lf%lf",&r,&h);

7.用const关键字声明常数

代码语言:javascript
复制
const double pi = acos(-1.0);

8.要把25输出为025,可以使用 %03d 即可。

代码语言:javascript
复制
printf("%03d\n", m);

9.在C99中,double的输出必须用 %f , 而输入需要用 %lf

10. 怎么输出 \n , 可以 用“\\n”

11.怎么输出 %d , 可以用 “%%d”

12. 在定义变量时,最好尽量缩小变量定义的范围。

13. 浮点数的运算有可能存在误差。那么怎么避免呢?

为了减小误差的影响,一般改成四舍五入,即 floor(x+0.5)。

14. 浮点运算可能存在误差。在进行浮点数比较时,应考虑到浮点误差。

15. 在大多数平台中,int都是32位整数,范围是 -2147483648 ~ 2147483647 。要注意int类型溢出问题。

16. 要计算只包含加法,减法和乘法的整数表达式除以正整数n的余数,可以在每步计算之后对n取余,结果不变。

17. 可以使用time.h和clock()函数获得程序运行时间。常数CLOCKS_PER_SEC 和 操作系统,

请不要直接使用clock()的返回值,而应总是除以CLOCK_PER_SEC。

代码语言:javascript
复制
printf("Time used = %.2f\n", (double)clock()/CLOCKS_PER_SEC);

18.变量在未赋值之前的值是不确定的。

19. 使用文件最简单的方法是使用输入输出重定向

代码语言:javascript
复制
freopen("input.txt","r", stdin);
freopen("output.txt","w",stdout);

20.#ifdef 和 #endif 如果怎样就执行

代码语言:javascript
复制
#define LOCAL
...

int main()
{
   #ifdef LOCAL
     printf("test");
  #endif  
}

21.如果要求用文件输入输出,但是禁止使用重定向的方式,可以如下

代码语言:javascript
复制
#include<stdio.h>
#define INF 100000000
int main()
{
    FILE *fin,*fout;
    fin = fopen("data.in","rb");
    fout = fopen("data.out","wb");
    int x,n=0,min = INF,max=-INF,s=0;
    while(fscanf(fin,"%d",&x)==1){
        s += x;
        if(x<min) min=x;
        if(x>max) max = x;
        n++;
    }
    fprintf(fout,"%d %d %.3f\n",min,max,(double)s/n);
    fclose(fin);
    fclose(fout);
    return 0;
}

可以看出,先声明变量 fin 和 fout, 把 scanf 改成 fscanf ,第一个参数为 fin ;

把 printf 改成 fprintf,第一个参数为 fout ,最后执行 fclose,关闭两个文件。

22.输出精确到小数点c为的实数。

代码语言:javascript
复制
printf("%.*lf\n",c,(double)a/(double)b);

而对下面用法,前面的*定义的是总的宽度,后面定义的是输出个数,分别对应外面的参数m,n

代码语言:javascript
复制
printf("%*.*s\n",m,n,ch);

23.一维数组定义

代码语言:javascript
复制
int a[maxn]

24.数组a可以被声明在main里面也可以在外面。只有在外面时,数组a才可以开的很大;放在main函数里面,数组稍大就会异常退出。

25. 数组不能够进行赋值操作,如果要从数组a复制k个元素到数组b,可以这样做:

代码语言:javascript
复制
memcpy(b,a,sizeof(int)*k)

当然,如果数组a和b是浮点型的,复制时要写成

代码语言:javascript
复制
memcpy(b,a,sizeof(double)*k)

使用memcpy函数,需要包含头文件 string.h。

如果要把数组a全部复制到数组b中,可以这样

代码语言:javascript
复制
memcpy(b,a,sizeof(a))

26. 把数组清零

代码语言:javascript
复制
memset(a,0,sizeof(a));

27.二维数组

代码语言:javascript
复制
int a[maxn][maxn];

28. 读入一个不含空格、TAB和回车符的字符串,存入字符数组s

代码语言:javascript
复制
scanf("%s",s);

它遇到空白字符会停下来。

29.把数字输入到字符数组中

代码语言:javascript
复制
sprintf(buf, "%d%d%d%d%d",abc,de,x,y,z);

30.判断buf中的指定位置的字符是否包含在字符数组s中,如果不包含则为NULL

代码语言:javascript
复制
if(strchr(s,buf[i])==NULL) ok = 0;

31.在一个字符串中查找单个字符: strchr

32. strlen(s) 返回的是结束标记之前的字符个数。

33. 由于字符串的本质是数组,它也不是一等公民,只能用strcpy(a,b),strcmp(a,b), strcat(a,b)来执行赋值,比较,和连接操作。

34. 对于由空格的字符串输入,可以使用 fgetc(fin), 它读取一个打开的文件 fin,读取一个字符,然后返回一个 int值。

如果要从标准输入读取一个字符,可以用getchar,它等价于 fgetc(stdin)。

第二种方法是使用 fgets(buf, maxn,fin) 读取完整的一行。

fgets(buf,maxn,fin) 将读取完整的一行放在字符数组 buf 中。应该保证 buf 能够存放下文件的一行内容。

fgets的标准输入版 gets , gets没有指明读取的最大字符数。

gets已经被废除了。

C语言中的 gets(s) 存在缓冲区溢出漏洞,不推荐使用。

代码语言:javascript
复制
while((c=getchar()) != EOF){
...
}

35. 常量数组

代码语言:javascript
复制
char s[] = "1234567890"

36.找字符在常量数组中的位置

代码语言:javascript
复制
while((c=getchar()) != EOF )
{
    for (i=1;s[i] && s[i] != c ; i++);
}

37. isalpha 判断字符是否是字母,类似的 isdigit , isprint 等,都是定义在头文件 ctype.h

而 toupper, tolower 等可以用来转换大小写。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档