為什么<ctype.h>中的函式引數都是int型別?
比如; int isalnum ( int c );
int islower ( int c );
int isalpha ( int c );
int isblank ( int c );
int isdight ( int c );
但是我們在是有的時候卻可以使用char型別,這是為什么呢?
因為<ctype.h>中的函式除了接受普通字符,還需要接收一個無效字符EOF,
也就是說,引數要接收的數值范圍大于 char 所能表示的數值范圍,所以引數的型別必須大于char,干脆規定就用 int 吧,這樣彈性很大,
EOF還有一個功能是表示檔案結尾,比如說
7-2 最大公約數和最小公倍數系列 (20分)
有一系列正整數,求它們的最大公約數和最小公倍數,原始正整數和最終結果都在32位正整數范圍內,
輸入格式:
資料有多組,每組資料占一行,第1個數代表本組資料正整數個數,正整數個數至少為1,
輸出格式:
針對每組輸入資料,輸出資料占一行,含最大公約數和最小公倍數,中間以一個空格分隔,
輸入樣例:
2 6 8
4 6 8 12 20
1 15
6 5 12 12 30 46 10
輸出樣例:
2 24
2 120
15 15
1 1380
#include<stdio.h>
int f(int a[],int len);
int p(int a[],int len);
int main()
{ int n;
while(scanf("%d",&n)!=EOF)
{
int i,a[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int b,c;
b=f(a,n);
c=p(a,n);
printf("%d %d",b,c);
}
}
int f(int a[],int len)
{
int min=a[0],i,j;
for(i=1;i<len;i++)
{
if(min>a[i])
min=a[i];
}
for(j=min;j>0;j--)
{
for(i=0;i<len;i++)
{
if(a[i]%j!=0)
break;
}
if(i==len)
return j;
}
}
int p(int a[],int len)
{
int max=a[0],i,j;
for(i=1;i<len;i++)
{
if(max<a[i])
max=a[i];
}
for(j=max;;j=j+max)
{
for(i=0;i<len;i++)
{
if(j%a[i]!=0)
break;
}
if(i==len)
return j;
}
}
這道題輸入時沒有結束標志,所以用EOF,輸入完資料后,按ctrl+z,然后回車結束,運行結果如下,
2 6 8 (回車)
2 24 (答案)同下
4 6 8 12 20
2 120
1 15
15 15
6 5 12 12 30 46 10
1 1380
^Z(ctrl+z)
Process returned 0 (0x0) execution time : 56.635 s
Press any key to continue.
如有錯誤,請多指教,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/241383.html
標籤:其他
上一篇:12.21-12.27
