作者ahongyeh (小叶子)
看板TransCSI
标题Re: [问题] SOME PROBLEMS...
时间Thu Jul 12 20:31:20 2007
※ 引述《antirazin (今年是日星来台年~真嗨)》之铭言:
: ※ 引述《ahongyeh (小叶子)》之铭言:
: : #include<stdio.h>
: : #define MAX 100
: : main(){
: : int a[MAX],max,min,ch,i=0,j;
: : printf("Please input numbers(split in space): ");
: : do{
: : scanf("%d",&a[i++]);
: : scanf("%c",&ch);
: : }while(ch==' ');
: ^^^^^^^^^^^^^^^^
: 这边看不懂为什麽要这样写
: 是说虽然MAX等於100,可是如果这样写可以随意输入任意个数的值,
: 不用输入100个值,
: 你的意思是这样吗?
: 不过看不懂ch的型态是int为什麽可以等於空字元=> ' '
这边是我的疏忽~~ch的型态应该要为char比较妥当~~
(但是使用int也无不可唷~~因为char和int只是ASCII的转换而已~~)
我会有上面的读入资讯~~纯粹只是要用' '当作分开字元罢了~~
如果最後接收不为' '~~则代表後方无资料~~
所以只要从这些资料做比较即可~~
如果你还不懂我的意思的话~~你用这个code读入看看~~
for(i=0;i<MAX;i++){
scanf("%d",&a[i]);
}
那麽你会发现~~如果读入的资料个数不到MAX~~
则程式会一直要求持续要求你输入资料~~
: : max=a[0];
: : min=a[0];
: : for(j=0;j<i;j++){
: : if(a[j]>max) max=a[j];
: : if(a[j]<min) min=a[j];
: : }
: : printf("The largest is %d, the least is %d.\n",max,min);
: : system("pause");
: : }
: : 刚刚run过一次~~应该是没错~~
: : 不过我发现在我考的时候有些小地方写错了... @@
另外~~我再提供一个不用阵列来比较~~
因为是直接比较~~所以可以节省记忆体(不用事先宣告阵列大小)~~
#include<stdio.h>
main(){
int cpr,max=0,min=0,flag=0;
char ch;
printf("Please input numbers(split in space): ");
do{
scanf("%d",&cpr);
if(flag++==0) max=min=cpr;
if(cpr>max) max=cpr;
if(cpr<min) min=cpr;
scanf("%c",&ch);
}while(ch==' ');
printf("The largest is %d, the least is %d.\n",max,min);
system("pause");
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.164.76.211
1F:→ ahongyeh:分开字元ch~~你可以自行设定~~我是使用空白分离~~ 07/12 20:35
2F:→ ahongyeh:另外~~我另写的code的资料数量最多为2^16~~(应该是够了) 07/12 20:43
3F:→ ahongyeh:那行判断改成if(flag==0) flag=max=min=cpr;就无数量限制 07/12 20:57
4F:推 antirazin:感激不尽~>< 07/12 22:34