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;
}
本文介绍了C++编程中的一些基础数学功能,如计算平方根、加密数据(包括数字加密和字符串加密)、判断同构数、数字奇偶性分析、级数求和、识别7的倍数和带7的数、寻找勾股数以及验证三角形构成。





