请编写函数proc(),该函数的功能是:将两个两位数的正整数num1,num2合并形成一个整数放在num中。合并的方式是:将num1数的十位和个位数依次放在num数的十位和千位上,num2数的十位和个位数依次放在c数的百位和个位上。
例如,当num1=64,num2=18时,调用到该函数后,num=4168。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
【解析】要算出变量num的值,首先需要得到变量num1和hum2个位和十位上的数字。然后将在千位上的数字乘以1000,百位上的数字乘以100,十位上的数字乘以10,各位上的数字乘以1,就能得到要求的hum。
第1题:
请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
void fun(int a,int b,long *c)
{c=(b/10)*1000+(a)*100+(b)*10+a/10;}
第2题:
请补充main函数,该函数的功能是:输入两个正整数numl和num2,求这两个数的最大公约和最小公倍数。
例如,若输入的两个正整数为12,4,则它们的最大公约数为12,最小公倍数为4。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填人所编写的若干表达式或语句。
试题程序:
include<stdlib.h>
include<stdio.h>
void main
{
int a,b,numl,num2,t;
system("CLS"):
printf("\nInput two numbers:\n");
scanf("%d,%d",&numl,&num2);
if(numl<num2)
{
a=num2;
b=num1:
}
else
{
a=num1;
b=num2;
}
while(【1】)
{
t=【2】
a=b;
b=t:
}
printf(“greatest common divisor:
%d\n",a);
printf("least common multiple:
%d\n",【3】;
}
【1】b!=0【2】a%b[3]numl*num2/a
【解析】由程序可知,变量b中存放两个正整数中较小的那个数,while循环求两个正整数的公约数。因此【1】填“b!=0”;【2】填“a%b”.【3】处是求两个正整数最小公倍数的表达式,因此【3】填“numl*num2/a”。
第3题:
4、如下代码用欧几里得算法求两个正整数的最大公约数。 num1,num2=eval(input("请输入两个正整数")) if num1<num2: num1,num2=num2,num1 #保证num1大 while_____________: temp=num1%num2 num1=num2 num2=temp print("最大公约数是:",num2) 其中第4行下划线的代码应该是_______
A.num2%num1==0
B.num2%num1!=0
C.num1%num2==0
D.num1%num2!=0
第4题:
请编写一个函数proc(),它的功能是将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。
例如,若输入字符串“1234”,则函数把它转换为整数值1234。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
【解析】要将数字字符串转换为一个整数,首先判断该字符串的正负号。然后将数字字符转换为相应的数字,将各个数字合并为整数。最后将得到的整数乘以字符串中的符号。将最后的结果返回到主函数中。
第5题:
2、定义一个函数实现判断完数的功能,完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3;28=1+2+4+7+14。 在主函数中, 输入 输入2个整数num1和num2. 输出 对于每组测试数据,请输出num1和num2之间(包括num1和num2)存在的完数个数。