c语言学习-初始c

一,基本概述
1,基本格式
#include<stdio.h>
int main(){
	printf("hello\n");
	printf("first project");
	printf("%d\n", 100);
	printf("%d\n", sizeof(char));
	printf("%d\n", sizeof(short));
	printf("%d\n", sizeof(int));
	printf("%d\n", sizeof(long));
	printf("%d\n", sizeof(long long));
	printf("%d\n", sizeof(float));
	printf("%d\n", sizeof(double));
	return 0;
}

输出结果·:hello
first project100
1
2
4
4
8
4
8
 

计算机最基本单位为bit ,一个bit等于一个二进制位,一个字节等于8个bit,而上面的基本数据类型以字节为单位,short的大小为一个字节,也就是8个bit。

2,生命周期 

 局部变量的生命周期就是创建到销毁

全局变量的生命周期就是程序一致

常量有四种,const修饰的常量本质上是变量

二,操作符易忘点
1,运算操作符

/ 两数相除如果不要取整的话直接在一方加个小数点

% 两数取模必须都是整数 

2,移位操作符

 <<  >>

 

3,位操作符 

 

 

tips:

a ^a=0

a ^ 0=a

计算一个数的二进制中有几个1?

任何类型的地址指针都是有大小的32位·4个字节 64 8个

4,整形提升 

补码减一为反码,再取反为原码

三,指针
1,指针变量

 

在不同类型地址值+1去下一个元素时,不同类型跨越的字节不同,要谨慎选择,char跨一个字节去下一个元素,int跨越4个字节。

2,野指针出现的原因: 

1,指针未初始化

2,越界访问

3,指针指向的空闲释放

 

3,指针运算 

在同一块空间下,指针减指针得出中间的元素个数

4,指针数组

指针数组是一个特殊的二维数组。

四,数组

五,数据存储

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASO-BP(Adaptive Self-Organizing Backpropagation)是一种自适应自组织反向传播神经网络算法,它将自组织特性和反向传播算法结合起来,可以有效地解决神经网络训练中的局部最小值问题。下面是一个用C语言实现ASO-BP的示例: ```c #include <stdio.h> #include <stdlib.h> #include <math.h> #define INPUT_NUM 2 // 输入层神经元个数 #define HIDDEN_NUM 2 // 隐藏层神经元个数 #define OUTPUT_NUM 1 // 输出层神经元个数 #define LEARN_RATE 0.5 // 学习率 double sigmoid(double x) { return 1.0 / (1.0 + exp(-x)); } double dsigmoid(double y) { return y * (1.0 - y); } int main() { double input[INPUT_NUM] = {0.05, 0.10}; // 输入层输入 double target[OUTPUT_NUM] = {0.01}; // 目标输出 double w1[INPUT_NUM][HIDDEN_NUM] = {{0.15, 0.20}, {0.25, 0.30}}; // 输入层到隐藏层权重 double w2[HIDDEN_NUM][OUTPUT_NUM] = {{0.40}, {0.45}}; // 隐藏层到输出层权重 double b1[HIDDEN_NUM] = {0.35, 0.35}; // 隐藏层偏置 double b2[OUTPUT_NUM] = {0.60}; // 输出层偏置 double a1[HIDDEN_NUM]; // 隐藏层激活值 double y; // 输出层输出 double error; // 输出误差 double delta2[OUTPUT_NUM]; // 输出层误差项 double delta1[HIDDEN_NUM]; // 隐藏层误差项 double dw1[INPUT_NUM][HIDDEN_NUM]; // 输入层到隐藏层权重更新量 double dw2[HIDDEN_NUM][OUTPUT_NUM]; // 隐藏层到输出层权重更新量 double db1[HIDDEN_NUM]; // 隐藏层偏置更新量 double db2[OUTPUT_NUM]; // 输出层偏置更新量 int i, j, k; int epoch = 10000; // 迭代次数 for (k = 0; k < epoch; k++) { // 前向传播 for (j = 0; j < HIDDEN_NUM; j++) { a1[j] = 0.0; for (i = 0; i < INPUT_NUM; i++) { a1[j] += input[i] * w1[i][j]; } a1[j] += b1[j]; a1[j] = sigmoid(a1[j]); } y = 0.0; for (j = 0; j < HIDDEN_NUM; j++) { y += a1[j] * w2[j][0]; } y += b2[0]; y = sigmoid(y); // 反向传播 error = target[0] - y; delta2[0] = error * dsigmoid(y); for (j = 0; j < HIDDEN_NUM; j++) { delta1[j] = 0.0; for (i = 0; i < OUTPUT_NUM; i++) { delta1[j] += delta2[i] * w2[j][i]; } delta1[j] *= dsigmoid(a1[j]); } for (j = 0; j < HIDDEN_NUM; j++) { for (i = 0; i < INPUT_NUM; i++) { dw1[i][j] = LEARN_RATE * input[i] * delta1[j]; w1[i][j] += dw1[i][j]; } db1[j] = LEARN_RATE * delta1[j]; b1[j] += db1[j]; } for (j = 0; j < HIDDEN_NUM; j++) { for (i = 0; i < OUTPUT_NUM; i++) { dw2[j][i] = LEARN_RATE * a1[j] * delta2[i]; w2[j][i] += dw2[j][i]; } db2[j] = LEARN_RATE * delta2[j]; b2[j] += db2[j]; } } // 测试 for (j = 0; j < HIDDEN_NUM; j++) { a1[j] = 0.0; for (i = 0; i < INPUT_NUM; i++) { a1[j] += input[i] * w1[i][j]; } a1[j] += b1[j]; a1[j] = sigmoid(a1[j]); } y = 0.0; for (j = 0; j < HIDDEN_NUM; j++) { y += a1[j] * w2[j][0]; } y += b2[0]; y = sigmoid(y); printf("Result: %f\n", y); return 0; } ``` 这个示例实现了一个简单的 ASO-BP 神经网络,并使用 XOR 问题进行了测试。在训练过程中使用了随机初始化权重和偏置,并使用反向传播算法调整它们,最终得到了一个可以正确预测 XOR 问题的神经网络。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值