算法程序与设计

由用户输入一个数,构造相应的所有 N×N 阶的拉丁方阵(2≤N≤9),使方阵中的每一行和每一列中数字1到N只出现一次。如N=4时,其中一个拉丁方阵为:

#include<stdio.h>
int main()
{
	int i,j,k,t,N;
	scanf("%d", &N);
 
	for(j=0;j<N;j++)//某种情况的开头数字,即第 j 种情况
	{
		for(i=0;i<N;i++)//行数
		{
			t=(i+j)%N;
			for(k=0;k<N;k++)//一行N个计数
				printf("%d",(k+t)%N+1);//规律
			printf("\n");
		}
		//以上for循环是一种拉丁方阵情况
		printf("\n");
	}
 
	return 0;
}

一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。

#include<stdio.h>
int main()
{
    int a,m;
    scanf("%d",&a);
    if (a%2!=0)//2和4最小公倍数判断奇数
    {
        printf("0 0\n");
    }
    else if (a%4!=0)//判断鸡兔关系
    {
        printf("%d %d\n",a/4+1,a/2);//除以4仍有余数加1
    }
    else
    {
        printf("%d %d\n",a/4,a/2);
    }
return 0;
}

用c语言实现10`名裁判给某歌手打分(假定分数都为整数)。评分原则是去搞一个最高分,去掉一个最低分,剩下分发的平均值即为该歌手的最终得分。编写一个程序,每个裁判所给的分数由键盘输入,要求屏幕输出歌手的最终得分并按歌手成绩进行排序。

#include <stdio.h>
#include <limits.h> // 用于INT_MAX和INT_MIN

#define NUM_JUDGES 10 // 裁判数量

// 函数声明
void calculateAndSortScores(int scores[], int numJudges);

int main() {
    int scores[NUM_JUDGES]; // 存储10名裁判的分数
    int i;

    // 输入10名裁判的分数
    printf("请输入10名裁判的分数:\n");
    for (i = 0; i < NUM_JUDGES; i++) {
        scanf("%d", &scores[i]);
    }

    // 计算并排序得分
    calculateAndSortScores(scores, NUM_JUDGES);

    return 0;
}

// 计算并排序得分的函数
void calculateAndSortScores(int scores[], int numJudges) {
    int i, j, maxIndex, minIndex;
    int temp;
    float finalScore;

    // 找出最高分和最低分的索引
    maxIndex = minIndex = 0;
    for (i = 1; i < numJudges; i++) {
        if (scores[i] > scores[maxIndex]) {
            maxIndex = i;
        }
        if (scores[i] < scores[minIndex]) {
            minIndex = i;
        }
    }

    // 去掉一个最高分和一个最低分
    for (i = minIndex; i < numJudges - 1; i++) {
        scores[i] = scores[i + 1];
    }
    for (i = maxIndex; i < numJudges - 1; i++) {
        scores[i] = scores[i + 1];
    }

    // 计算剩余分数的平均值
    finalScore = 0;
    for (i = 0; i < numJudges - 2; i++) {
        finalScore += scores[i];
    }
    finalScore /= (numJudges - 2);

    // 输出最终得分
    printf("歌手的最终得分为:%.2f\n", finalScore);

    // 对所有歌手的最终得分进行排序(这里只有一个歌手,所以只输出一个得分)
    // 如果有多个歌手,可以在外部循环中调用这个函数,并在此处实现排序逻辑
}

已知 A,C 是4位完全平方数,B是一个4位数,且每一位的数字都相同。已知C=A-B,编程求出满足上述条件的所有 A,B,C组合。

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

// 函数用于检查一个数是否为完全平方数
int isPerfectSquare(int num) {
    int root = (int)sqrt(num);
    return root * root == num;
}

// 函数用于检查一个四位数是否所有位上的数字都相同
int isSameDigit(int num) {
    int firstDigit = num / 1000;
    while (num > 0) {
        if (num % 10 != firstDigit) return 0;
        num /= 10;
    }
    return 1;
}

int main() {
    int A, C, B;
    // 遍历所有可能的四位数完全平方数
    for (int i = 32; i <= 99; i++) { // 因为32^2 = 1024, 99^2 = 9801
        A = i * i;
        if (isPerfectSquare(A)) {
            // 遍历所有可能的B
            for (B = 1111; B <= 9999; B += 1111) { // B每一位数字都相同
                if (isSameDigit(B)) {
                    C = A - B;
                    if (isPerfectSquare(C)) { // 检查C是否为完全平方数
                        printf("A: %d, B: %d, C: %d\n", A, B, C);
                    }
                }
            }
        }
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值