第1题:
编写两个函数,函数功能分别是:求两个整数的最大公约数和最小公倍数,要求输入输出均在主函数中完成。 样例输入:15 25 样例输出:5 75
程序如下
#include int main() {int m,n;
int gys(int,int); //声明函数 int gbs(int,int); //声明函数 cin>>m>>n;
cout<int gys(int a,int b) {int r; r=a%b;
while(r!=0) {
a=b;b=r;r=a%b; }
return b; }
int gbs(int a,int b) {
int gys(int,int); //声明函数 return (a*b)/gys(a,b); }
第2题:
编写函数digit(num, k),函数功能是:求整数num从右边开始的第k位数字的值,如果num位数不足k位则返回0。要求输入输出均在主函数中完成。 样例输入:47 3 样例输出:6
样例输入:23523 7 样例输出:0
程序如下:方法一:
#include int main() {int num,k;
int digit(int,int); //声明函数 cin>>num>>k;
cout<int digit(int num,int k) {int i,f; i=1;
f=0;//f=0,num不足k位,否则f=1 while(num!=0) {
if(i==k) {
f=1; break; } else {
num=num/10; i++; } }
if(f==1)
return num%10; else
return 0; }
程序如下:方法二:
#include int main() {int num,k;
int digit(int,int); //声明函数 cin>>num>>k;
cout<int digit(int num,int k) {int i,n,a[100];
/*将num中的各位数字从个位开始依次取出置于数组元素a[0]至a[i-1]中 循环结束后,i变量中存储了num的数据位数*/ i=0;
while(num!=0) {
a[i]=num%10; num=num/10;
i++; }
if(i>=k)
return a[k-1]; else
return 0; }
第3题:
哥德猜想指出:任何一个不小于6的偶数都可以表示为两个素数之和。例如:6=3+3 8=3+5 … 50=3+47。从键盘输入n(n>=6且为偶数),输出对应的表达式,要求编写函数判断一个数是否为素数。 样例输入:8 样例输出:8=3+5
程序如下:
#include int main() {int n,n1,n2,hs=0; int prime(int); cin>>n;
for(n1=3;n1<=n/2;n1+=2) {
if(prime(n1)==1) {
n2=n-n1;
if(prime(n2)==1) {
cout<//判断n是否是素数,若是,返回1,否返回0int prime(int n) {
int gs=0,i;
for(i=1;i<=n;i++) if(n%i==0) gs++; if(gs==2) return 1; else
return 0;
}
第4题: 编写函数,将字符串中的大写字母变成对应的小写字母,小写字母变成对应的大写字母,其它字符不变。在主函数中调用该函数,完成任意字符串的转换,并输出结果。输入字符串(允许包含空格),输出处理后的结果。 样例输入:How Are You? 样例输出:hOW aRE yOU?
程序如下:
#include int main() { char a[30];void zh(char []); //函数声明
gets(a); //字串允许包含空格,所以用gets输入 zh(a); puts(a); }
void zh(char t[]) { int i;
for(i=0;t[i]!=0;i++)
if(t[i]>='a'&&t[i]<='z') t[i]-=32;
else if(t[i]>='A'&&t[i]<='Z') t[i]+=32; }
第5题:
编写函数,求一个字符串的长度。在主函数中调用该函数,输出结果。输入字符串(允许包含空格),输出字符串的长度。 样例输入:How Are You?
样例输出:12 程序如下:
#include int main() { char a[50];int cd(char []); //函数声明
gets(a); //字串允许包含空格,所以用gets输入 printf(\"%d\}
int cd(char t[]) { int i;
for(i=0;t[i]!=0;i++) ;
return i; }
第6题:
编写函数,求两个整数的最大公约数和最小公倍数。在主函数中调用该函数,输出分2行,第一行为最大公倍数,第二行为最小公倍数。 样例输入:15 25 样例输出: 5 75
程序如下:(用指针)
#include int main() {int m,n,gy,gb;
void gygb(int,int,int *,int *); //声明函数 cin>>m>>n;
gygb(m,n,&gy,&gb); cout<void gygb(int a,int b,int *pgy,int *pgb) {int r,a1,b1; a1=a;b1=b; r=a%b;
while(r!=0) {
a=b;b=r;r=a%b; }
*pgy=b;
*pgb=(a1*b1)/b; }
程序如下:(用全局变量)
#include int gy,gb; int main() {int m,n;
void gygb(int,int); //声明函数 cin>>m>>n; gygb(m,n);
cout<void gygb(int a,int b) {int r,a1,b1; a1=a;b1=b; r=a%b;
while(r!=0) {
a=b;b=r;r=a%b; }
gy=b;
gb=(a1*b1)/b; }
第7题: [95]编写函数,函数功能是:计算n的阶乘,要求输入输出均在主函数中完成。 样例输入:10
样例输出:3.6288e+06 程序如下:
#include int main() {int n;
float jc(int); //声明函数 cin>>n;
cout<//函数定义成实型 float jc(int n) {int i;
float t;//存放阶乘的变量定义成实型 t=1;
for(i=1;i<=n;i++) t*=i; return t; }
第8题:
[99]有一分段函数如下,编写函数进行计算,在主函数中输入x值,输出y值。
样例输入:-1.5
样例输出:0.00250501 样例输入:5.6 样例输出:31.57 样例输入:12.5 样例输出:4.06202
程序如下:
#include #include int main() {float x,y;
float js(float); //声明函数 cin>>x; y=js(x); cout<float js(float x) {float y; if(x<=0)
y=sin(x)+1; else if(x<10) y=x*x+3/x; else
y=sqrt(x+4); return y; }
第9题:
编写函数,函数功能是:统计整数n的各位上出现数字1、2、3的次数。要求输入输出均在主函数中完成。 样例输入:123114350 样例输出:3 1 2
程序如下:
#include int main() {int count[3]={0},n,i;
void tj(int [],int); //声明函数 cin>>n;
tj(count,n);
for(i=0;i<3;i++)
cout<void tj(int js[],int x) {while(x!=0) {
switch(x%10)
{
case 1:js[0]++;break; case 2:js[1]++;break; case 3:js[2]++;break; }
x=x/10; } }
第10题:
编写函数fun(num),其中num是一个n位数,函数功能是:求整数num的后n-1位,如果num是一位数则返回0,要求输入输出均在主函数中完成。 样例输入:9 样例输出:0
样例输入:6734 样例输出:734 样例输入:1000 样例输出:0 样例输入:10101 样例输出:101
程序如下:
#include #include int fun(int w) { int n,k; n=0;k=w;if(w<10)return 0;
//下面循环测试w的位数。循环结束,n中为w的位数-1 while(w>10) {n++;w=w/10;}
//pow的函数值为实型,所以此处须强制转换成整型
return k%(int)pow(10,n); }
int main() {
int num; cin>>num;
cout<第11题:编写函数,函数功能是:将两个两位数的正整数a、b合并成一个整数c,合并规则是将a的十位和个位分别放在c的千位和个位,将b的十位和个位分别放在c的百位和十位。a、b由键盘输入,输入输出均在主函数中完成。 样例输入:45 12
样例输出:4125 程序如下:
#include int hb(int a,int b){ int c,a_s,a_g,b_s,b_g; a_s=a/10;a_g=a%10; b_s=b/10;b_g=b%10;
c=a_s*1000+b_s*100+b_g*10+a_g; return c; }
int main() {
int a,b,c; cin>>a>>b; c=hb(a,b); cout<第12题:求数列的前n项和
要求使用函数,函数功能是:计算数列的每一项,n由键盘输入。累加过程和输入输出均在主函数中完成。 样例输入:10
样例输出:0.382179 程序如下:
#include #include float js(int i) {float c;
c=1.0/(i*(i+1))*pow(-1,i+1); //注意表达式类型 return c; }
int main()
{ float jf(int); int n,i; float s=0; cin>>n;
for(i=1;i<=n;i++) s+=js(i); cout<第13题: 求数列
其中分母为n以内(包括n)的素数。要求使用函数,函数功能是:计算数列的每一项,n由键盘输入。累加过程和输入输出均在主函数中完成。 样例输入:50 样例输出:1.66165
程序如下:
#include float pd(int n) { int p=1,i;for(i=2;i<=n/2;i++) if(n%i==0) { p=0; break; } if(p==1)
return 1.0/n; else
return 0; }
int main() {
int n,i;
float pd(int),s; cin>>n; s=0;
for(i=2;i<=n;i++) s+=pd(i); cout<第14题:
编写程序求给定整数n的“亲密对数”。“亲密对数”是指:若整数a的因子(包括1但不包括自身,下同)之和为b,而整数b的因子之和为a,则称a和b为一对“亲密对数”。要求使用函数,函数功能是:计算某一个数的因子(包括1但不包括自身)之和。n由键盘输入,如果存在“亲密对数”则输出该数,否则输出NO。要求输入输出均在主函数中完成。 样例输入:220 样例输出:284
样例输入:8 样例输出:NO
程序如下:
#include int yzh(int n) { int s=0,i;for(i=1;i<=n/2;i++) if(n%i==0) s+=i; return s; }
int main() {
int n1,n2; int yzh(int); cin>>n1; n2=yzh(n1);
if(n1==yzh(n2)) cout<cout<<\"NO\"; }第15题:
编写函数,功能是交换数组中的最大数和最小数的位置,并计算所有数之和。例如数组a有5个元素3、4、1、5、2,将最大数5和最小数1的位置交换后得到3、4、5、1、2,总和为15。程序中用到的主函数为:
程序如下:
#include int fun(int a[],int n) {int max,min,s,i,t; max=min=s=0;
for(i=0;is+=a[i];if(a[max]else if(a[min]>a[i]) min=i; }t=a[max];a[max]=a[min];a[min]=t; return s; }
int main() {
int a[50],n,i,sum; cin>>n;
for(i=0;i>a[i]; sum=fun(a,n); for(i=0;icout<