默认计划
491人加入学习
(0人评价)
【研发工程师】C语言程序设计
价格 ¥ 970.00
该课程属于 名企研发核心能力课 请加入后再学习

 scanf标准输入函数,从终端中输入。

 printf标准输出函数,从终端中输出。

 

文件描述符stdin标准输入,

文件描述符stdout标准输出。

文件描述符EOF(看不见)文件末尾。

----------------------------------------------

sprintf(字符数组首地址, format, ...):将标准输出打印到字符串(字符数组)中

return成功打印字符的数量

sprintf常用于字符串拼接:

sscanf(str, "%d%d" , ...);  字符串的分割

char str[100] = {0};
int arr[4] = {0};
sprintf(str, "%d.%d.%d.%d", 192, 168, 1, 1);
printf("%s\n", str);    // str的内容为192.168.1.1
// 字符串分割
sscanf(str, "%d.%d.%d.%d", &arr[0], &arr[1], &arr[2], &arr[3])

 

//FILE类型
FILE *fp = fopen("相对路径or绝对路径", "w+r+");

w+ : 如果当前文件不存在,w+可建立新文件

w: 覆盖写

a+ : 追加写

r+ 

b等等。

 

fprintf(文件(指针类型), format, ...):将标准输出打印到 文件 中

return成功打印字符的数量

fprintf(fp, "%s\n", str);

sprintf(文件(指针类型), format, ...):从文件中进行标准输入。

%c法:

// fscanf()读入文件全部并打印
FILE *fp = fopen("./output", "r+");
char temp[100] = {};
int k = 0;
while (~fscanf(fp, "%c", &temp[k++]));
printf("%s\n", temp);
fclose(fp);

 

%s法(推荐):

// fscanf()读入文件全部并打印
FILE *fp = fopen("./output", "r+");
char temp[100][100] = {};
int k = 0;
while (~fscanf(fp, "%[^\n]s", temp[k++])) {
    fgetc(fp);
}
for (int i = 0; i < k; i++) {
    printf("%s\n", temp[i]);
}
fclose(fp);

 

----------------------------------------------

数学运算:

=

+ - * /  ( )

%

& | ^ ~

<< >>

二进制运算:

^异或,相同为0,不同为1.

逆运算:要满足交换律。

比如减法是加法的逆运算,但是加法不是减法逆运算。

因为a + b = b + a,但a - b != b - a

 

异或运算本身与自己就是逆运算。

a ^ b = c

c ^ b = a

c ^ a = b

 

a ^ a = 0; // 相同为0

0 ^ b = b; // 不同为1

 

 面试题:

若干的数字,其中只有一个数只出现1次,其他都出现了2次,问如何快速找到?

 

如 2 3 2 3 1,所有运算之间异或:

2^3^2^3^1 = 2^2^3^3^1

                     = 0 ^ 0 ^ 1

                     = 1

(满足交换率)

 

~按位取反:

如: 0 -> 0b00000000

~0 = -1 -> 0b11111111

 

左移 <<  左移1位相当乘2

右移 >>  右移1位相当除2

空的补符号位

 

循环读入:

while (~scanf("%d", &n)){ 

}

因为~0 = -1(EOF)

 

二进制补码表示数:

补码=反码 + 1

反码=~原码

 

负数=~原码 + 1

 

方便记忆:

竖式运算0-1得到-1

 00000000

-00000001

----------------

 111111111

 

 

[展开全文]
灰酱 · 2024-01-02 · 数学运算 0

 

  1. scanf,sscanf, fscanf。sscanf(str, "%d.%d.%d.%d", &arr[0], &arr[1], &arr[2], &arr[3]);。FILE *fp = fopen("  ./output", "r");  fscanf(fp, "%s\n", temp); fclose(fp);
  • fp = fopen("./output", "r+");
    while( fscanf(fp, "%c", temp[k++]) != EOF);
    fp = fopen("./output", "r+");
  • while( fscanf(fp, "%[^\n]s", temp[k++]) != EOF);
  1.  printf, sprintf: , fprintf。 sprintf(str, "%d.%d.%d.%d", 192,168, 0,1);。 FILE *fp = fopen("  ./output", "w");  fprintf(fp, "%s\n", str); fclose(fp);

数学运算

  • 加法为逆运算、 满足交换律
  • ^为逆运算 a^b = c, c^b = a. a^a = 0 。 
  • <<, >> 左移右移, 表示最高位补符号位, 正为0.负为1

           负数 = 补码, 补码 = 反码 + 1, 

           负数 = 按位取反再加一

      入门组刷完

[展开全文]

授课教师

C++算法工程师

课程特色

视频(31)