【C/PTA —— 10.函数1(课外实践)】

C/PTA ------ 10.函数1(课外实践)

  • 一.函数题
    • [6-1 符号函数](#6-1 符号函数)
    • [6-2 求排列数](#6-2 求排列数)
    • [6-3 求一个大于10的n位整数w的后n-1位的数,并作为函数值返回。](#6-3 求一个大于10的n位整数w的后n-1位的数,并作为函数值返回。)
    • [6-4 其右上三角(含主对角线)元素之和。](#6-4 其右上三角(含主对角线)元素之和。)
    • [6-5 字符串比较](#6-5 字符串比较)
    • [6-6 使用函数求素数和](#6-6 使用函数求素数和)
    • [6-7 使用函数输出水仙花数](#6-7 使用函数输出水仙花数)
  • 二.编程题
    • [7-1 寻找自守数](#7-1 寻找自守数)

一.函数题

6-1 符号函数

c 复制代码
int sign(int x)
{
    if (x > 0)
        return 1;
    else if (x == 0)
        return 0;
    else
        return -1;
}

6-2 求排列数

c 复制代码
double fact(int n)
{
    long long ret = 1;
    for (long long i = 1; i <= n; i++)
    {
        ret =ret * i;
    }
    return ret;
}

6-3 求一个大于10的n位整数w的后n-1位的数,并作为函数值返回。

c 复制代码
#include<math.h>
int fun(int w)
{
	int sum = 0;
	int count = 0;
	int num = w;
	while (num)
	{
		num /= 10;
		count++;
	}
	sum = w % (int) (pow(10, count - 1));
	return sum;
}

6-4 其右上三角(含主对角线)元素之和。

c 复制代码
int fun(int a[3][3])
{
    int sum1 = 0, sum2 = 0;
    for (int i = 0; i < 3; i++)
    {
        for (int j = i; j < 3; j++)
        {
            sum1 += a[i][j];
        }
    }
    return sum1;
} 

6-5 字符串比较

c 复制代码
int fun(char a[], char b[])
{
	if (strcmp(a, b) < 0)
		return -1;
	else if (strcmp(a, b) > 0)
		return 1;
	else
		return strcmp(a, b);
}

6-6 使用函数求素数和

c 复制代码
int prime(int p)
{
    int count = 0;
    if(p==1)
        return 0;
    for (int i = 2; i <= p; i++)
    {
        if (p % i == 0)
            count++;
    }
    if (count == 1)
        return 1;
    else
        return 0;
}
int PrimeSum(int m, int n)
{
    int sum = 0;
    for (int i = (m<=n?m:n); i <= (n>=m?n:m); i++)
    {
        if (prime(i) == 1)
            sum += i;
    }
    return sum;
}

6-7 使用函数输出水仙花数

c 复制代码
#include<math.h>
int narcissistic(int number)
{
    int count = 0;
    int sum1 = 0;
    int num = number;
    while (number)
    {
        number /= 10;
        count++;
    }
    int sum = 0;
    number = num;
    while (number)
    {
        sum1 = number % 10;
        sum += (int)(pow(sum1, count));
        number /= 10;
        sum1 = 0;
    }
    if (num == sum)
        return 1;
    else
        return 0;
}
void PrintN(int m, int n)
{
    for (int i = (m <= n ? m : n)+1; i < (n >= m ? n : m); i++)
    {
        if (narcissistic(i) == 1)
        {
            printf("%d\n", i);
        }
    }
} 

二.编程题

7-1 寻找自守数

c 复制代码
#include<stdio.h>
int ZISHOUnum(int p)
{
	int num = 0, count = 0;
	num = p * p;
	while (p != 0)
	{
		if (p % 10 != num % 10)
			return 0;
		p /= 10;
		num /= 10;
	}
	return 1;
}

int main()
{
	int n = 0, m = 0;
	int count = 0;
	scanf("%d %d", &n, &m);
	for (int i = n; i <= m; i++)
	{
		if (ZISHOUnum(i))
		{
			count++;
			printf("%d\n", i);
		}
			
	}
	if (count == 0)
	{
		printf("None\n");
	}
	return 0;
}
相关推荐
老黄编程7 分钟前
点云NARF关键点原理、算法描述及参数详细描述
算法·点云·narf特征点
CoovallyAIHub12 分钟前
NeurIPS 2025时间检验奖:10年之后再谈Faster R-CNN
深度学习·算法·计算机视觉
口袋物联13 分钟前
设计模式之单例模式在 C 语言中的应用(含 Linux 内核实例)
c语言·单例模式·设计模式
CoovallyAIHub25 分钟前
1024层网络让强化学习性能飙升50倍,NeurIPS 2025最佳论文揭示深度scaling的力量
深度学习·算法·计算机视觉
adfass26 分钟前
桌面挂件时钟/多功能时钟C++
开发语言·c++·算法
一只乔哇噻1 小时前
java后端工程师+AI大模型进修ing(研一版‖day56)
java·开发语言·学习·算法·语言模型
小熳芋1 小时前
排序链表- python-非进阶做法
数据结构·算法·链表
zore_c1 小时前
【C语言】数据在内存中的存储(超详解)
c语言·开发语言·数据结构·经验分享·笔记
O***Z6161 小时前
【语义分割】12个主流算法架构介绍、数据集推荐、总结、挑战和未来发展
算法·架构
程序员-周李斌1 小时前
ArrayList 源码深度分析(基于 JDK 8)
java·开发语言·数据结构·算法·list