小白是自學C語言,想實作輸入兩個數字,輸出最大數的功能,于是編了以下這條程式,但是每次輸出都是輸入的第一個數字,不知道是怎么回事,所以請各位老師幫忙看看是哪里出錯了呢?
#include<stdio.h>
int main()
{
int a,b,max;
scanf("%d,%d",&a,&b);
if(a>b)max=a;
else max=b;
printf("max=%d\n",max);
}
uj5u.com熱心網友回復:
輸入兩個數字的時候中間加個英文的逗號試試?uj5u.com熱心網友回復:
因為樓主沒有將b值輸入到b的記憶體里。注意樓主的scanf中帶有,逗號,輸入的時候要保持和scanf的格式一致,即該逗號是中文,則輸入的時候要輸入中文逗號,否則輸入英文逗號.
uj5u.com熱心網友回復:
總體邏輯沒有問題,不過一般需要一個return 0;回傳值,因為你用的是int作為main函式的回傳值。原始碼:
#include<stdio.h>
int main()
{
int a, b, max;
scanf("%d,%d",&a, &b);
if(a>b)
max = a;
else
max = b;
printf("max=%d\n", max);
return 0;
}
不過注意輸入的時候是a,b,不是a b,a與b之間是逗號,不是空格。
uj5u.com熱心網友回復:
僅供參考:#include <stdio.h>
int main()
{
int a,b,n,v,r,k;
char buf[80];
char *p;
k=0;
r=EOF;
while (1) {
if (EOF==r) {
fgets(buf,80,stdin);
p=buf;
}
while (1) {
r=sscanf(p,"%d%n",&v,&n);
if (1==r) {k++;break;}
if (EOF==r) break;
p++;
}
if (EOF==r) continue;
p+=n;
if (1==k) a=v;
if (2==k) {
b=v;
break;
}
}
printf("%d,%d\n",a,b);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/188309.html
標籤:C語言
上一篇:面向物件、類
