精华内容
下载资源
问答
  • pta段错误
    2021-04-30 20:02:07

    段错误

    您的程序发生段错误,可能是数组越界堆栈溢出(比如,递归调用层数太多)等情况引起

    更多相关内容
  • 服务器连接不成功或者是连接出现错误的话,服务器能不能出现故障等问题,在进行服务器连接的同时,做好相关防御。 二、宽带被占用,宽带占用资源,一般是ddos攻击中最重要的一个手段。毕竟对于中小型企业来讲,能够...

    88a5a7233113bab0df7e41ebeb5f3853.png

    服务器被D了怎么办?现在随着互联网的发展,网络攻击也是越来越频繁,其中服务器遭到DDoS攻击就是常见的一种网络攻击方式。现在很多服务器被DDoS攻击的时候,都不会轻易发现,最后直接导致网站不能正常运行。为了防止服务器被恶意攻击给网站带来一些不好的影响,站长可以在平时多查看一下服务器是否被DDoS攻击了。那么站长们和企业用户要怎样查看服务器是否被DDoS攻击了呢?鼎峰华妹建议大家可以从以下几点查看:
      一、连接不到服务器,一旦网站被ddos攻击之时,是会造成电脑死机或者是蓝屏的。这就代表着你使用的电脑服务器连接不成功。服务器连接不成功或者是连接出现错误的话,服务器能不能出现故障等问题,在进行服务器连接的同时,做好相关防御。
      二、宽带被占用,宽带占用资源,一般是ddos攻击中最重要的一个手段。毕竟对于中小型企业来讲,能够享受到的宽带资源还是很有限的。Ddos攻击之后,宽带资源被占据,正常的流量很难满足服务器运行需求。如果你的服务器宽带占用比率为百分之九十的话,很有可能是遭受到ddos攻击了。
      三、内存被大量占用,如何查看服务器是否被ddos攻击,这一点是最重要的。Ddos攻击本身就是在恶意导致资源被占用。攻击者们利用攻击软件,针对服务器发送大量的垃圾请求。最后导致服务器被大量的所占用。因为正常网站进程,不能得到有效的处理,而且还会出现缓慢打开情况。就会出现服务器内存被大量的占据。
    服务器被打死怎么办?如果服务器被打死的话,当访问量超出的时候,可以禁止再访问。但是这样会影响业务情况。最好是使用高防服务器,在不影响业务的情况下,还可以抵御攻击。
    服务器攻击一般看情况而定,一般的攻击都是直接攻击域名。小量的攻击可以通过 nginx和iptables 本身的防御功能。大量的攻击由于直接把网络带宽占满了,服务器无法正常相应,只能依靠机房的高防系统。
    如果攻击源是单一IP或者几个IP,那么就让机房把这几个IP给屏蔽就可以了。遇到cc或者ddos攻击,只能靠机房解决。一台服务器被打死后,需要立刻把域名指向另一台服务器(或者直接把域名指向百度)。
    预防ddos攻击的措施
    首先,用户要去尝试了解攻击来自于何处,原因是黑客在攻击时所调用的IP地址并不一定是真实的,一旦掌握了真实的地址段,可以找到相应的码段进行隔离,或者临时过滤。同时,如果连接核心网的端口数量有限,也可以将端口进行屏蔽。
    相较被攻击之后的疲于应对,有完善的安全机制无疑要更好。有些人可能会选择大规模部署网络基础设施,但这种办法只能拖延黑客的攻击进度,并不能解决问题。与之相比的话,还不如去“屏蔽”那些区域性或者说临时性的地址段,减少受攻击的风险面。
    此外,还可以在骨干网、核心网的节点设置防护墙,这样在遇到大规模攻击时,可以让主机减少被直接攻击的可能。考虑到核心节点的带宽通常较高,容易成为黑客重点攻击的位置,所以定期扫描现有的主节点,发现可能导致风险的漏洞,就变得非常重要。
    一定要有灾备预案,就是服务器一旦出现重大问题,就是解决不了了,启用备用方案,尽快让网站可用。平时多做预案演习,还要多做数据备份的还原操作。
    当服务器被攻击后我们该怎么办呢?具体方法如下:
    一、断开所有网络连接。
    服务器之所以被攻击是因为连接在网络上,因此在确认系统遭受攻击后,第一步一定要断开网络连接,即断开攻击。
    二、根据日志查找攻击者。
    根据系统日志进行分析,查看所有可疑的信息进行排查,寻找出攻击者。
    三、根据日志分析系统漏洞。
    根据系统日志进行分析,查看攻击者是通过什么方式入侵到服务器的,通过分析找出系统所存在的漏洞。
    四、备份系统数据。
    在备份系统数据时,一定要注意所备份数据是否夹杂攻击源,若存在,一定及时删除。
    五、重装系统。
    在被攻击后一定要重装系统,因为我们根本不能完全确认攻击者通过哪些攻击方式进行攻击,因此只要重装系统后才能彻底清除掉攻击源。
    六、导入安全的数据。
    在重装系统后,把安全的数据信息导入系统中,并检查系统中是否存在别的漏洞或安全隐患,若存在及时进行修复。
    七、恢复网络连接。
    在一切都正常后,把系统连接到网络上,恢复服务。

    展开全文
  • PTA常见错误

    千次阅读 2021-05-20 02:27:51
    否则,就算你运行结果是对的,PTA还是提示你格式错误格式错误1:输出没有完全按照题目要求输出。7-1 计算摄氏温度本题要求编写程序,计算华氏温度100°F对应的摄氏温度。计算公式:C=5×(F−32)/9,式中:C表示摄氏...

    1.最常犯的错误:格式错误。

    在PTA程序检测中,输入输出要严格按照题目要求。输出的格式要完全按照题目要求来,该空格地方空格,该换行要换行。否则,就算你运行结果是对的,PTA还是提示你格式错误

    格式错误1:输出没有完全按照题目要求输出。

    7-1 计算摄氏温度

    本题要求编写程序,计算华氏温度100°F对应的摄氏温度。计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。

    要求:按照下列格式输出

    fahr = 100, celsius = 计算所得摄氏温度的整数值

    你输入的代码如下

    #include int main()

    {

    int fahr,celsius;

    fahr=100;

    celsius=5*(fahr-32)/9;

    printf("fahr =100, celsius = %d",celsius);

    return 0;

    }

    代码并没有错误,但是运行结果却是格式错误,错误在于你的printf语句没有按照题目的输出格式来输出。fahr = 100这里的100和=应该要有一个空格隔开。

    避免犯格式错误,最好办法就是把题目的输出复制到代码中

    格式错误2:输出的头尾多了空格或者换行符

    如果输出内容有多行时候,通过循环结构实现输出很容易会多一个换行符。比如

    for(i=1;i<=5;i++) printf("hello\n");

    上面代码运行没任何问题,输出了5行hello,但是最后一个hello还会多了一个\n,就是会换行。 但是多的这个换行符就会和题目要求输出不匹配,一般PTA题目输出多行内容,最后一行都没有换行符,所以这段代码提交还是会犯格式错误问题。怎么解决呢?

    1.最后一项单独判断

    for(i=1;i<=5;i++)

    {

    if(i==5) printf("hello");

    else printf("hello\n");

    }

    2.最后一项不好确定,引入flag

    int flag=1;

    for(i=1;i<=5;i++)

    {

    if(flag) {printf("hello");flag=0;}

    else printf("\nhello");

    }

    上述代码输出的5行hello,就可以去掉尾部换行符。还有尾部多空格符,一样处理。你也可以根据题目具体输出要求修改你的程序。

    2.答案错误或部分正确

    你的程序输出结果错误。每个PTA程序都会设置几组测试数据,如果你的得分没有满分,那就是有些测试数据结果错误,导致没法满分。说明你的程序考虑不够完善,有些临界条件或者功能没实现,导致部分正确。所以你必须继续调试程序,找出不完善地方。

    3.运行超时

    未在规定时间运行结束,可能你的程序死循环。

    循环次数过多,超过时间限制。本该单层循环结束,却用双层循环解决,也会这样问题。

    4.段错误

    这个错误一般在程序使用数组这种结构才会出现错误,如果定义数组长度太小,没有达到题目要求最大值的情况。

    比如这个题目:

    5bbc093242314a308f5c1b96ade0ee6b.jpg

    这里有提到字符串长度不超过10000,这个时候你定义数组就要超过这个值,否则引起段错误或答案错误。比如你可以定义char str[10010];

    scanf没有加&

    野指针。指针没有指向。如

    int *p;

    printf("%d", *p1);

    5.编译错误

    这种错误一般是程序中有语法错误,比如少了分号之类。

    常见错误总结如下图所示:

    510599aa6457f36d8599ae4f3ec19269.png

    展开全文
  • PTA——段错误

    万次阅读 多人点赞 2018-11-24 18:12:39
    PTA上做题,做出来个段错误,一查吓一跳,发篇博客冷静下。(#^.^#) 1076 Wifi密码 (15 分) 下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi ...

    在PTA上做题,做出来个段错误,一查吓一跳,发篇博客冷静下。(#^.^#)

    1076 Wifi密码 (15 分)

    下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答,每两日一换。谢谢合作!!~”—— 老师们为了促进学生学习也是拼了…… 本题就要求你写程序把一系列题目的答案按照卷子上给出的对应关系翻译成 wifi 的密码。这里简单假设每道选择题都有 4 个选项,有且只有 1 个正确答案。

    //我的代码
    #include <stdio.h>
    #define MAX 101
    #define SIZE 5
    int main()
    {
    	int N = 0;
    	char str[MAX][SIZE];
    	scanf("%d", &N);
    	if (N > 100 || N < 0)
    		return 0;
    	for (int i = 0; i < 4 * N; i++)
    	{
    		scanf("%s", str[i]);
    		if (str[i][2] == 'T')
    		{
    			if (str[i][0] == 'A')
    				putchar('1');
    			else if (str[i][0] == 'B')
    				putchar('2');
    			else if (str[i][0] == 'C')
    				putchar('3');
    			else if (str[i][0] == 'D')
    				putchar('4');
    		}
    	}
    	return 0;
    }

    • 修改后的正确代码:将MAX扩大为原来的5倍,段错误是由于N最大可取到100,而MAX没有满足MAX=4*N的条件所导致 
    #include <stdio.h>
    #define MAX 501
    #define SIZE 5
    int main()
    {
    	int N = 0;
    	char str[MAX][SIZE];
    	scanf("%d", &N);
    	if (N > 100 || N < 0)
    		return 0;
    	for (int i = 0; i < 4 * N; i++)
    	{
    		scanf("%s", str[i]);
    		if (str[i][2] == 'T')
    		{
    			if (str[i][0] == 'A')
    				putchar('1');
    			else if (str[i][0] == 'B')
    				putchar('2');
    			else if (str[i][0] == 'C')
    				putchar('3');
    			else if (str[i][0] == 'D')
    				putchar('4');
    		}
    	}
    	return 0;
    }

     

    一、什么是段错误?

    一旦一个程序发生了越界访问,cpu 就会产生相应的保护,于是 segmentation fault 就出现了,通过上面的解释,段错误应该就是访问了不可访问的内存,这个内存区要么是不存在的,要么是受到系统保护的,还有可能是缺少文件或者文件损坏。

    二、段错误产生的原因

    • 下面是一些典型的段错误的原因:
    1. 非关联化空指针——这是特殊情况由内存管理硬件
    2. 试图访问一个不存在的内存地址(在进程的地址空间)
    3. 试图访问内存的程序没有权利(如内核结构流程上下文)
    4. 试图写入只读存储器(如代码段)

    1、访问不存在的内存地址

    在C代码,分割错误通常发生由于指针的错误使用,特别是在C动态内存分配。非关联化一个空指针总是导致段错误,但野指针和悬空指针指向的内存,可能会或可能不会存在,而且可能或不可能是可读的还是可写的,因此会导致瞬态错误。

    #include <stdio.h>  
      
    int main (void)  
    {  
        int *ptr = NULL;  
        *ptr = 0;  
        return 0;  
    } 

    现在,非关联化这些变量可能导致段错误:非关联化空指针通常会导致段错误,阅读时从野指针可能导致随机数据但没有段错误,和阅读从悬空指针可能导致有效数据,然后随机数据覆盖。

    2、访问系统保护的内存地址 

    #include <stdio.h>  
      
    int main (void)  
    {  
        int *ptr = (int *)0;  
        *ptr = 100;  
        return 0;  
    } 

    3、访问只读的内存地址

    写入只读存储器提出了一个 segmentation fault,这个发生在程序写入自己的一部分代码段或者是只读的数据段,这些都是由操作系统加载到只读存储器。

    #include <stdio.h>  
    #include <string.h>  
      
    int main (void)  
    {  
        char *ptr = "test";  
        strcpy (ptr, "TEST");  
        return 0;  
    }  
    
    #include <stdio.h>  
      
    int main (void)  
    {  
        char *ptr = "hello";  
        *ptr = 'H';  
        return 0;  
    }  
    输出结果:  
    段错误(核心已转储)  

    上述例子ANSI C代码通常会导致段错误和内存保护平台。它试图修改一个字符串文字,这是根据ANSI C标准未定义的行为。大多数编译器在编译时不会抓,而是编译这个可执行代码,将崩溃。

    包含这个代码被编译程序时,字符串“hello”位于rodata部分程序的可执行文件的只读部分数据段。当加载时,操作系统与其他字符串和地方常数只读段的内存中的数据。当执行时,一个变量 ptr 设置为指向字符串的位置,并试图编写一个H字符通过变量进入内存,导致段错误。编译程序的编译器不检查作业的只读的位置在编译时,和运行类unix操作系统产生以下运行时发生 segmentation fault。

    可以纠正这个代码使用一个数组而不是一个字符指针,这个栈上分配内存并初始化字符串的值:

    #include <stdio.h>  
      
    int main (void)  
    {  
        char ptr[] = "hello";  
        ptr[0] = 'H';  
        return 0;  
    }  

    即使不能修改字符串(相反,这在C标准未定义行为),在C char *类型,所以没有隐式转换原始代码,在c++的 const char *类型,因此有一个隐式转换,所以编译器通常会抓住这个特定的错误。

    4、空指针废弃

    因为是一个很常见的程序错误空指针废弃(读或写在一个空指针,用于C的意思是“没有对象指针”作为一个错误指示器),大多数操作系统内存访问空指针的地址,这样它会导致段错误。

    #include <stdio.h>  
      
    int main (void)  
    {  
        int *ptr = NULL;  
        printf ("%d\n", *ptr);  
        return 0;  
    } 

    这个示例代码创建了一个空指针,然后试图访问它的值(读值)。在运行时在许多操作系统中,这样做会导致段错误。

    非关联化一个空指针,然后分配(写一个值到一个不存在的目标)也通常会导致段错误。

    #include <stdio.h>  
      
    int main (void)  
    {  
        int *ptr = NULL;  
        *ptr = 1;  
        return 0;  
    }  

    下面的代码包含一个空指针,但当编译通常不会导致段错误,值是未使用的。因此,废弃通常会被优化掉,死代码消除。

    #include <stdio.h>  
      
    int main (void)  
    {  
        int *ptr = NULL;  
        *ptr;  
        return 0;  
    }  
    

    还有,比如malloc 动态分配内存,释放、置空完成后,不可再使用该指针。

    #include <stdio.h>  
    #include <stdlib.h>  
    #include <string.h>  
      
    int main()  
    {  
        char* str=(char* )malloc(100);  
        if(*str)  
        {  
            return;   
        }  
        strcpy(str,"hello");  
        printf("%s\n",str);  
        free(str);  
        str=NULL;  
        strcpy(str,"abcdef");  
        return 0;  
    }  
    输出结果:  
    hello  
    段错误 (核心已转储)

    5、堆栈溢出

    #include <stdio.h>  
    #include <string.h>  
      
    int main (void)  
    {  
        main ();  
        return 0;  
    }  
    输出结果:  
    段错误(核心已转储)  

    上述例子的无限递归,导致的堆栈溢出会导致段错误,但无线递归未必导致堆栈溢出,优化执行的编译器和代码的确切结构。在这种情况下,遥不可及的代码(返回语句)行为是未定义的。因此,编译器可以消除它,使用尾部调用优化,可能导致没有堆栈使用。其他优化可能包括将递归转换成迭代,给出例子的结构功能永远会导致程序运行,虽然可能不是其他堆栈溢出。

    6、内存越界(数组越界,变量类型不一致等)

    #include <stdio.h>  
      
    int main (void)  
    {  
        char test[10];  
        printf ("%c\n", test[100000]);  
        return 0;  
    }  
    输出结果:  
    段错误(核心已转储)  
    

    三、一些注意事项

    1. 出现段错误时,首先应该想到段错误的定义,从它出发考虑引发错误的原因。
    2. 在使用指针时,定义了指针后记得初始化指针,在使用的时候记得判断是否为 NULL
    3. 在使用数组时,注意数组是否被初始化,数组下标是否越界,数组元素是否存在等
    4. 在访问变量,注意变量所占地址空间是否已经被程序释放掉
    5. 在处理变量时,注意变量的格式控制是否合理等

    参看:C语言再学习 -- GCC编译过程
    1.段错误的定义
    Ansers.com
    http://www.answers.com
    Definition of "Segmentation fault"
    http://www.faqs.org/qa/qa-673.html
    2.《什么是段错误》
    http://www.linux999.org/html_sql/3/132559.htm
    3.《Segment fault 之永远的痛》
    http://www.linuxforum.net/forum/gshowflat.php?Cat=&Board=program&Number=193239&page=2&view=collapsed&sb=5&o=all&fpart=
    4.《段错误bug的调试》
    http://www.cublog.cn/u/5251/showart.php?id=173718

    展开全文
  • !... 如图所示 7-5 求整数序列中出现次数最多的数 (15 分) 本题要求统计一个整型序列中出现次数最多的整数及其出现...数组已经定得足够大了,codeblocks运行没有任何问题,pta却显示段错误? 请各位大佬指点一下。
  • 对于给定的二叉树,本题要求你按从上到下、从左到右的顺序输出其所有叶节点。 首先第一行给出一个正整数 N(≤10),为树中结点总数。树中的结点从 0 到 N−1 编号。随后 N 行,每行给出一个对应结点左右的编号。...
  • #include #include void search(char *storage) { int len; len=strlen(storage); for(int d=0;dif(storage[d]!='P'&&storage[d]!='T'&&storage[d]!='A'){ printf("NO"); }else{ printf("YES");...
  • 本题目要求读入一行字符串,去掉首,尾的多余空格后输出。 输入格式: 一个字符串,长度不限,以换行表示结束,但程序要求读取个数不超过30个。 ...在一对[]中先输出读入的字符串,再在下一行的一对[]中输出去掉...
  • #include int m, n; int main() { int h_l[10]; int i, j, pos_i = 0, pos_j = 0; int h_i = 0, len = 0; while (1) { int L[10][10]; int min = 65535; if ((scanf("%d %d", &m, &n)) == 2) //输入...
  • PAT 段错误的原因和解决方法

    千次阅读 多人点赞 2019-08-04 13:59:05
    目录 一....查找的方法也比较简单,首先对可疑的代码注释掉,提交到OJ上试试,如果确实是⾃⼰注释掉的 这代码发⽣了段错误,那么对应的OJ判题结果就会变为答案错误⽽不再是段错误,说明注释 掉...
  • #include #include int main() { char a[100][100], b[100] = {"z"}; int i, n; scanf("%d", &n); for (i = 0; i ; i++) { scanf("%s",&a[i]); if (strcmp(b, a[i]) > 0) ...}
  • j++)/*错误原因就在这,如果只有一个单词而没有空格的时候,fo循环输出不应该直到空格才停止输入因为只有一个单词的时候整个字符串都不含有空格,因此输出的时候数组会溢出而导致段错误*/ /*应该纠正为 for(j=0;...
  • 问题遇到的现象和发生背景 问题相关代码,请勿粘贴截图 运行结果及报错内容 我的解答思路和尝试过的方法 我想要达到的结果7-0【例11-4】 字符串排序 (20 分) 本题要求编写程序,读入5个字符串,按由小到大的顺序输出...
  • 在devc上运行的正确但在pta老显示错误 以下是代码: #include int main() { int y,m,d; scanf("%d-%d-%d",&y,&m,&d); if(y) { printf("no"); } else if((y==2021&&m)||(y==2021&&m==10&&d)) { printf("no"); } else ...
  • PTA程序常见错误

    万次阅读 多人点赞 2019-04-19 09:02:49
    #最近做了一些PTA上面的题,发现只要有一点点错误就不行,果真还是人类讲人情啊。所以下面整理一下。 1、最常犯的错误:格式错误。 在PTA程序检测中,输入输出要严格按照题目要求。输出的格式要完全按照题目要求来,...
  • pta答案错误怎么看

    2021-06-12 12:45:03
    <p style="text-align:center"><img alt="" src="https://img-ask.csdnimg.cn/upload/1623472949426.png" /></p> <p style="text-align:center"><img ... ... 输入输出应该是对的,不知道哪里错了很难受。求。</p>
  • } 这个代码,刚开始的时候A,B,C定义的都是整型,然而答案都错误。改为浮点型才成功。浮点型更加准确应该是一方面 8,字符型多次输入 int main(){ int N; char x,y; int i; scanf("%d",&N); for(i=0;i 我就截取了一...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼传送门http://pta.patest.cn/pta/test/15/exam/3题目是实现一个单链表的反转,但是提交上去老是编译错误。代码贴上:#include #include typedef int ElementType;typedef...
  • PTA运行时错误 您的程序运行时发生错误,比如 C 语言数组越界访问或 Python 语言运行时抛出异常等, 例如:使用基类指针访问派生类对象时也会出错,如想使用,需要对基类指针地址引用 错误代码 #include<...
  • pta上的问题devc++中正常,PTA错误一直都是这么个问题找不出原因
  • PTA运行格式错误,代码运行结果与预期结果差一个空行,求解原因何在 题目如下图 自己尝试编写代码如下图 提交测试结果如下图
  • PTA函数题部分出现编译错误的问题

    千次阅读 2020-07-25 18:22:49
    比如这个题目还是会显示编译错误 那就看看这儿,这个框 只是让我们对上面代码的补充 千万不要把之前的代码都复制下来,直接写出补充代码就行了 如果复制下来会造成两个main函数 编译错误。 祝大家刷题顺利。 ...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include#includeusing namespace std;string qiaobenzhong(string a);int main(){string a;string b[1000];int N, i;cin >> N;getchar();for (i = 0;...
  • 关于pta上要求的格式错误等问题

    千次阅读 2019-11-11 10:18:53
    一些pta要求的格式问题使用if,else进行分别去空格即可操作完毕 例如 关于阶层的计算用两个循环进行计算另外注意输出结果的精度问题例如20!使用int是无法满足它的要求的,要用float提高运算卫戍 关于变量的注意问题for...
  • ![图片说明](https://img-ask.csdn.net/upload/201909/26/1569491099_241517.png) pta的题,最后总是会显示“”段错误“” 已经按百度到的给修改了,但是还是段错误,求解
  • ### 题目描述 有时候人们用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出... 我自己测试了几组数据感觉都没问题,而学校平台上说我答案错误,自己找不出错误在哪儿
  • PTA理论考部分.docx

    2020-04-28 09:24:04
    PTA理论考部分 试题,答案 WORD文件,可用于查找 HW02 1-3 #include ;是编译预处理命令。 (1分) T F 1-5 任何一个程序都必须有而且只能有一个main()函数。 (1分) T F 1-6 C语言程序是从源文件的第一条语句开始...
  • 1.Waiting WT 用户程序正在排队等待测试 2.Accepted AC 用户程序输出正确的结果 3.Presentation Error (PE) : 虽然您...5.Runtime Error (RE) : 运行时错误,这个一般是程序在运行期间执行了非法的操作造成的。可能是下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,900
精华内容 3,560
关键字:

pta段错误

友情链接: micropython-stm32f103.rar