周报

学习内容

1IP地址

基本概念:IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据报传输服务。

2广域网

广域网(英语:Wide Area Network,缩写为 WAN),又称广域网、外网、公网。是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网并不等同于互联网。
在一个区域范围里超过集线器所连接的距离时,必须要通过路由器来连接,这种网上类型称为广域网。如果有北、中、南等分公司,甚至海外分公司,把这些分公司以专线方式连接起来,即称为“广域网”。
广域网的发送介质主要是利用电话线或光纤,由ISP业者将企业间做连线,这些线是ISP业者预先埋在马路下的线路,因为工程浩大,维修不易,而且带宽是可以被保证的,所以在成本上就会比较为昂贵。
一般所指的互联网是属于一种公共型的广域网,公共型的广域网的成本会较低,为一种较便宜的网上环境,但跟广域网比较来说,是没办法管理带宽,走公共型网上系统,任何一段的带宽都无法被保证。

局域网

局域网(Local Area Network(LAN))是一个可连接住宅,学校,实验室,大学校园或办公大楼等有限区域内计算机的计算机网络。相比之下,广域网(WAN)不仅覆盖较大的地理距离,而且还通常涉及固接专线和对于互联网的链接。 相比来说互联网则更为广阔,是连接全球商业和个人计算机的系统。
这些只是了解,说实话,不知道该从什么地方系统学起,有点迷茫,还好最近主要学C语言。

C语言指针

1数组与指针的

数组的数组名其实可以看作一个指针。看下例:例九:int array[10]={0,1,2,3,4,5,6,7,8,9},value; value=array[0]; //也可写成:value=array; value=array[3]; //也可写成:value=(array+3); value=array[4]; //也可写成:value=(array+4);上例中,一般而言数组名array 代表数组本身,类型是int[10],但如果把array 看做指针的话,它指向数组的第0 个单元,类型是int 所指向的类型是数组单元的类型即int。因此array 等于0 就一点也不奇怪了。同理,array+3 是一个指向数组第3 个单元的指针,所以(array+3)等于3。其它依此类推。

2结构体与指针

可以声明一个指向结构类型对象的指针。例十二: struct MyStruct { int a; int b; int c; }; struct MyStruct ss={20,30,40}; //声明了结构对象ss,并把ss 的成员初始化为20,30 和40。 struct MyStruct *ptr=&ss; //声明了一个指向结构对象ss 的指针。它的类型是 //MyStruct *,它指向的类型是MyStruct。 int pstr=(int)&ss; //声明了一个指向结构对象ss 的指针。但是pstr 和 //它被指向的类型ptr 是不同的。 请问怎样通过指针ptr 来访问ss 的三个成员变量?答案:ptr->a; //指向运算符,或者可以这们(ptr).a,建议使用前者ptr->b;ptr->c;又请问怎样通过指针pstr 来访问ss 的三个成员变量?答案:pstr; //访问了ss 的成员a。(pstr+1); //访问了ss 的成员b。(pstr+2) //访问了ss 的成员c。虽然我在我的MSVC++6.0 上调式过上述代码,但是要知道,这样使用pstr 来访问结构成员是不正规的,为了说明为什么不正规,让我们看看怎样通过指针来访问数组的各个单元: (将结构体换成数组)

3函数与指针

可以把一个指针声明成为一个指向函数的指针。int fun1(char *,int);int (*pfun1)(char *,int);pfun1=fun1;int a=(*pfun1)(“abcdefg”,7); //通过函数指针调用函数。可以把指针作为函数的形参。在函数调用语句中,可以用指针表达式来作为实参。例十四: int fun(char *); inta; char str[]=“abcdefghijklmn”; a=fun(str); int fun(char *s) { int num=0; for(int i=0;😉 { num+=*s;s++; } return num; } 这个例子中的函数fun 统计一个字符串中各个字符的ASCII 码值之和。前面说了,数组的名字也是一个指针。在函数调用中,当把str作为实参传递给形参s 后,实际是把str 的值传递给了s,s 所指向的地址就和str 所指向的地址一致,但是str 和s 各自占用各自的存储空间。在函数体内对s 进行自加1 运算,并不意味着同时对str 进行了自加1 运算。

C语言结构体

这周课堂细讲结构体,完善了许多自己以前自学的漏洞,独立完成了结构体有关的问题,学生成绩。

#include<stdio.h>
struct student
{
 char name[10];
 char num[8];
 char sex[6];
 float grades[5];
}ads[30],t;
float average(float asd[])
{
 float sum=0.0;
 for(int i=0;i<4;i++)
 {
  sum+=asd[i];
 }
 return (sum/4);
}
main()
{
 for(int i=0;i<30;i++)
 {
  scanf("%s",ads[i].num);
  scanf("%s",ads[i].name );
  scanf("%s",ads[i].sex );
  for(int j=0;j<4;j++)
  {
   scanf("%f",&ads[i].grades[j] );
  }
  ads[i].grades[4]=average(ads[i].grades);
 }
 for(int i=0;i<30;i++)
  {
   for(int j=0;j<30-i-1;j++)
   {
    if(ads[j].grades[4] <ads[j+1].grades[4])
    {
   
       t=ads[j];
       ads[j]=ads[j+1];
       ads[j+1]=t;
       }
  }
  }
    for(int i=0;i<30;i++)
    {
     printf("%s  ",ads[i].num);
     printf("%s  ",ads[i].name);
     printf("%s\n",ads[i].sex);
     for(int j=0;j<5;j++)
     printf("%f\n",ads[i].grades[j]);
 }
}

c语言习题

写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过100个字符),然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出样例来安排你的输出格式。

输入格式

四行字符,由大写字母组成,每行不超过100个字符

输出格式

由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的。在任何一行末尾不要打印不需要的多余空格。不要打印任何空行。

输入输出样例

输入 #1 复制
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
输出 #1 复制
*
*
* *
* * * *
* * * *






A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
说明/提示

每行输出后面不允许出现多余的空格。

#include<stdio.h>
#include<string.h>
int main()
{
    char a[100];
    int b[26]={0};
    int i,j,t;
    for(i=0;i<4;i++)
    {
        gets(a);
        for(j=0;j<strlen(a);j++)
        {
            if(a[j]>='A'&&a[j]<='Z')
            {
                t=a[j]-'A';  
                b[t]++;     \\计数:每个大写字母出现的次数
            }
        }
    }
    t=b[0];
    for(i=1;i<26;i++)
    {
        if(t<b[i])
        {
            t=b[i];   \\找到最大值
        }
    }
    for(i=t;i>=1;i--)
    {
        for(j=0;j<26;j++)
        {
            if(b[j]>=i)
            {
                printf("* ");
            }
            else
            printf("  ");
        }
        printf("\n");
    }
    for(i=0;i<26;i++)
    printf("%c ",'A'+i);
    printf("\n");
}

这个题关键在于理解输出行好事的情况。理解方法很多,但是基本的思路都差不多,即从最高输出*。
某蒟蒻迷上了“小书童”,有一天登陆时忘记密码了(他没绑定邮箱or手机),于是便把问题抛给了神犇你。

题目描述

蒟蒻虽然忘记密码,但他还记得密码是由一个字符串组成。密码是由原文字符串(由不超过 50 个小写字母组成)中每个字母向后移动 nn 位形成的。z 的下一个字母是 a,如此循环。他现在找到了移动前的原文字符串及 nn,请你求出密码。

输入格式

第一行:n。第二行:未移动前的一串字母

输出格式

一行,是此蒟蒻的密码

输入输出样例

输入 #1 复制
1
qwe
输出 #1 复制
rxf
说明/提示

字符串长度<=50

#include<stdio.h>
#include<string.h>
int main()
{
    char a[50];
    int i,n,t;
    scanf("%d",&n);
    scanf("%s",a);
    for(i=0;i<strlen(a);i++)
    {
       printf("%c",(a[i]-'a'+n)%26+'a');
    }
}

我们要求找出具有下列性质数的个数(包含输入的自然数nnn):
先输入一个自然数nnn(n≤1000n \le 1000n≤1000),然后对此自然数按照如下方法进行处理:

不作任何处理;

在它的左边加上一个自然数,但该自然数不能超过原数的一半;

加上数后,继续按此规则进行处理,直到不能再加自然数为止.

输入格式 111个自然数nnn(n≤1000n \le 1000n≤1000)
输出格式 111个整数,表示具有该性质数的个数。
输入输出样例 输入 #1
复制
6
输出 #1
复制
6
说明/提示 满足条件的数为
6,16,26,126,36,136

#include<cstdio>
int n,cnt=1;
void func(int x)
{
    for(int i=1;i<=x/2;i++)
    {
        cnt++;
        func(i);
    }
}
int main()
{
    scanf("%d",&n);
    func(n);
    printf("%d\n",cnt);
}

这段代码没啥说的,暴力递归,但是问题就是如果n过大,运行就会超时,递归嵌套太多。所以我查找资料,学习一种新的方式。

#include<stdio.h>
int main()
{
    int n,i,f[1010];
    f[0]=f[1]=1;
    scanf("%d",&n);
    for(i=2;i<=n;i++)
    {
        if(i%2==0)
        {
            f[i]=f[i-1]+f[i/2];
        }
        else
        {
            f[i]=f[i-1];
        }
    }
    printf("%d\n",f[n]);
}

2n与2n+1(n为非负整数)的答案是一样的
这就是第一个规律
然后我们以n=8为例,手动模拟一下
一共有10组解
8
1 8 2 8 3 8 4 8
1 2 8 1 3 8 1 4 8 2 4 8
1 2 4 8
我打出的东西很像一棵搜索树。。。
当我们把8和8下面的左三棵子树放在一起(即8和下面三列),并将所有的8都改成7,我们能发现,我们得到了n=7时的所有解;
我们再把最右端的子树(即剩下的部分)中的所有8删去,我们得到了n=4时的所有解
就这样,我们可以得到一个递推式,
f(n)=f(n-1) //7=8-1

    +f(n/2)                //4=8/2

再结合之前发现的规律
就能得到:
n%20时
f(n)=f(n-1)+f(n/2)
n%2
1时
f(n)=f(n-1)

代码转载自:https://pan.quark.cn/s/a4b39357ea24 本文重点阐述了利用 LabVIEW 软件构建的锁相放大器的设计方案及其具体实施流程,探讨了该设备在声波相位差定位系统中的实际运用情况。 锁相放大器作为一项基础测量技术,其核心功能在于能够精确锁定微弱信号的频率参数完成相关测量工作。 在采用 LabVIEW 软件开发的锁相放大器系统中,通过计算测量信号与两条参考信号之间的互相关函数,实现对微弱信号的频率锁定,同时输出被测信号的幅值信息。 虚拟仪器技术是一种基于计算机硬件平台的仪器系统,其显著特征在于用户可以根据实际需求自主设计仪器功能,配备虚拟化操作界面,将测试功能完全由专用软件程序实现。 虚拟仪器系统的基本架构主要由计算机主机、专用软件程序以及硬件接口模块等核心部件构成。 虚拟仪器最突出的优势在于其功能完全取决于软件编程,用户可以根据具体应用场景灵活调整系统功能参数。 在基于 LabVIEW 软件开发的锁相放大器系统中,主要运用 LabVIEW 软件平台完成锁相放大器功能的整体设计。 LabVIEW 作为一个图形化编程环境,能够高效地完成虚拟仪器的开发工作。 借助 LabVIEW 软件,可以快速构建锁相放大器的用户操作界面,且可以根据实际需求进行灵活调整功能扩展。 锁相放大器系统的关键构成要素包括测量信号输入通道、参考信号输入通道、频率锁定处理单元以及信号幅值输出单元。 测量信号是系统需要检测的对象,参考信号则用于引导系统完成对测量信号的频率锁定。 频率锁定处理单元负责实现测量信号的锁定功能,信号幅值输出单元则负责输出被测信号的幅值大小。 在锁相放大器的实际实现过程中,系统采用了双路参考信号输入方案来锁定测量信号。 通过分析两路参考信号之间的相...
边缘计算环境中基于启发式算法的深度神经网络卸载策略(Matlab代码实现)内容概要:本文介绍了在边缘计算环境中,利用启发式算法实现深度神经网络任务卸载的策略,提供了相应的Matlab代码实现。文章重点探讨了如何通过合理的任务划分与调度,将深度神经网络的计算任务高效地卸载到边缘服务器,从而降低终端设备的计算负担、减少延迟提高整体系统效率。文中涵盖了问题建模、启发式算法设计(如贪心策略、遗传算法、粒子群优化等可能的候选方法)、性能评估指标(如能耗、延迟、资源利用率)以及仿真实验结果分析等内容,旨在为边缘智能计算中的模型推理优化提供可行的技术路径。; 适合人群:具备一定编程基础,熟悉Matlab工具,从事边缘计算、人工智能、物联网或智能系统优化方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究深度神经网络在资源受限设备上的部署与优化;②探索边缘计算环境下的任务卸载机制与算法设计;③通过Matlab仿真验证不同启发式算法在实际场景中的性能表现,优化系统延迟与能耗。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注算法实现细节与仿真参数设置,同时可尝试复现对比不同启发式算法的效果,以深入理解边缘计算中DNN卸载的核心挑战与解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值