C语言习题答案【5】(仅参考)

1051: 反转数

题目描述:

给定一个整数,请将该数各个数位上的数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。

输入

-690

输出

-96

示例

#include<iostream>
#include<math.h>
using namespace std;
int main() {
	int   oldNumber, newNumber = 0;
	cin>>oldNumber;//123
	while(oldNumber != 0) {
		newNumber *= 10;//0  30
		newNumber += oldNumber % 10;//3
		oldNumber /= 10;//12
	}
	cout<<newNumber<<endl;
	return 0;
}

1052: 礼物数目

题目描述:

小明买了许多圣诞礼物准备用于班级活动,回家后感觉太累了,便让机器人小灵帮忙数一下礼物一共有多少份。但是小灵不喜欢数字4,因此每次数到4时便跨过该数。例,若小灵数到339时,下一份礼物小灵就会数350。

输入

55

输出

40

示例

#include<iostream>
#include<math.h>
using namespace std;
int main() {
	int num,nump,p,i,total=0;
	cin>>num;//小灵给出的礼物的份数
	if(num<1 && num>1000) return 0;
	nump=num;
	while(true) {
		p = nump % 10;
		if(p == 4) {
			return 0;
		}
		if(p == 0) {
			break;
		}
		nump/=10;
	}
	for(i=0; i<num; i++) {
		if((i%10 == 4)||(i/10%10 == 4)||(i/100 == 4)) {
			continue;
		}
		total++;

	}
	cout<<total<<endl;//输出实际数字
	return 0;
}
1053: 分解质因数

题目描述:

分解质因数。

输入

36

输出

2*2*3*3

示例

#include<iostream>
#include<math.h>
using namespace std;
int main() {
	int num,i=2;
	cin>>num;
	for(i=2; i<=num; i++) {
		while(num!=i) {
			if(num%i==0) {
				printf("%d*",i);
				num/=i;
			} else break;
		}
	}
	printf("%d\n",num);//最后一个数必是除后的本身
	return 0;
}

1054: 求a+aa+aaa+…aa…a(n个a)

题目描述:

输入n和a,求a+aa+aaa+…aa…a(n个a),如当n=3,a=2时,2+22+222=246。

输入

3 2

输出

246

示例

#include<iostream>
#include<math.h>
using namespace std;
int main() {
	int n,a,i,sum=0,aa; 
	cin>>n>>a;
	if((n>10&&n<=0) ||(a>10&&a<=0))	return 0;
	aa=a;
	for(i=1; i<=n; i++) {
		sum+=a;
		a=a*10+aa;
	}
	cout<<sum<<endl;
	return 0;
}
1055: 零花钱

题目描述:

妈妈给了小明m元零花钱,为了鼓励小明节约,说如果小明每天只消费1元,每花k元就可以得到1元额外奖励,如果听妈妈的话小明最多可以花多少天?

输入

4 3

输出

5

示例

#include<iostream>
#include<math.h>
using namespace std;
int main() {
	int  m,k,total=0 ;
	cin>>m>>k;
	if (k<2 || k>m || m>1000) return 0;
	while(m--) {
		total++;
		if(total % k==0)
		m++;
	}
	cout<<total<<endl;
	return 0;
}
1056: n!的最高位

题目描述:

输入一个正整数n。输出n!的最高位上的数字。 

输入

1000

输出

4

示例

#include<iostream>
#include<math.h>
using namespace std;
int main() {
	int  m,k,total=0 ;
	cin>>m>>k;
	if (k<2 || k>m || m>1000) return 0;
	while(m--) {
		total++;
		if(total % k==0)
		m++;
	}
	cout<<total<<endl;
	return 0;
}
1057: 小车位置

题目描述:

        有一辆智能小车,最初(时间为0)的位置为(0,0),我们想知道它最后的位置。小车以每小时10公里的速度向北移动(北为y轴正向,东为x轴正向)。小车会收到一系列依照时间戳记排序的命令,1表示“向左转”,2表示“向右转”,3表示“停止”。每个命令的前面有一个时间戳记,所以知道该命令是何时发出的。最后一个命令一定是“停止”。另外假设,这辆小车非常灵活,它可以在瞬间转弯。
        例,小车在时间为5时收到一个“向左转”的命令1,在时间10收到一个“向右转”的命令2,在时间15收到一个“停止”的命令3。那么在最后时间15时,小车的位置将在(-50,100)。程序只要求输出小车最后的位置,第一个整数是x坐标,第二个整数是y坐标。

输入

5 1
10 2
15 3

输出

-50 100

示例

#include<iostream>
#include<math.h>
using namespace std;
int main() {
	int x=0,y=0;//初始化小车位置(0,0)
	int time,command,w=0,n=0;//command为命令,time是时间
	//n为决定车头朝向,0为北,1为东,2为南,3为西;
	//w为计时器,记录上次的时间,以此计算间隔时长
	while(scanf("%d %d",&time,&command),command!=0) { //键盘输入时间以及命令

		//要保证n始终在0-3之间
		switch(n) {
			case  0:
				y+=10*(time-w);
				break;
			case  1:
				x+=10*(time-w);
				break;
			case  2:
				y-=10*(time-w);
				break;
			case  3:
				x-=10*(time-w);
				break;
		}
		if(command==3)  break;//如果命令是3,停止
		else if(command==1)	n=n-1;  //如果命令是1,向左转,n-1
		else if(command==2)	n=n+1;	//如果命令是2,向右转,n+1
		n=(n+4)%4;//对4取模改变方向,确保范围0~3
		w=time;//w记录上次的时间

	}
	printf("%d %d",x,y);//输出小车的横坐标和纵坐标
	return 0;
}
1058: 乘积计算

题目描述:

做作业的时候,邻座的小朋友问你:“五乘以七等于多少?”你应该不失礼貌地微笑着告诉他:“五十三”。本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积。【注意前导0不要输出。】

输入

50 7

输出

53

示例

#include<iostream>
#include<math.h>
using namespace std;
int main() {
	int a ,b,sum=0;
	while(scanf("%d %d",&a,&b),a<1000,b<1000) {
		sum= a*b*10;
		while(sum>0) {
			sum=sum/10;
			int g=sum%10;
			if(g==0) {
				continue;
			}
			cout<<g;
		}
		break;
	}
	return 0;
}
1059: 两个数的最大公约数

题目描述:

输入2个正整数a,b,求a与b的最大公约数。

输入

6 15

输出

3

示例

#include<iostream>
#include<math.h>
using namespace std;
int main() {
	int a = 0,b = 0;
	cin>>a>>b;
	while((a-b) != 0) {
		if(a>b)
			a = a-b;
		else
			b = b-a;
	}
	printf("%d\n", b);
	return 0;
}

1060: 两个数的最小公倍数

题目描述:

正整数a和正整数b的最小公倍数是指能被a和b整除的最小的正整数值,设计一个算法,求输入a和b的最小公倍数。

输入

5 3

输出

15

示例

#include<iostream>
#include<math.h>
using namespace std;
int main() {
    int x,y,z = 0,sum;
    cin >> x >> y; 
    sum = x*y; 
    while (y != 0) {
        z = x % y; 
        x = y;
        y = z;
    } 
    cout<<sum/x<<endl; 
    return 0; 
}

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小源同学r

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值