當前位置:首頁 » 編程軟體 » 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);

熱點內容
微信qq音樂緩存 發布:2025-05-14 16:16:16 瀏覽:468
c語言回收內存 發布:2025-05-14 16:16:08 瀏覽:143
2021國產安卓頂級旗艦買哪個 發布:2025-05-14 16:15:36 瀏覽:300
linux自學視頻 發布:2025-05-14 16:14:49 瀏覽:255
我的世界伺服器崩了重啟 發布:2025-05-14 16:09:37 瀏覽:44
android深拷貝 發布:2025-05-14 16:09:35 瀏覽:153
cf電腦版轉伺服器神器還在嗎 發布:2025-05-14 16:09:02 瀏覽:211
百度文庫伺服器如何搭建 發布:2025-05-14 16:09:00 瀏覽:248
安卓微信刪除的好友怎麼找回 發布:2025-05-14 16:08:56 瀏覽:706
iphone的訪問限制密碼忘記了怎麼辦 發布:2025-05-14 16:08:56 瀏覽:184