当前位置: 首页 > news >正文

c语言基础编程入门练习题(三)

[编程入门]求和训练

题目描述

求以下三数的和,保留2位小数 1~a之和 1~b的平方和 1~c的倒数和

输入格式

a b c

输出格式

1+2+…+a + 12+22+…+b^2 + 1/1+1/2+…+1/c

样例输入
100 50 10
样例输出
47977.93
参考代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
// 函数声明
double sum_a(double n);
double sum_b(double n);
double sum_c(double n);

int main() {
    double a, b, c;
    scanf("%lf %lf %lf", &a, &b, &c);
    double sum_he = sum_a(a) + sum_b(b) + sum_c(c);    // 计算总和
    printf("%.2lf\n", sum_he);    // 打印总和
    return 0;
}

// 计算从1到n的自然数之和
double sum_a(double n) {
    double sum = 0;
    sum = (n * (n + 1)) / 2;
    return sum;
}
// 计算从1到n的平方和
double sum_b(double n) {
    double sum = 0;
    for (double i = 1; i <= n; i++) {
        double temp = i * i;
        sum = sum + temp;
    }
    return sum;
}
// 计算从1到n的倒数和
double sum_c(double n) {
    double sum = 0;
    for (double i = 1; i <= n; i++) {
        double temp = 1 / i;
        sum = sum + temp;
    }
    return sum;
}

[编程入门]水仙花数判断

题目描述

打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。 例如:153是一个水仙花数,因为153=13+53+33

输入格式

输出格式

输出每一个水仙花数,一个数占一行

样例输入
样例输出
参考代码
#define _CRT_SECURE_NO_WARNINGS

//分割出每一位数,求立方和,相加跟原数比较
//注意刷新和(res),数组序号i
//参考代码 :

#include <stdio.h>
int main() {
    long x;
    int a[20];
    int i, j, k;
    long res;

    for (x = 2; x < 1000; x++) {
        long t = x;
        i = 0; // 重置 i
        res = 0; // 重置 res
        // 将数字分解成各个位并存入数组
        while (t != 0) {
            a[i] = t % 10;
            t = t / 10;
            i++;
        }
        // 计算各位数字的立方和
        //for (j = i - 1; j >= 0; j--)
        for (j = 0; j <= i-1; j++) 
        {
            res += a[j] * a[j] * a[j]; 
        }
        // 检查是否满足条件
        if (res == x) {
            printf("%ld\n", x);
        }
    }
    return 0;
}
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <math.h>

int main() {
    // 遍历所有三位数
    for (int num = 100; num <= 999; num++) {
        int hundreds = num / 100;     // 获取百位数字
        int tens = (num / 10) % 10;   // 获取十位数字
        int ones = num % 10;          // 获取个位数字

        // 计算各位数字的立方和
        int sum = pow(hundreds, 3) + pow(tens, 3) + pow(ones, 3);

        // 如果立方和等于该数字,输出该数字
        if (sum == num) {
            printf("%d\n", num);
        }
    }

    return 0;
}

[编程入门]有规律的数列求和

题目描述

有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13… 求出这个数列的前N项之和,保留两位小数。

输入格式

N

输出格式

数列前N项和

样例输入
10
样例输出
16.48
参考代码
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main() {
	int N;
	double fz = 2.0, fm = 1.0;
	double an=0.0,sum=0.0;
	scanf("%d", &N);
	for (int i = 1; i <= N; i++) {  //循环从第二项开始计算
		an = fz / fm;
		double temp = fz; //定义临时变量存储分子
		fz = fz + fm;
		fm = temp;
		sum += an;
	}
	printf("%.2lf", sum);
	return 0;
}

[编程入门]自由下落的距离计算

题目描述

一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数

输入格式

M N

输出格式

它在第N次落地时反弹多高?共经过多少米? 保留两位小数,空格隔开,放在一行

样例输入
1000 5
样例输出
31.25 2875.00
参考代码
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <math.h>

int main() {
	double M;   //高度落下
	int N;      //N次落地
	double q = 0.5;   //公比q
	double an,sn;
	scanf("%lf %d", &M, &N);
	an = M * pow(q, N );
	sn = (2*(M * (1 - pow(q, N))) / (1 - q))-M;  //计算公式2倍sn减an
	printf("%.2lf %.2lf\n", an, sn);
	return 0;
}
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <math.h>

void calc(double M, int N) {
    double height = M / pow(2, N );// 第 N 次反弹的高度
    double distance = M;  // 初始下落的距离
    double current_fall = M / 2;  // 第一次反弹后下落的距离
    // 循环计算
    for (int i = 1; i < N; i++) {
        distance += 2 * current_fall;  // 每次反弹和下落的距离
        current_fall /= 2;  // 下次反弹后的下落高度减半
    }
    printf("%.2f %.2f\n", height, distance);    // 输出保留两位小数
}
int main() {
    double M;
    int N;
    scanf("%lf %d", &M, &N);  // 输入 M 和 N
    calc(M, N);    // 计算并输出结果
    return 0;
}

[编程入门]猴子吃桃的问题

题目描述

猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。

输入格式

N

输出格式

桃子总数

样例输入
10
样例输出
1534
参考代码
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <math.h>

int main() {
    int N;  //天数
    int num=1;//最后桃子个数
    scanf("%d", &N);
    for (int i = 1; i <= N-1; i++) {
        num = (num + 1) * 2;
    }
    printf("%d", num);
    return 0;
}

[编程入门]筛选N以内的素数

题目描述

用简单素数筛选法求N以内的素数。

输入格式

N

输出格式

2~N的素数

样例输入
100
样例输出
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
参考代码
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdbool.h>   //bool
#include <math.h>


// 判断一个数是否是素数
bool is_prime(int n) {
    if (n <= 1) {
        return false; // 0 和 1 不是素数
    }

    //for (int i = 2; i * i <= n; i++) { // 只需要判断到 sqrt(n)
    //只需要判断 n 是否能被从 2 到 √n 范围内的数整除。
    // 如果 n 能够被某个数 i(2 ≤ i ≤ √n)整除,那么 n 就不是素数;
    for (int i = 2; i <= sqrt(n); i++) { // 只需要判断到 sqrt(n)
        if (n % i == 0) {
            return false; // 如果能被整除,则不是素数
        }
    }
    return true; // 否则是素数
}

void print_su(int N) {

    for (int i = 2; i <= N; i++) {
        if (is_prime(i)) {
            printf("%d\n", i); // 输出素数
        }
    }
    printf("\n");
}

int main() {
    int N;
    // 输入 N
    scanf("%d", &N);
    // 打印 N 以内的素数
    print_su(N);

    return 0;
}

[编程入门]选择排序

题目描述

用选择法对10个整数从小到大排序。

输入格式

输入10个无序的数字

输出格式

排序好的10个整数

样例输入
4 85 3 234 45 345 345 122 30 12
样例输出
3
4
12
30
45
85
122
234
345
345
参考代码
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

void selection_sort(int arr[], int n) {
    int i, j, minIndex, temp;

    // 遍历整个数组
    for (i = 0; i < n - 1; i++) {
        minIndex = i;  // 假设当前元素是最小的

        // 在未排序部分中找到最小元素
        for (j = i + 1; j < n; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;  // 更新最小元素的索引
            }
        }

        // 如果 minIndex 发生变化,则交换最小元素与当前元素
        if (minIndex != i) {
            temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    }
}

void print_array(int arr[], int n) {
    for (int i = 0; i < n; i++) {
        printf("%d\n", arr[i]);
    }
    printf("\n");
}

int main() {
    int arr[10];
    int n = 10;

    for (int i = 0; i < n; i++) {   // 输入 10 个整数
        scanf("%d", &arr[i]);
    }

    selection_sort(arr, n);    // 使用选择排序进行排序

    print_array(arr, n);    // 输出排序后的数组

    return 0;
}

[编程入门]最大公约数与最小公倍数

题目描述

输入两个正整数m和n,求其最大公约数和最小公倍数。

输入格式

两个整数

输出格式

最大公约数,最小公倍数

样例输入
5 7
样例输出
1 35
参考代码
#include <stdio.h>

// 函数声明
int max(int a, int b);// 求最大公约数的函数实现(使用欧几里得算法)
int min(int m, int n, int max_value);// 求最小公倍数的函数实现

int main() {
    int m, n;

    scanf("%d %d", &m,&n);  // 输入两个正整数
    int max_value = max(m, n);    // 计算最大公约数
    int min_value = min(m, n, max_value);    // 计算最小公倍数
    printf("%d %d\n", max_value, min_value);
    return 0;
}

int max(int a, int b) {
    while (b != 0) {     // 求最大公约数的函数实现(使用欧几里得算法)
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

int min(int m, int n, int max_value) {
    return (m * n) / max_value;   // 求最小公倍数的函数实现
}

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int max_gy(int a, int b){  //计算最大公约数
	int c=1; //while 循环中要赋值c,切c不能等于0
	while (c != 0) {   
		c= a % b;
		a = b;
		b = c;
	}
	return a;
}
int min_gb(int m, int n) {
	int gb;
	gb = (m * n) / max_gy(m, n);
	return gb;
}

int main() {
	int m, n; 
	scanf("%d %d", &m, &n);
	printf("%d %d", max_gy(m, n), min_gb(m, n));
	return 0;
}

[编程入门]矩阵对角线求和

题目描述

求一个3×3矩阵对角线元素之和。

输入格式

矩阵

输出格式

主对角线 副对角线 元素和

样例输入
1 2 3
1 1 1
3 2 1
样例输出
3 7
参考代码
#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main() {
	int arr[3][3]; 
	int n = 3;
	int sum1 = 0, sum2=0;  //定义主、副对角线
	for (int i = 0; i < n; i++) {   // 
		for (int j = 0; j < n; j++) {
			scanf("%d", &arr[i][j]);
		}
	}

	for (int i = 0; i < n; i++) {    
		sum1 += arr[i][i];
		sum2 += arr[2 - i][i];
	}
	printf("%d %d\n", sum1,sum2);
	return 0;
}

相关文章:

  • 工欲善其事必先利其器————idea插件
  • 11_JavaScript_字符串方法+数学方法
  • react中防止数据多大并需要二次加工处理进行单线程转多线程webworker优化处理(不借助react-webworker)
  • Python Sanic面试题及参考答案
  • 东软鸿蒙C++开发面经
  • 网络华为HCIA+HCIP 防火墙
  • VLAN综合实验实验报告
  • git的进阶使用
  • Spring Boot JSON序列化深度管控:忽略指定字段+Jackson扩展策略破解双向实体循环引用问题
  • Linux -- 进程间通信(IPC)-- 进程间通信、管道、system V 共享内存、system V 消息队列、责任链模式 、system V 信号量
  • AI与数据的双向奔“赋”
  • 超融合服务器与普通服务器的具体区别
  • 226.翻转二叉树
  • ubuntu20.04 修改输入法设置后 界面卡死终端乱码 解决方法
  • 23中设计模式-迭代器(Iterator)设计模式
  • Netty源码—Pipeline和Handler(二)
  • Day39 | 724. 寻找数组的中心下标、34. 在排序数组中查找元素的第一个和最后一个位置、922. 按奇偶排序数组 II、35. 搜索插入位置
  • 如何用腾讯云建站做好一个多语言的建筑工程网站?海外用户访问量提升3倍!分享我的经验
  • 加新题了,MySQL 8.0 OCP 认证考试 题库更新
  • 通信系统的性能指标
  • 青海企业网站开发定制/夸克搜索引擎入口
  • 威联通231p做网站/单页应用seo如何解决
  • 比较好用的免费素材网/郑州seo外包服务
  • 网站建设要具备那些/西安百度推广联系方式
  • 网站制作真人游戏娱乐平台怎么做/如何设计推广方案
  • 网站 用什么语言/360网站推广客服电话