当前位置:首页 » 编程软件 » pta函数题为什么显示编译错误

pta函数题为什么显示编译错误

发布时间: 2022-11-07 21:08:50

① c++这题为什么在PTA上一直错误

数组长度至少要81。

② 为什么我c语言里面运行结果正确,到pta里面就说编译错误

动画版三国演义...

③ pta的题自己代码运行答案没问题,提交显示段错误,请高手指出错误

错误原因是,他要求输入最多1000个整数,所以a数组开小了
数据的范围也不是0~99所以b数组开100也不对
正确方法是,把a数组开到1000大小,排序然后统计,排完序后,同样的数一定挨在一起
这样就可以顺序的统计了

④ C语言:下面的代码为什么会出现编译错误应当怎么改正

错误出在a=sum;这一句——因为构成C语言程序的基本单位是函数而不是C语句,这里的a=sum;不在任何函数中,所以编译器无法处理而出错。把它放到主函数中的printf("%d ",a(3,5));之前就可以了。函数外只能进行全局变量定义或声明,而不能进行其他操作,所以把int (*a)(int, int); a=sum;两句改成int (*a)(int, int)=sum;,让它成为声明变量a并初始化为sum也是可以的。你可以试试。

代码文本:

#include "stdio.h"

int sum(int a, int b);

int (*a)(int, int);

int main(int argc,char *argv[]){

a=sum;

printf("%d ",a(3,5));

return 0;

}

int sum(int a,int b){

return a+b;

}

⑤ 这个程序在DEV C++上可以运行并出现正确结果 但是提交到PTA就会报错!请赐教!

当 C 语言程序能够正常编译并运行,但可能结果可疑或不对时,即,当程序没有语法错误而可能有逻辑错误时,就需要考虑使用调试Debug功能来找出程序的 bug。



在调试过程中,可以让程序运行到设置好的断点处并暂停下来,然后通过观察相关的变量值是否正确,来判断程序的逻辑错误可能出现在哪里。



本文以 Dev-C++ 5.11 开发环境为例来说明 C 语言的调试方法。



  • 准备工作

  • 菜单:工具/编译选项

    Tools/Compiler Options

    在“设定编译器配置”Compiler set to configure中选择“TDM-GCC 4.9.2 64-bit Debug”。

    提示:

    如果是 32 位的系统,请选择“TDM-GCC 4.9.2 32-bit Debug”。

    在下方的“编译器”General选项卡中,勾选“编译时加入以下命令:”Add the following commands when calling the compiler:,并在其中输入“-g”。如上图所示。

    确定退出后,可在软件界面右上角看到或选择用于调试的编译器。

  • 设置断点

  • 断点breakpoint,指的是在调试过程中程序运行到此行代码前会临时停下,以便观察此时的某些变量值。

    可通过点击代码左侧的行号来设置断点。

    或在某行代码上右击,选择“切换断点”Toggle Breakpoint。

    或者使用快捷键:F4。

    同样的方法也可用于取消断点设置。

    断点设置建议:

    设置在 scanf 等输入语句的下一行,以观察数据是否被正确获得。

    设置在循环语句的下一行,以观察循环控制变量在循环结束后的值,或者为了避免调试过程中在循环语句段反复点击“下一步”按钮。

    设置在函数调用语句的下一行,以观察函数返回的结果值是否正确。

  • 开始调试

  • 在开始调试前,一般要先编译。

    菜单:运行/编译

    Execute/Compile

    快捷键:F9

    确保没有语法错误之后,再开始调试。

    菜单:运行/调试。

    Execute/Debug

    快捷键:F5

    或者,点击工具栏上的“”按钮。

  • 添加查看

  • 开始调试后,代码将按照常规顺序依次运行。执行到第一个断点时,才临时停止,红色行变成蓝色行,代表即将要执行的代码行。

    此时,可将鼠标指针悬浮于某个变量之上,以查看此时该变量的值。

    提示:

    对于字符变量,会同时显示字符的 ASCII 码值。

    或者,在变量上右击,选择“添加查看”Add watch,会自动将此变量添加到左侧的调试Debug面板中,以便后续跟踪查看。

    提示:

    在变量名上双击,可精准选中变量。

    或者,点击左下方的“添加查看”Add watch按钮,手动添加要查看的变量。

  • 继续或停止调试

  • 可以使用相关按钮继续调试工作。

    下一步Next line按钮

    运行下一行代码。如果下一行代码是对函数的调用,不进入函数体。

    快捷键:F7

    类似于 Turbo C++ 中的“Step Over”。

    跳过Continue按钮

    直接运行到下一个断点处。

    单步进入Into function按钮

    运行下一行代码,如果下一行是对函数的调用,则进入函数体内逐行运行。

    快捷键:F8

    类似于 Turbo C++ 中的“Trace”。

    跳过函数Skip function按钮

    当在函数内部时点击此按钮,将直接运行到函数结束,并返回到函数调用处。

    停止执行Stop Execution按钮

    停止调试,清除所有添加好的查看watch。

    快捷键:F6

    说明:

    下一条语句Next instruction按钮和进入语句Into instruction按钮,常结合CPU窗口查看并执行指令。一般的调试工作中可以不用。

⑥ 在PTA上做题scanf函数总是出现这样的问题,请高手指教

这个代码在其它在线编译的网站是可以正常运行的,可能跟默认的编译器设置有关。你这个警告应该是指scanf的返回值没有使用,你可以把scanf的结果赋下值试试,如下代码:

intr=scanf("%d%d%d%d",&a,&b,&c,&d);

其它网站执行结果正常

另外PTA的读者验证码从哪里得到?

⑦ 在VS上正常运行,为什么在pta上就显示部分错误,用c++编译的

我看了一下图中的PAT的题,研究了一下。
在VS上当然能正常运行(你这个程序本身就没有编译错误嘛),但是算法出现了问题。不应该用do while循环,因为do while循环总会执行一次,举个例子,假设输入的为1,那么将会造成结果为2(实际为0)。所以应当用while循环。
还有就是那个开头判断输入是否越界的if不用写,因为测试输入永远是按照题意的,不会出界。
这是改进后的代码(测试了可以全对):
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int j = 0;
while (n != 1)
{
int i = n % 2;
if (i == 0)
{
n = n / 2;
}
else
{
n = (n * 3 + 1) / 2;
}
j++;
}
cout << j << endl;
return 0;
}

⑧ 求助PTA L1-025 正整数A+B,C++提交后显示格式错误,求解哪里错了

我在PTA网站上测试了你的代码,没问题。

应该是编译器选的不对,你选成g++。

#include<iostream>
#include<string>
usingnamespacestd;

intmain(){
//输入,一行读取,按照空格拆分
stringinput_str;
getline(cin,input_str);

intindex=input_str.find('');
stringinput_str1=input_str.substr(0,index);
stringinput_str2=input_str.substr(index+1,input_str.length()-input_str1.length());
if(input_str1.empty())input_str1="?";
//cout<<input_str1<<"aaa"<<endl;
//cout<<input_str2<<"bbb"<<endl;

boolflag1=true;
boolflag2=true;
//判断
for(autoch:input_str1)
{
if(!isdigit(ch))
{
flag1=false;
input_str1="?";
break;
}
}

for(autoch:input_str2)
{
if(!isdigit(ch))
{
flag2=false;
input_str2="?";
break;
}
}

//计算
if(flag1&&flag2)
{
inta=atoi(input_str1.c_str());
intb=atoi(input_str2.c_str());
if(a<1||a>1000)
cout<<"?"<<"+"<<input_str2<<"="<<"?"<<endl;
elseif(b<1||b>1000)
cout<<input_str1<<"+"<<"?"<<"="<<"?"<<endl;
else
cout<<input_str1<<"+"<<input_str2<<"="<<a+b<<endl;
}
else
{
cout<<input_str1<<"+"<<input_str2<<"="<<"?"<<endl;
}

system("pause");
return0;
}

⑨ 字符串输入%s 和char不匹配 pta的题,在codeblocks上可以运行但是报警告在提交代码报编译错误

scanf("%s",&a);
改为
scanf("%s",a);

热点内容
优酷怎么给视频加密 发布:2025-05-14 19:31:34 浏览:633
梦三国2副本脚本 发布:2025-05-14 19:29:58 浏览:859
phpxmlhttp 发布:2025-05-14 19:29:58 浏览:432
Pua脚本 发布:2025-05-14 19:24:56 浏览:448
苹果像素低为什么比安卓好 发布:2025-05-14 19:13:23 浏览:460
安卓机微信怎么设置红包提醒 发布:2025-05-14 19:00:15 浏览:271
androidsystem权限设置 发布:2025-05-14 18:56:02 浏览:970
mq脚本 发布:2025-05-14 18:45:37 浏览:25
仙境传说ro解压失败 发布:2025-05-14 18:45:01 浏览:868
betweenand的用法sql 发布:2025-05-14 18:39:25 浏览:250