站在巨人的肩膀上 C语言理解和简单练习(包含指针前的简单内容)

1.格式化的输入/输出

1.1printf函数

printf函数你需要了解的就是转换说明,转换说明的作用是将内存中的二进制转换成你所需要的格式入%d就是将内存中存储的变量的二进制转化为十进制并打印出来,同时我们可以在%X的转换说明对精度和最小字段宽度的指定,更多内容可以了解C语言程序设计现代方法这本书。

1.2scanf函数

输入部分的内容可以看前面我写的博客你真的懂scanf函数吗

1.3练习

题目和代码如下所示
注意因为一个项目只能包含一个main函数因此博主为了一个源文件能进行多次练习同时避免注释
作者将main函数写成了main1,main2的形式。如果你想运行的话麻烦将数字去掉

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//purpose:下面的printf函数调用产生的输出分别是什么?这部分内容可以看我写的转换部分区别的博客
//date:24/6/24
int main1()
{printf("%6d,%4d\n", 86, 1040);printf("%12.5e\n", 30.253);printf("%4.f\n", 83.162);printf("%-6.2e\n", .00000009979);printf("%-6.2g\n", .00000009979);return 0;
}
//purpose:编写printf函数调用以下列格式来显示float型变量x
//date:24/6/24
int main2()
{float x = 1.f;printf("%-8.1e\n", x);printf("%10.6e\n", x);printf("%-8.3f\n", x);printf("%6.f\n", x);return 0;
}
//purpose:说明下列每对scanf格式串是否等价?如果不等价,请指出他们的差异?这部分内容可以看我写的你真的懂scanf函数吗
//date:24/6/24
int main3()
{int a,b,c;int ret = scanf("%d", &a);printf("%d %d\n", ret, a);ret = scanf(" %d", &a);printf("%d %d\n", ret, a);ret = scanf("%d-%d-%d", &a, &b, &c);printf("%d %d %d %d\n", ret, a,b,c);ret = scanf("%d -%d -%d", &a, &b, &c);printf("%d %d %d %d\n", ret, a, b, c);return 0;
}
//purpose:编写一个程序,接受用户录入的日期信息并且将其显示出来。其中,输入日期的形式为月/日/年(即mm/dd/yy),输出日期的形式为年月日(即yymmdd)。格式如下所示:
//date:24/6/24
int main4()
{int mm, dd, yy;printf("Enter a date(mm/dd/yy):");int ret = scanf("%d/%d/%d", &mm, &dd, &yy);printf("You entered the date %d%d%d", yy, mm, dd);//将月转化一下如果输出2输出02,如果是10,11,12则不必这里就不这样了return 0;
}
//purpose:编写一个程序,对用户录入的产品信息进行格式化。格式运行后需要如下会话:自己执行一下这里就不写出了
//date:24/6/24
int main6()
{int mm, dd, yy, number;float price;printf("Enter item number:");scanf("%d", &number);printf("Enter unit price:");scanf("%f", &price);printf("Enter a date(mm/dd/yy):");scanf("%d/%d/%d", &mm, &dd, &yy);printf("Item\tUnit\tpurchase\n");//\t真是一个好工具,很容易就保持纵向的对齐printf("\tPrice\tDate\n");printf("%-d\t$%7.2f\t%d/%d/%d", number, price, mm, dd, yy);return 0;
}
//purpose:输入10.3 5 6变量存储的值是什么,scanf函数是一个模式匹配的函数
//date:24/6/24
int main7()
{int i, j;float x;int ret = scanf("%d%f%d", &i, &x, &j);printf("%d\n%d %f %d", ret, i, x, j);return 0;
}
//purpose:输入12.3 45.6 789变量存储的值是什么,scanf函数是一个模式匹配的函数
//date:24/6/24
int main8()
{float x, y;int i;int ret = scanf("%f%d%f", &x, &i, &y);printf("%d\n%f %d %f", ret, x, i, y);return 0;
}
#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//purpose:描述
/*给定两个整数a和b(0 < a, b < 10, 000),计算a除以b的整数商和余数。输入描述:一行,包括两个整数a和b,依次为被除数和除数(不为零),中间用空格隔开。输出描述:一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。
*/
//date:24/9/25
int main1()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);int ret1 = a / b;int ret2 = a % b;printf("%d %d", ret1, ret2);return 0;
}
/*purpose:
描述
据说智商140以上者称为天才,KiKi想知道他自己是不是天才,请帮他编程判断。输入一个整数表示一个人的智商,如果大于等于140,则表明他是一个天才,输出“Genius”。
输入描述:
多组输入,每行输入包括一个整数表示的智商。
输出描述:
针对每行输入,输出“Genius”。
*/
//date:24/9/25
int main2()
{int a = 0;while (scanf("%d", &a) != EOF){if (a >= 140)printf("Genius");}return 0;
}
/*purpose:
描述
KiKi想知道从键盘输入的两个数的大小关系,请编程实现。
输入描述:
题目有多组输入数据,每一行输入两个整数(范围 - 231~231 - 1),用空格分隔。
输出描述:
针对每行输入,输出两个整数及其大小关系,数字和关系运算符之间没有空格,详见输入输出样例。
*/
//date:24/9/25
int main3()
{int a = 0;int b = 0;while (scanf("%d %d", &a, &b) != EOF)if (a == b)printf("%d=%d\n", a, b);else if(a > b)printf("%d>%d\n", a, b);elseprintf("%d<%d\n", a, b);return 0;
}
/*purpose:
描述
判断一个整数是否能5整除是一个挺简单的问题,懒惰的KiKi还是不想自己做,于是找到你帮他写代码,你就帮帮他吧。
输入描述:
输入包括一个整数M(1≤M≤100, 000)。
输出描述:
输出包括一行,如果M可以被5整除就输出YES,否则输出NO(结果大小写敏感)。
*/
//date:24/9/25
int main4()
{int a = 0;while (scanf("%d/n", &a) != EOF)if (a % 5 == 0)printf("YES");elseprintf("NO");return 0;
}
/*purpose:
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的线段图案。
输入描述:
多组输入,一个整数(1~100),表示线段长度,即“*”的数量。
输出描述:
针对每行输入,输出占一行,用“*”组成的对应长度的线段。
*/
//date:24/9/25
int main5()
{int a = 0;while (scanf("%d", &a) != EOF){int i = 0;while (i < a){printf("*");i++;}printf("\n");}return 0;
}
/*purpose:
写一个代码打印1 - 100之间所有3的倍数的数字
*/
//date:24/9/25
int main6()
{for (int i = 3; i <= 100; i += 3)printf("%d ", i);return 0;
}
/*purpose:
写代码将三个整数数按从大到小输出。
例如:
输入:2 3 1
输出:3 2 1
*/
//date:24/9/25
int main7()
{int a,b,c,tmp;while (scanf("%d %d %d", &a, &b, &c) != EOF){if (a < b){tmp = a;a = b;b = tmp;}if (a < c){tmp = a;a = c;c = tmp;}if (b < c){tmp = b;b = c;c = tmp;}}printf("%d %d %d", a, b, c);return 0;
}

2.表达式

这部分的内容主要是有关结合性和优先级。可以看我的博客恼人的结合性和结合性,副作用。
C语言的线束特征之一就是它更多地强调表达式而不是语句,最简单的表达式是变量和常量,简单来说5也是个表达式。
赋值操作符=
赋值操作符要求它左边的操作数必须是左值,变量是已知唯一的左值。
在C语言中任何表达式都可以作为语句,但是并不是所有表达式语句都是有意义的。
如5;i+1;j+k,这些表达式语句的值没有任何作用会被丢弃,其实i++;原本也没有意义但是由于表达式副作用会导致i自增因此该表达式语句有用。
练习

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//purpose:读入三位数将其反向,这里提供两次方法
//date:24/06/24
int main1()
{int num;printf("Enter a three-digit number:");scanf("%d", &num);printf("The reversal is:%d%d%d\n", num % 10, num / 10 % 10, num / 10 / 10 % 10);//模10除10的办法return 0;
}
int main1_1()
{int a, b, c;printf("Enter a three-digit number:");scanf("%1d%1d%1d", &a, &b, &c);//我们使用scanf函数时可以指定读入的大小printf("The reversal is:%d%d%d\n", c, b, a);return 0;
}
//purpose:测试优先级结合性
//date:24/06/24
int main2()
{int i, j, k;i = j = k = 1;i += j += k;printf("%d %d %d", i, j, k);return 0;
}
int main3()
{int i, j, k;i = 3; j = 4; k = 5;printf("%d ", i++ - j++ + --k);printf("%d %d %d", i, j, k);return 0;
}

在这里插入图片描述
这道题大家自己思考一下,讲一下逗号表达式,逗号表达式只有最后一个才会起作用也就是b=a++。前面的表达式会执行,没有任何作用的值会丢弃,但由于副作用(自增自减带来的操作数的改变)因此c和a都会改变

这块内容一定要考虑可移植性的问题,尽量写出不会引起歧义的表达式

3.选择语句

除了表达式语句外,C语言的其他语句大多属于以下3大类

  • 选择语句 if语句和switch 语句
  • 循环语句 while语句、do语句和for语句支持重复(循环)操作
  • 跳转语句 break语句、continue语句和goto语句引起无条件地跳转到程序的某个位置。(return语句也属于此类)
    除此之外还有两类语句复合语句和空语句。
    关系运算符,逻辑运算符,判等运算符索长生的结果都是0或1
    switch语句语句中往往因包含break语句这是因为switch语句是一种基于计算的跳转,它会跳转到与表达式匹配的情况标号处也就是0,1,2,3,4,5,6等等情况标号处然后执行完语句之后它会忽略下一种情况标号继续执行下一种情况
    练习(这部分练习将联合循环一起)
#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//purpose:practice
//Date:24/6/13
//编写一个单独的表达式,要求这个表达式的值根据i是否小于、等于或大于j而分别为-1、0或+1
int main1()
{int i, j;for (;;){printf("Enter two number:");int ret=scanf("%d%d", &i, &j);int a = (i > j) - (i < j);printf("%d\n", a);}return 0;
}	

4.循环语句

循环语句包括while语句,do while语句,for语句
其实往往我们可以将for语句和dowhile语句理解为while语句的变种
如for(int i=0;i<n;i++)
可以理解为
int i=0;
while(i<n)
i++;
这里也许会帮助你理解为什么for语句中使用分号而不是,因为这里是单独的语句。
空循环模拟
for(; ;); while(1); 这两条语句模拟了空语句的无限循环
for里面至少包含两个分号
break语句可以用于跳出循环和判断
continue无法跳出循环它是调到循环体结束之前的一点
goto语句可以无限制的进行跳转,但尽量避免使用goto语句随意跳转的程序可能使得程序难以修改
但是面对嵌套的循环的使用break语句仅可以跳出当前循环(跳出一层循环),此时就可以使用goto语句。
练习

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//purpose:编写程序,要求找到用户输入的一串数中的最大数。程序需要提示用户一个一个输入数。当用户输入0或负数时,程序必须显示输入的最大非负数
//date:24/6/13
int main1()
{float num,tmp;printf("Enter a number:");scanf("%f", &num);if (num <= 0)return 1;tmp = num;while (num > 0){printf("Enter a number:");scanf("%f", &num);if (tmp < num)tmp = num;}printf("The largest number entered was %g\n", tmp);return 0;
}
//purpose:编写程序,要求用户输入两个整数,然后计算并显示这两个整数的最大公约数(GCD)
//date:6/13
int main2()
{int m, n,tmp;printf("Enter two integers:");scanf("%d%d", &m, &n);while (n != 0){tmp = m % n;m= n;n = tmp;}printf("Greatest common divisor: %d\n", m);return 0;
}
//purpose:编写程序,要求用户输入一个分数,然后将其约分为最简分式
//date:6/13
int main3()
{int m, n, tmp,a,b;printf("Enter a fraction:");scanf("%d/%d", &m, &n);a = m; b = n;while (n != 0){tmp = m % n;m = n;n = tmp;}printf("In lowest terms:%d/%d", a / m, b / m);return 0;
}
//purpose:编写程序,要求用户输入一个数n,然后显示出1~n的所有偶数平方。
//date:6/13
int main4()
{int n,i;printf("Enter a number:");scanf("%d", &n);for (i = 1; i < n;i++){if (i % 2 == 0)printf("%d\n", i * i);}return 0;
}
//purpose:编写程序,要求显示出单月的日历。用户说明这个月的天数和本月起始日是星期几
//date:6/13
int main()
{int m, d,i,j;printf("Enter number of days in month:");scanf("%d", &m);printf("Enter starting day of the week(1=Sun,7=Sat):");scanf("%d", &d);for (j = 1; j < d; j++){printf("   ");}for (i = 1; i <= m; i++){printf("%2d ", i);if ((i + j - 1) % 7 == 0)printf("\n");//判断是否是一个星期的最后一天,若是则进行换行}return 0;
}
//purpose:测试
//date:6/13
int main6()
{int i, j;for (i = 5, j = i - 1; i > 0, j > 0; --i, j = i - 1)printf("%d ", i);return 0;
}
//purpose:重写下面的循环,从而使其循环体为空for(n = 0;m>0;n++) m/=2;
//date:6/13
int main7()
{int m, n;scanf("%d", &m);for (n = 0; m > 0; n++, m /= 2);return 0;
}

5.基本类型

5.1可移植性和精确

考虑到可移植性技巧
对不超过32767的整形采用int,二队其他的整数采用long int
十进制数
八进制数必须以0开头
十六进制数总是以0x开头后面字母可以大写也可以小写,大小写混用也行
当然这只是一种存储形式不会影响到内存的存储
我们对整数默认为int
如果想指定长整型可以用L,无符号可以用U,也可以同时要求且大小顺序无所谓
%o指明八进制,%x指明十六进制,短整型前面加h,长整型加l
但是存储浮点型若要存储double类型的值请用%lf来存储
往往我们默认浮点数为double类型,若想指定为float类型后面加f,当读写long double时前面加L(不要用小写)

5.2读写字符

读写字符我们往往使用getchar来读取

while(getchar()!='\n');

上述代码是一个空循环体是用来清空缓存区

5.3练习

代码练习:

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//purpose:编写程序可以把字母格式的电话号码翻译成数值格式
//对应关系:2=ABC,3=DEF,4=GHI,5=JKL,6=MNO,7=PRS,8=TUV,9=WXY
//date:24/6/15
int main1()//用scan来写
{int i = 0;char a[100] = { 0 };printf("Enter phone number:");scanf("%s", a);for (i; i < 100; i++){if (a[i] == 'A' || a[i] == 'B' || a[i] == 'C'){a[i] = '2';}else if (a[i] == 'D' || a[i] == 'E' || a[i] == 'F'){a[i] = '3';}else if (a[i] == 'G' || a[i] == 'H' || a[i] == 'I'){a[i] = '4';}else if (a[i] == 'J' || a[i] == 'K' || a[i] == 'L'){a[i] = '5';}else if (a[i] == 'M' || a[i] == 'N' || a[i] == 'O'){a[i] = '6';}else if (a[i] == 'P' || a[i] == 'R' || a[i] == 'S'){a[i] = '7';}else if (a[i] == 'T' || a[i] == 'U' || a[i] == 'V'){a[i] = '8';}else if (a[i] == 'W' || a[i] == 'X' || a[i] == 'Y'){a[i] = '9';}}printf("%s", a);return 0;
}
int main1_2()//用getchar来写
{int i = 0;char ch;char a[100] = { 0 };printf("Enter phone number:");ch=getchar();while (ch != '\n'){if (ch >= 'A' && ch <= 'C')a[i++]=ch = '2';else if (ch >= 'D' && ch <= 'F')a[i++]=ch = '3';else if (ch >= 'G' && ch <= 'I')a[i++] = ch = '4';else if (ch >= 'J' && ch <= 'L')a[i++] = ch = '5';else if (ch >= 'M' && ch <= 'O')a[i++] = ch = '6';else if (ch == 'P' || ch == 'R' || ch == 'S')a[i++] = ch = '7';else if (ch >= 'T' && ch <= 'V')a[i++] = ch = '8';else if (ch >= 'W' && ch <= 'Y')a[i++] = ch = '9';elsea[i++] = ch;ch = getchar();}printf("%s", a);return 0;
}
//purpose:飞机票有冗长的标识数字,例如47115497443.为了有效,最后一位数字必须与以其他为的数字为整体除以7后的余数相匹配。编写程序检查机票号是否有效
//date:24/6/15
int main2()
{printf("Enter ticket number:");char a;long long int b = 0, c;while ((a = getchar() )!= '\n'){a = a - 48;b = b * 10 + a;}c = b % 10;b/= 10;//舍弃末位if (b % 7 == c){printf("VALLD");}elseprintf("INVALLD");return 0;
}
//purpose:使用typedef产生名为Int 8、Int 16和Int 32的类型。定义这些类型以便它们在你的机器上分别表示8位、16位和32位的整数
//date:24/6/15
typedef char Int8;
typedef short Int16;
typedef int Int32;

6.数组

这部分内容基本在我讲的C语言中的数组已经基本涵盖了
练习

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdbool.h>
//purpose:接下来这个程序用来检查书中是否有出现多余一次的数字。用户输入数后,程序显示Repeated digit或No Repeated digit
//若显示Repeated digit则显示重复的数字
//date:24/6/16
int main1()
{_Bool flag=true, digit_seen[10] = {false};//初始化数组//flag用来判断是否出现重复数字int digit,i=0;long  n;int digit_reapted[10] = { 0 };printf("Enter a num:");scanf("%ld", &n);if (n < 0)n *= -1;//另外想说的数组下标不能是负数,导致我们无法做到对负数的情况进行处理。当然这里也非常简单只需要判断所输入的值是否为负数,若是则*(-1)while (n != 0){digit = n % 10;if (digit_seen[digit]){digit_reapted[digit] = digit;//用数组存储重复的数字flag = false;}digit_seen[digit] = true;n /= 10;}if (flag)printf("No Repeated digit");else{printf("Repeated digit(s) :");for (int i = 1; i < 10; i++){if (digit_reapted[i] == i)//防止重复数字多于三次的时候重复打印printf("%d ", i);}}return 0;
}
//purpose:修改程序可以显示出一张列表,表内显示出每种数字在数中出现的次数,并且可以实现多次判断但当用户输入0时,程序终止
//date:24/6/16
int main2()
{const int Digit[10] = { 0,1,2,3,4,5,6,7,8,9 };int Occurrences[10] = { 0 };int digit, a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;long  n;int digit_reapted[10] = { 0 };for (;;){printf("Enter a num:");scanf("%ld", &n);if (n == 0)break;if (n < 0)n *= -1;while (n != 0){digit = n % 10;switch (digit){case 0:Occurrences[digit] = ++a; break;case 1:Occurrences[digit] = ++b; break;case 2:Occurrences[digit] = ++c; break;case 3:Occurrences[digit] = ++d; break;case 4:Occurrences[digit] = ++e; break;case 5:Occurrences[digit] = ++f; break;case 6:Occurrences[digit] = ++g; break;case 7:Occurrences[digit] = ++h; break;case 8:Occurrences[digit] = ++i; break;case 9:Occurrences[digit] = ++j; break;}n /= 10;}printf("Digit:\t\t");for (i = 0; i < 10; i++)printf("%d ", Digit[i]);printf("\n");printf("Occurences:\t");for (i = 0; i < 10; i++)printf("%d ", Occurrences[i]);printf("\n");}return 0;
}
//二维数组练习
//purpose:要成程序可以读取一个5*5的整数数组,然后显示出每行的求和结果和每列的求和结果
//date:24/6/16
#define M 5
#define N 5
int main3()
{int a[M][N] = { 0 },i,j,sum=0;printf("Enter row 1:");for (i = 0; i < N; i++){scanf("%d", &a[0][i]);}printf("Enter row 2:");for (i = 0; i < N; i++){scanf("%d", &a[1][i]);}printf("Enter row 3:");for (i = 0; i < N; i++){scanf("%d", &a[2][i]);}printf("Enter row 4:");for (i = 0; i < N; i++){scanf("%d", &a[3][i]);}printf("Enter row 5:");for (i = 0; i < N; i++){scanf("%d", &a[4][i]);}printf("Row totals:   ");for (i = 0; i < M; i++){for (j = 0; j < N; j++){sum += a[i][j];}printf("%d ", sum);sum = 0;}printf("\n");printf("Column totals:   ");for (i = 0; i < M; i++){for (j = 0; j < N; j++){sum += a[j][i];}printf("%d ", sum);sum = 0;}return 0;
}

7.后面的博客

因为类型转换和函数这块内容比较重要我会另开章节讲解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/35117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ORA-6544[pevm_peruws_callback-1][604] is caused (Doc ID 2638095.1)

ORA-6544[pevm_peruws_callback-1][604] is caused (Doc ID 2638095.1)​编辑To Bottom In this Document Symptoms Cause Solution References Applies to: Oracle Database - Enterprise Edition - Version 12.2.0.1 and later Information in this document applies to an…

C++并发之环形队列(ring,queue)

目录 1 概述2 实现3 测试4 运行 1 概述 最近研究了C11的并发编程的线程/互斥/锁/条件变量&#xff0c;利用互斥/锁/条件变量实现一个支持多线程并发的环形队列&#xff0c;队列大小通过模板参数传递。 环形队列是一个模板类&#xff0c;有两个模块参数&#xff0c;参数1是元素…

[学习笔记] 禹神:一小时快速上手Electron笔记,附代码

课程地址 禹神&#xff1a;一小时快速上手Electron&#xff0c;前端Electron开发教程_哔哩哔哩_bilibili 笔记地址 https://github.com/sui5yue6/my-electron-app 进程通信 桌面软件 跨平台的桌面应用程序 chromium nodejs native api 流程模型 main主进程 .js文件 node…

Verilog HDL语法入门系列(二):Verilog的语言文字规则

目录 1 空白符和注释2 整数常量和实数常量3 整数常量和实数常量4 字符串&#xff08;string)5 格式符与转义符6 标识符(identifiers) 微信公众号获取更多FPGA相关源码&#xff1a; 1 空白符和注释 2 整数常量和实数常量 Verilog中&#xff0c;常量(literals)可是整数也可以是…

照片放大工具Topaz Gigapixel AI for Mac v7.1.2

Topaz Gigapixel AI软件是一款相当高效的PC端图像大小调整工具&#xff0c;更是一款能够为摄影师、设计师以及图像处理爱好者带来革命性体验的强大软件。它凭借先进的深度学习技术&#xff0c;打破了传统图像大小调整的限制&#xff0c;实现了真正意义上的无损放大和图像恢复。…

服务器硬件及RAID配置

目录 一、RAID磁盘阵列 1.概念 2.RAID 0 3.RAID 1 4.RAID 5 5.RAID 6 6.RAID 10 二、阵列卡 1.简介 2.缓存 三、创建 1.创建RAID 0 2.创建RAID 1 3.创建RAID 5 4.创建RAID 10 四、模拟故障 一、RAID磁盘阵列 1.概念 &#xff08;1&#xff09;是Redundant Array …

游戏服务器研究二:大世界的 scale 问题

这是一个非常陈旧的话题了&#xff0c;没什么新鲜的&#xff0c;但本人对 scale 比较感兴趣&#xff0c;所以研究得比较多。 本文不会探讨 MMO 类的网游提升单服承载人数有没有意义&#xff0c;只单纯讨论技术上如何实现。 像 moba、fps、棋牌、体育竞技等 “开房间类型的游戏…

调幅信号AM的原理与matlab实现

平台&#xff1a;matlab r2021b 本文知识内容摘自《软件无线电原理和应用》 调幅就是使载波的振幅随调制信号的变化规律而变化。用音频信号进行调幅时&#xff0c;其数学表达式可以写为: 式中&#xff0c;为调制音频信号&#xff0c;为调制指数&#xff0c;它的范围在(0&…

关于读完《额尔古纳河右岸》后的一些感受

一点废话 我本是一个喜欢读书的人&#xff0c;爱读那些有深意的书籍&#xff0c;而非现在这些《数据结构》、《LINUX 高级编程》、《编译原理》等技术性书籍。读它们时&#xff0c;我的的目的性很强&#xff0c;就是想了解它&#xff0c;思考如何运用到工作中。虽然时常也会因…

Android上编译和使用curl

1 概述 Android系统编译的时候默认是没有带curl工具的&#xff0c;但是在aosp源码中&#xff0c;却是有curl的源码包含。所以只需要编译curl&#xff0c;然后将其push到Android设备中&#xff0c;就可以使用curl命令了。 2 编译curl 这里编译curl是在整机代码环境下进行编译…

Qt添加Dialog对话框

Qt版本&#xff1a;5.12.12 1.添加【模块】 Base class&#xff1a;可以选择QDialog、QWidget、QMainWindow 会自动生成MyDialog.h和MyDialog.cpp文件以及MyDialog.ui文件&#xff0c; 2.添加代码&#xff1a; &#xff08;1&#xff09;TestDialog.h #pragma once#include…

HarmonyOS开发 - 日志打印

在程序开发过程中&#xff0c;日志输出是不可或缺的一部分。能有效的记录和分析日志数据&#xff0c;使开发人员可以更好地了解程序的运行状况、解决问题、优化性能并满足合规性要求等。 当程序出现错误或异常时&#xff0c;日志记录输出可以帮助开发人员快速定位问题发生的位置…

CppInsights: 学习C++模版的神器

CppInsights&#xff1a;深入理解C代码的利器 C是一门强大而复杂的编程语言&#xff0c;其复杂性主要体现在语言的多层次抽象和丰富的语法特性上。尽管这些特性使得C能够高效地处理复杂的任务&#xff0c;但也给开发者带来了理解和调试代码的巨大挑战。CppInsights正是在这一背…

php composer 报错

引用文章&#xff1a; Composer设置国内镜像_composer 国内源-CSDN博客 php composer.phar require --prefer-dist yiidoc/yii2-redactor "*" A connection timeout was encountered. If you intend to run Composer without connecting to the internet, run the …

【Docker】rancher 管理平台搭建

目录 1. 所有节点安装docker 2. 所有节点配置/etc/sysconfig/docker 文件修改如下配置 3. 配置证书 4. 镜像仓库导入镜像 5. 创建镜像仓库 5.1 查询上传的 image id 5.2 镜像打标签 5.3 镜像上推 6. server 节点 7. client 节点 8. 在 server 节点启动 9. 查看运行…

SHELL/作业/2024/6/25

终端输入两个数&#xff0c;判断两数是否相等&#xff0c;如果不相等&#xff0c;判断大小关系 #!/bin/basha$1b$2 if [ $a -eq $b ]then echo "ab"elif [ $a -gt $b ]thenecho "a>b"elseecho "a<b"fi2.已知网址www.hqyj.com…

算法训练营day20--235. 二叉搜索树的最近公共祖先+701.二叉搜索树中的插入操作 +450.删除二叉搜索树中的节点

一、235. 二叉搜索树的最近公共祖先 题目链接&#xff1a;https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/ 文章讲解&#xff1a;https://programmercarl.com/0235.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91…

Linux源码阅读笔记04-实时调度类及SMP和NUMA

Linux进程分类 实时进程普通进程 如果系统中有一个实时进程并且可执行&#xff0c;调度器总是会选择他&#xff0c;除非有另外一个优先级高的实时进程。SCHED_FIFO&#xff1a;没有时间片&#xff0c;被调度器选择之后&#xff0c;可以运行任意长的时间。SCHED_RR&#xff1a;有…

Attention系列总结-粘贴自知乎

1. 梦想做个翟老师&#xff1a;阿里&#xff1a;Behavior Sequence Transformer 解读48 赞同 7 评论文章 优点:捕捉用户行为历史序列中的顺序信息。w2v也是捕捉用户序列信息的,本质差异在于啥&#xff1f; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff0…

昇思25天学习打卡营第2天|onereal》

今天学习内容是了解华为昇思平台。虽然打了卡&#xff0c;但是我的jupyter里面并没有播放按钮&#xff0c;所以还是无法运行代码。反映给昇思吴彦祖小哥了&#xff0c;他说需要专家帮我解决。 我还是要自我表扬一下&#xff0c;不懂就问&#xff0c;切莫不懂装懂&#xff0c;那…