C++习题(函数)

第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。要求输入输出均在主函数中完成。 样例输入:4647 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; 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; 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,否返回0

int 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;

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4