月末考核复习 国庆题二

总结:冒泡排序 还是没有上强度 只接触到了一个简单算法

国庆题二

一、判断回文数

输入一串字符,字符个数不超过100,且以"."结束。 判断它们是否构成回文。

输入

输入只有一行,包括一串字符. 

样例输入 
12321.
输出

输出只有一行.TRUE 或者FALSE 

样例输出 
TRUE

代码实现

#include <string.h>
char hui(char a[]) {
	int i, j;
	int len;

	len = strlen(a);

	for (i = 0; i < len / 2; i++) {
		if (a[i] != a[len - i - 1])
			return 0;
	}
	return 1;
}
int main()
{
	char a[100];
	scanf("%s", &a);

	char h = hui(a);

	if (h)
		printf("TRUE");
	else
		printf("FALSE");

	return 0;
}

 经验总结

%s,对循环的灵活应用。

二、中位数(冒泡排序)

中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数).
给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数,意思就是直接舍掉0.5)

输入

该程序包含多组测试数据,每一组测试数据的第一行为N,代表该组测试数据包含的数据个数,1<=N<=10000.
接着N行为N个数据的输入,N=0时结束输入

样例输入 
1
468
15
501
170
725
479
359
963
465
706
146
282
828
962
492
996
943
0
输出

输出中位数,每一组测试数据输出一行

样例输出 
468
501

代码实现 

int a[1000];
void bbsort(int n, int a[]) {
	for (int i = 0; i < n - 1; i++) {
		for (int j = 0; j < n - 1 - i; j++) {
			if (a[j] > a[j + 1]) {
				int temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
			}
		}
	}
}
void read(int a[]) {
	for (int i= 0;; i++) {
		scanf("%d", &a[i]);
		if (a[i] == 0)
			break;
	}
}
void print(int n, int a[]) {
	int result = (n % 2) == 0 ? (a[n / 2] + a[n / 2 - 1]) / 2 : a[n / 2];
	printf("%d", result);
}
int main() {
	int n;
	scanf("%d", &n);
	read(a);
	bbsort(n,a);
	print(n, a);
}

经验总结

冒泡排序

开始有模块化编程的意识

三、打印日期

给出年分m和一年中的第n天,算出第n天是几月几号。(考虑到有闰年:①能被400整除②或能被4整除,并且不能被100整除)

输入

输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。

样例输入 
2013 60
2012 300
2011 350
2000 211
输出

可能有多组测试数据,对于每组数据,按 yyyy-mm-dd的格式将输入中对应的日期打印出来。

样例输出 
2013-03-01
2012-10-26
2011-12-16
2000-07-29

代码实现 

int run(int y) {
	return (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0);
}
int main()
{
	int a[2][13] = { {0,31,28,31,30,31,30,31,31,30,31,30,31},
				{0,31,29,31,30,31,30,31,31,30,31,30,31} };


	int y, m, d;
	int i;

	while (scanf("%d%d", &y, &d) != EOF) {
		int r = run(y);
		for (i = 1; i <= 12; i++) {
			if (d <= a[r][i])
				break;
			else
				d = d - a[r][i];
		}
		printf("%04d-%02d-%02d\n", y, i, d);
	}

	return 0;
}

经验总结

 开拓了二维数组使用的视野 格式化字符输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值