簡體   English   中英

為什么我的程序在提供足夠的輸入后卻以o / p給出垃圾值? 代碼如下:

[英]why my program is giving garbage value in o/p after providing sufficient inputs? code is as follows:

為什么我的程序在提供足夠的輸入后在O / P中給出垃圾值?

我給的I / P為10 & 40 ,選擇乘法選項為3

我的代碼如下:

int main()
{
    int a,b,c,x;
    printf("Enter a & b \n");    //printing
    scanf("%d %d, &a,&b");
    printf("1. add \n 2. sub \n 3. multiply \n 4. div \n 5. mod \n 6. and \n 7. or\n 8. not \n 9. xor \n");
    printf("Enter your choice \n");
    scanf("%d, &x");

    switch(x)
    {
        case 1: c=a+b;
                break;

        case 2: c=a-b;
                break;

        case 3: c=a*b;
                break;

        case 4: c=a/b;
                break;

        case 5: c=a%b;
                break;

        case 6: c=a && b;
                break;

        case 7: c=a || b;
                break;        

        case 8: c=~a;
                break;

        case 9: c=a^b;
                break;

        default: printf("Make correct choice\n");
    }

    printf("result is: %d",c);
    return 0;
}

您正在將字符串傳遞給第5和8行的scanf函數,並且沒有存儲區來保存已掃描/讀取的參數。

scanf函數的原型如下:

int scanf(const char *format_string, ...);

其中format_string是包含format specifiers例如%d, %f ... etc)的字符串

原型中的"..."表示可變數量的參數。 這些參數是存儲桶,用於通過讀取format_string來保存scanf填充的值。

因此,正確的代碼行應為

line 5.  scanf("%d %d", &a,&b);
line 8.  scanf("%d", &x);

另一個令人毛骨悚然的事情是scanf的變量參數始終是指向對象的指針。

scanf函數的語法是

scanf(“format string”, argument list); 

例如,改變

scanf("%d %d, &a,&b");
scanf("%d, &x");

scanf("%d %d", &a,&b);
scanf("%d", &x);

首先,您的任何輸入都不會從控制台或任何其他輸入進行掃描。

請檢查scanf()sysntax。

#include<stdio.h>
int main()
{
 int a,b,c,x;
 printf("Enter a & b \n"); //printing 
 scanf("%d %d", &a, &b);
 printf("1. add \n 2. sub \n 3. multiply \n 4. div \n 5. mod \n 6. and \n 7. or\n 8. not \n 9. xor \n");
 printf("Enter your choice \n");
 scanf("%d", &x);
 switch(x)
 {
  case 1:   c=a+b;

    break;
 case 2:  c=a-b;

    break;
 case 3:  c=a*b;

    break;
case 4:  c=a/b;

    break;
case 5:  c=a%b;

     break;
case 6:  c=a && b;

     break;
case 7:  c=a || b;

      break;
case 8:  c=~a;

    break;
case 9:  c=a^b;

     break;
default: printf("Make correct choice\n");
}
  printf("result is: %d",c);
  return 0;
 }

暫無
暫無

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

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