#include <stdio.h>
#define swap(a,b) { a=a+b; b=a-b; a=a-b; }
int gcd(int x,int y){
if(y==0)
return x;
else
return gcd(y,x%y);
}
int lcd(int x,int y){
return (x*y)/gcd(x,y);
}
int main(){
int m,n;
while(scanf("%d%d",&m,&n)!=EOF){
if(m<n) swap(m,n);
printf("最大公约数:%d\n",gcd(m,n));
printf("最小公倍数:%d\n",lcd(m,n));
}
return 0;
}
1711c-exercise-example16
参考方法:
#include <stdio.h>
long maxn(long a, long b)
{
long temp;
while(1)
{
if(a==b) return a;
else if(a < b) b -= a;
else a -= b;
}
}
int main()
{
long a, b, m, n;
printf("请输入两个正整数: ");
scanf("%ld %ld", &a, &b);
printf("输入的数字是: %ld和%ld\n", a, b);
m = maxn(a, b);
n = a * b / m;
printf("最大公约数是: %ld\n最小公倍数是: %ld\n", m, n);
}
1715c-exercise-example17
参考方法:
#include <stdio.h> #include <ctype.h> #define N 100 int main(){ char c1; char str[N]; int lower=0,upper=0,space=0,digit=0,other=0; gets(str); int i=0; while(str[i]){ c1=str[i]; i++; if(islower(c1)) lower++; else if(isupper(c1)) upper++; else if(isspace(c1)) space++; else if(isdigit(c1)) digit++; else other++; } printf("大写字母=%d,小写字母=%d,数字=%d,空格=%d,其他=%d\n",upper,lower,digit,space,other); return 0; }1714c-exercise-example17
参考方法:
#include<stdio.h> int main(void) { char ch; int alpha,num,space,others; alpha = num = space = others = 0; printf("请输入一些字母:\n"); while((ch = getchar()) != '\n') { if((ch >= 'a' && ch <= 'z')||(ch >='A' && ch <='Z')) alpha++; else if(ch >= '0' && ch <= '9') num++; else if(ch == ' ') space++; else others++; } printf("字母=%d,数字=%d,空格=%d,其他=%d",alpha,num,space,others); return 0; }1713c-exercise-example17
参考方法:
#include <stdio.h> int main() { int c,i=0, j=0, k=0, l=0; printf("请输入一些字母:\n"); while(c!='\n') { c=getchar(); if( c>96 && c<123 )i++; if( c>64 && c<91 )i++; if( c>47 && c<58 )j++; if( c==32 )k++; l++; // 会多计算一个Eenter,故需在统计时减一; } printf("英文字母%d个,数字%d个,空格%d个,其它字符%d个\n",i,j,k,l-i-j-k-1); }1712c-exercise-example16
参考方法:
#include <stdio.h> #define swap(a,b) { a=a+b; b=a-b; a=a-b; } int gcd(int x,int y){ if(y==0) return x; else return gcd(y,x%y); } int lcd(int x,int y){ return (x*y)/gcd(x,y); } int main(){ int m,n; while(scanf("%d%d",&m,&n)!=EOF){ if(m<n) swap(m,n); printf("最大公约数:%d\n",gcd(m,n)); printf("最小公倍数:%d\n",lcd(m,n)); } return 0; }1711c-exercise-example16
参考方法:
#include <stdio.h> long maxn(long a, long b) { long temp; while(1) { if(a==b) return a; else if(a < b) b -= a; else a -= b; } } int main() { long a, b, m, n; printf("请输入两个正整数: "); scanf("%ld %ld", &a, &b); printf("输入的数字是: %ld和%ld\n", a, b); m = maxn(a, b); n = a * b / m; printf("最大公约数是: %ld\n最小公倍数是: %ld\n", m, n); }