编程11-20

本文介绍了C++编程中的一些基础数学功能,如计算平方根、加密数据(包括数字加密和字符串加密)、判断同构数、数字奇偶性分析、级数求和、识别7的倍数和带7的数、寻找勾股数以及验证三角形构成。
摘要由CSDN通过智能技术生成

11.输出平方根

从键盘输入一个整数 x ,输出其平方根(为整数)。
若输入数大于 1000 或小于等于 0 ,则输出 0 ,并继续接受下一个输入直至小于等于 1000

sqrt函数:

sqrt使用时大多需要要强制类型转化,因为sqrt只支持double和float类型
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
	double x;
	scanf("%lf", &x);
	while (x > 1000 || x <= 0) {
		printf("0\n");
		scanf("%lf", &x);
	}
	printf("%d", (int)sqrt(x));
	return 0;
}

12.输出星号

从键盘输入 3 个整数(三个数取值均在闭区间 [ 1,10] , 每读取一个值,程序打印出该值个数的英文星号( * )
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
	int n;
	for (int j = 0; j < 3; j++) {
		scanf("%d", &n);
		for (int i = 0; i < n; i++) {
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

13.电话数据加密

某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:
1. 每位数字都用自身加 5 后的和除以 10 的余数代替,如 1 6 代替, 8 3 代替;如 3768 就转换
8213
2. 再将第一步生成的数字的第一位和第四位交换,第二位和第三位交换。 如 8213 转换为
3128 ,即为最终的加密密码。
编写程序完成数据的加密。
方法一:用数组
方法二:用字符串
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
	int a[4];
	int n;
	scanf("%d", &n);
	for (int i = 3; i >= 0; i--) {
		a[i] = n % 10;
		n /= 10;
		a[i] = (a[i] + 5) % 10;
	}
	for (int i = 3; i >= 0; i--) {
		printf("%d", a[i]);
	}
	return 0;
}
#include <stdio.h>
int main(){
 char a[5];
 scanf("%s", a);//字符串输入
 for (int i = 0; i < 4; i++){
 (a[i] > '4') ? (a[i] -= 5) : (a[i] += 5);
 //假如该位数字>4,则字符-5,即前移5位;否则,字符+5,后移5位
 }
 for (int i = 3; i >= 0; i--){
 printf("%c", a[i]);
 }//逆序输出
 return 0;
}

14.判断同构数

找出整数 m 到整数 n ( 闭区间)之间的所有同构数( m<n )。
说明:一个正整数 x ,如果是它平方数的尾部,则称 x 为同构数。例如, 6 是其平方数 36 的尾部,
25 是其平方数 625 的尾部,那么 6 25 都是同构数。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
	int m, n;
	int flag2 = 0;
	scanf("%d%d", &m, &n);
	for (int i = m; i < n + 1; i++) {
		int sq = i * i;
		int a = i;
		int flag1 = 1;//相同位是否相同,即是否为同构数
		while (a != 0) {
			if (sq % 10 == a % 10) {
				sq /= 10;
				a /= 10;
			}
			else {
				flag1 = 0;
				break;
			}
		}//判断
		if (flag1 == 1 && flag2 == 0) {
			printf("%d", i);
			flag2 = 1;
		}
		else if (flag1 == 1 && flag2 == 1) {
			printf(" %d", i);
		}//输出
	}
	return 0;
}

15.判断正整数各位数字之和的奇偶性

编程判断任意一个正整数各位数字之和是奇数还是偶数。
如果和是奇数输出 1 ,偶数输出 0
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
 int x, sum = 0;//必须初始化sum为0
 scanf("%d", &x);
 while (x != 0)
 {
 sum += x % 10;
 x /= 10;
 }//sum为各位数之和
 printf("%d", sum % 2);//sum为奇数,sum%2=1;为偶数,sum%2=0
 return 0;
}

16.求级数及前n项的和

编程求以下级数前 n 项之和:
s=1-1/3+1/5-1/7+1/9-...
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main() {
	double sum = 0;
	int n;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		sum += 1.0 / (2 * i - 1) * pow(-1, i + 1);
	}
	printf("%g", sum);
	return 0;
}

17.找出7的倍数和带7的整数

编写程序,找出 [m,n] 范围内是 7 的倍数或带 7 的全部正整数。 其中,m n 为正整数。

‘三元运算符’的用法:

1.需要加空字符占位(否则编译不通过)

2.每一个‘元’中的多个句子用逗号隔开

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(){
	int m, n;
	scanf("%d%d", &m, &n);
	for (; m != n + 1; m++){//当m=n+1时跳出循环
		(m % 7 == 0) ? printf("%d是7的倍数\n", m) : 0;
		for (int a = m; a != 0; a = a / 10){
			(a % 10 == 7) ? printf("%d是带7的数\n", m), a = 0 : 0;
		}
	}
	return 0;
}

18.勾股数

若三个正整数 a,b,c 满足 a^2+b^2=c^2 ,则它们是一组勾股数。 (^2 表示平方, a^ 表示 a 的平方 )
编写程序,求给定区间 [m,n] 中的勾股数的数量 ( 设一组勾股数满足 a<b<c)
例如 [ 1,10] 中的勾股数有 ( 3,4,5) ( 6,8,10) ,则 [ 1,10] 中勾股数的数量为 2
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
	int num = 0;
	int m, n;
	scanf("%d%d", &m, &n);
	for (int i = m; i <= n-2; i++) {
		for (int j = i + 1; j <= n - 1; j++) {
			for (int k = j + 1; k <= n; k++) {
				if (i * i + j * j == k * k) {
					num++;
				}
			}
		}
	}
	printf("%d", num);
	return 0;
}

19.计算各位数字的平方和

输入任意一个正整数,计算各位数字的平方和。
如: 1234 则:计算 1 ∗ 1 + 2 ∗ 2 + 3 ∗ 3 + 4 ∗ 4 = 30
for循环结构后的括号内的变量会随循环结束而被释放
#include <stdio.h>
int main()
{
 int a, s = 0;
 scanf("%d", &a);
 for (; a != 0; a = a / 10)
 {
 int b = a % 10;//某一位的数
 s = s + b * b;
 }
 printf("%d", s);
 return 0;
}

20.三边能否构成三角形

编写程序检验由三边能否构成三角形,检验方法是任意两边和均要大于第三边。
输入 : 三边长度
输出:如果可以构成三角形,输出 YES ,否则输出 ERROR DATA
#include<stdio.h>
int main(){
 float a, b, c;
 scanf("%f %f %f", &a, &b, &c);//注意采用float或者double类型
 if (a + b > c && a + c > b && b + c > a){
  printf("YES");
 }
 else{
  printf("ERROR DATA");
 }
 return 0;
}

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值