[急求助]C语言程序编程题,请高手帮忙解答下。!
编程题:函数fun的功能是:将两个两位数的正整数a,b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c...
编程题:
函数fun的功能是:将两个两位数的正整数a,b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
例如:当a=45,b=12。调用该函数后,c=1524。
注意:部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
[PROG1.C]
#include<stdio.h>
#include<math.h>
void fun(int a,int b,long *c)
{
}
main()
{int a,b;long c;
printf("Input a,b:");
scanf("%d%d",&a,&b);
fun(a,b&c);
printf("The result is:%ld\n",c);
}
请高手给个正解,并且把每个步骤的原因注清晰,小弟在此谢谢啦~! 展开
函数fun的功能是:将两个两位数的正整数a,b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
例如:当a=45,b=12。调用该函数后,c=1524。
注意:部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
[PROG1.C]
#include<stdio.h>
#include<math.h>
void fun(int a,int b,long *c)
{
}
main()
{int a,b;long c;
printf("Input a,b:");
scanf("%d%d",&a,&b);
fun(a,b&c);
printf("The result is:%ld\n",c);
}
请高手给个正解,并且把每个步骤的原因注清晰,小弟在此谢谢啦~! 展开
5个回答
展开全部
只要输入一行就行了:
#include<stdio.h>
#include<math.h>
void fun(int a,int b,long *c)
{
*c=a%10*100+a/10+b/10*1000+b%10*10;
/*解释:a%10的意思是a除以10剩下的余数,即a的个位数,若a是45,a%10就是5,再乘以100即是500;a/10就是十位数,即4,原因是它是向下取整,45/10虽是4.5,但向下取整就将小锋罩兄数点后的都等闷仔于零;b/10和上面的a一样银袭是取b的十位数,若b为12,b/10就是1,b/10*1000就是1000;b%10就是2,再乘以2就是20。最后将500+4+1000+20=1524*/
}
void main()
{
int a,b;long c;
printf("Input a,b:");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("The result is:%ld\n",c);
getch();
return;
}
#include<stdio.h>
#include<math.h>
void fun(int a,int b,long *c)
{
*c=a%10*100+a/10+b/10*1000+b%10*10;
/*解释:a%10的意思是a除以10剩下的余数,即a的个位数,若a是45,a%10就是5,再乘以100即是500;a/10就是十位数,即4,原因是它是向下取整,45/10虽是4.5,但向下取整就将小锋罩兄数点后的都等闷仔于零;b/10和上面的a一样银袭是取b的十位数,若b为12,b/10就是1,b/10*1000就是1000;b%10就是2,再乘以2就是20。最后将500+4+1000+20=1524*/
}
void main()
{
int a,b;long c;
printf("Input a,b:");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("The result is:%ld\n",c);
getch();
return;
}
展开全部
*c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只需顷罩链在花括号中添加下面的语句就可以了:
*c=a%10*100+a/10+b/10*1000+b%10*10;
说明:a%10取得a的各位上的数值,然后乘100即放到c的百位上了
a/10取得a的十位上的数字,让后直接加入c中就相当于放到个位上了;b的情况类似,只是乘的基值不同罢了
提示:你的程序是倒数第三行fun(a,b&c);在b后少了,这里是必须得改动的,否则程序有误怎么实现呢?呵呵想必是你不注意丢了吧!
注意:此程序输入的只能雀孙为两位数,只有这样才符合你闷渗的要求
*c=a%10*100+a/10+b/10*1000+b%10*10;
说明:a%10取得a的各位上的数值,然后乘100即放到c的百位上了
a/10取得a的十位上的数字,让后直接加入c中就相当于放到个位上了;b的情况类似,只是乘的基值不同罢了
提示:你的程序是倒数第三行fun(a,b&c);在b后少了,这里是必须得改动的,否则程序有误怎么实现呢?呵呵想必是你不注意丢了吧!
注意:此程序输入的只能雀孙为两位数,只有这样才符合你闷渗的要求
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前面2位,如果输入不是2位数,那么输出是错误的~
c=(a%100-a%10)*100+a%10*10+(b%100-b%10)/10+b%10*100;
为正解
我想问楼主,你fun函数参数c是long型指针,你调用时又传地址值给他,有意义吗?
随手改了下:能直接租腔编译
#include<stdio.h>弊指衫
#include<math.h>
long fun(int a,int b)
{
long c;
c=(a%100-a%10)/10+a%10*100+(b%100-b%10)*100+b%10*10;
return c;
}
int main()
{int a,b;
long c;
printf("Input a,b:\n");
scanf("%d%d",&a,&b);
c=fun(a,b);
printf("The result is:%ld\n"逗带,c);
getch();
return 0;
}
c=(a%100-a%10)*100+a%10*10+(b%100-b%10)/10+b%10*100;
为正解
我想问楼主,你fun函数参数c是long型指针,你调用时又传地址值给他,有意义吗?
随手改了下:能直接租腔编译
#include<stdio.h>弊指衫
#include<math.h>
long fun(int a,int b)
{
long c;
c=(a%100-a%10)/10+a%10*100+(b%100-b%10)*100+b%10*10;
return c;
}
int main()
{int a,b;
long c;
printf("Input a,b:\n");
scanf("%d%d",&a,&b);
c=fun(a,b);
printf("The result is:%ld\n"逗带,c);
getch();
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在函猛拿数中可填入:衡丛
void fun(int a,int b,long *c)
{
int a1,a2;//a1存放a的个位数,a2存放a的十位数;
int b1,b2;//b1存放a的个位数,b2存放a的十位数;
a1=a%10;
a2=a/10;
b1=b%10;
b2=b/枝拦搭10;
*c=b2*1000+a1*100+b1*10+a2;
}
void fun(int a,int b,long *c)
{
int a1,a2;//a1存放a的个位数,a2存放a的十位数;
int b1,b2;//b1存放a的个位数,b2存放a的十位数;
a1=a%10;
a2=a/10;
b1=b%10;
b2=b/枝拦搭10;
*c=b2*1000+a1*100+b1*10+a2;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询