2004年江苏大学885代码题(含答案)

一、前言

提示:以下是博主自己写的代码,仅供参考,欢迎有兴趣的朋友们留言讨论呀

二、正文

1.第一题

在这里插入图片描述

#include<stdio.h>
void main() {
	int i = 0, n;
	while (1) {
		printf("请输入一个不多于5位的正整数:");
		scanf("%d", &n);
		if (n > 0 && n < 100000)break;
	}
	printf("\n原数为:%d\n", n);
	printf("逆序后为:");
	while (n != 0) {
		printf("%d", n % 10);
		n /= 10;
		i++;
	}
	printf("\n它的位数是:%d\n", i);
}

运行结果示例:
程序运行结果
手写版:

2.第二题

在这里插入图片描述
以10个字符为例

#include<stdio.h>
#define N 10
void sort();
char a[N];
void main() 
{
	int i;
	printf("请输入%d个字符\n", N);
	for (i = 0; i < N; i++)
		scanf(" %c", &a[i]);
	sort();
	printf("\n排序后为:\n");
	printf("%s\n", a);
}

void sort()//选择排序,从小到大
{
	int i, j, m;
	char t;
	for (i = 0; i < N - 1; i++)
	{
		m = i;
		for (j = i + 1; j < N; j++)
			if (a[m] > a[j])
				m = j;
		if (m != i)
		{
			t = a[i];
			a[i] = a[m];
			a[m] = t;
		}
	}
}

运行结果示例:
在这里插入图片描述
手写版:

3.第三题

在这里插入图片描述
以6个学生为例

//示例数据如下:
学生1 01 43 65 87 12 98.5
学生2 02 65 36 94 80 87
学生3 03 76 98 45 76 34
学生4 04 65 45 98 78 90
学生5 05 99 23 54 76 97
学生6 06 34 76 23 97 87
#include<stdio.h>
#define SN 6
#define CN 5
struct {
	char n[20];//姓名
	int id;//学号
	double g[CN];//各学科成绩
} s[SN];
void s_ave();//学生平均分
void g_ave();//各科平均分
void ave();//平均方差
double a[SN];//保存学生平均分
void main()
{
	int i, j;
	for (i = 0; i < SN; i++)
	{
		printf("请依次输入第%d个学生的信息:\n", i+1);
		scanf(" %s%d", s[i].n, &s[i].id);
		for (j = 0; j < CN; j++)
			scanf("%lf", &s[i].g[j]);
		printf("\n");
	}
	s_ave(); g_ave(); ave();
}

//学生平均分
void s_ave()
{
	int i, j;
	for (i = 0; i < SN; i++)
	{
		a[i] = 0;
		for (j = 0; j < CN; j++)
			a[i] += s[i].g[j];
		a[i] /= 5;
		printf("%s的平均分为:%.2lf\n", s[i].n, a[i]);
	}
}

//各科平均分
void g_ave()
{
	int i, j, max;
	double a;
	for (j = 0; j < CN; j++)
	{
		a = 0; max = 0;
		for (i = 0; i < SN; i++)
		{
			a += s[i].g[j];
			if (s[max].g[j] < s[i].g[j])
				max = i;
		}
		printf("第%d门课的平均分为%.2lf,最高分为:%s\n", j + 1, a / SN, s[max].n);
	}
}

//平均方差
void ave()
{
	int i;
	double y1 = 0, y2 = 0;
	for (i = 0; i < SN; i++)
	{
		y1 += a[i] * a[i];
		y2 += a[i];
	}
	y1 /= 10;y2 /= 10;
	y2 *= y2;
	printf("平均分方差为%.2lf\n", y1 - y2);
}

运行结果示例:
在这里插入图片描述
手写版:

4.第四题

在这里插入图片描述

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int prism(int n);
int main()
{
	int n, x;
	FILE *fp;
	if (!(fp = fopen("result.dat", "w")))
	{
		printf("cannot open the file!\n"); exit(0);
	}
	while (1)
	{
		printf("请输入一个大于4的偶数:");
		scanf("%d", &n);
		if (n > 4 && n % 2 == 0)break;
	}
	for (x = 2; x <= n - x; x++)
		if (prism(x) && prism(n - x))
			fprintf(fp, "%d=%d+%d\n", n, x, n - x);
	if (fclose(fp))
		printf("cannot close the file!\n");
	return 0;
}

int prism(int n)
{
	int i;
	for (i = 2; i < sqrt(n); i++)
		if (n%i == 0)
			return 0;
	return 1;
}

运行结果示例:
在这里插入图片描述
在这里插入图片描述
手写版:

→返回总目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值