簡體   English   中英

如何使用多線程丟棄 scanf 錯誤並從 4 個輸入整數中識別最高質數

[英]How to discard scanf errors and identifying highest prime number from 4 input integers using multi threading

我正在解決一個問題,從一組 4 個整數計算 LCM 和最高質數。 我在解決異常 wrt scanf 時遇到了麻煩,例如

  1. 有些輸入不是整數
  2. 如果輸入多於/少於 4 個
  3. 如果輸入未用逗號輸入或
  4. 如果輸入中沒有質數

我嘗試使用以下代碼:

if((scanf("%d,%d,%d,%d", &num1,&num2,&num3,&num4))!=4) /* for 4 input verification */

if((scanf("%d,%d,%d,%d", &num1,&num2,&num3,&num4))<4) /* for non-integer inputs */

if((scanf("%d,%d,%d,%d", &num1,&num2,&num3,&num4))<4) /* used comma in between %d for comma check, but how to generate error if input is without commas. */

以及如何識別素數以及如何使用多線程實現程序。

您的第一段代碼幾乎是正確的:您應該檢查返回的值以了解scanf讀取了多少個值。 但是您可能應該在變量中捕獲該返回值,以便您可以確定它是 0、1、2、3 還是 4。

至於如何識別素數,請在新問題中向我們展示您迄今為止嘗試過的代碼。 同樣,多線程是一個單獨的問題。

您的第一個條件很好,例如,如果除了整數之外輸入了任何內容, scanf不會返回4 ,因此它將涵蓋每種錯誤輸入的情況。

但是您需要檢查變量以找出它包含的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM