2018USTC-SummerSchool-DS-TEST1

一、顺序编程
1.编程,要求用户以整数方式输入秒数(使用long或long long变量存储),然后以天、小时、分钟和秒的方式显示这段时间。
2.设计一个加密算法:用a代替z, 用b代替y, 用c代替x, ……,用z代替a。现要求输入一个字符,对其进行加密输出。

二、分支编程
3.从键盘输入年月日,判断输入的日期是否正确(要判断大小月,判断闰年)。如:
输入: 2018 13 32,输出:不正确
输入: 2018 2 29,输出:不正确
4. 公司要在电话线上传输数据,但担心电话被窃听。所有数据用四位整数传输,他们要求编写一个程序,将数据进行加密,使数据传输更安全。程序读取四位整数并加密如下:
将每个位换成该位与7的和并用10求模。然后交换第一位与第三位,交换第二位与第四位,并打印加密后的整数。再编写一个程序读取加密的四位敷,并解密成原先的四位数。


第一题 显示时间

要求用户以整数方式输入秒数(使用long或long long变量存储),然后以天、小时、分钟和秒的方式显示这段时间。

#include <stdio.h>
void main()
{
    long int t,d,h,m,s;
	printf("please enter seconds:\n");
	scanf("%lld",&t);
	d=t/(24*3600);
	h=(t-d*(24*3600))/3600;
	m=(t-d*24*3600-h*3600)/60;
	s=t%60;
	printf("%ld天 %ld时%ld分%ld秒",d,h,m,s);
	
}

第二题 加密算法

设计一个加密算法:用a代替z, 用b代替y, 用c代替x, ……,用z代替a。现要求输入一个字符,对其进行加密输出。

#include <stdio.h>
void main()
{

	char al;
	scanf("%c",&al);
	if(al>='a' && al<='z')
	
		printf("%c",'z'-al+'a');
	return 0;

	
}

第三题 判断日期

从键盘输入年月日,判断输入的日期是否正确(要判断大小月,判断闰年)。如:
输入: 2018 13 32,输出:不正确
输入: 2018 2 29,输出:不正确

#include <stdio.h>
int judgeyear(int n)
{
	if((n%4==0 && n%100!=0)||(n%400==0))
		return 1;
	else 
		return 0;
}


int main()
{
	int flag=0;
	int a[][2]={{1,31},{2,28},{3,31},{4,30},{5,31},{6,30},{7,31},{8,31},{9,30},{10,31},{11,30},{12,31}};
//	printf("请输入年 月 日,");
		int year,month,day;
	while(scanf("%d %d %d",&year,&month,&day)!=EOF)
	{
		if(judgeyear(year)==0)
		{
			if(month>=1 && month <=12)
			{
				if(day<=a[month-1][1])
					flag=1;
				
			}

		}
		else if(judgeyear(year))
		{
			if(month!=2 && month>=1 &&month <=12)
			{
					if(day<=a[month-1][1])
					flag=1;
				
			}
			else if(month==2)
			{
				if(day<=29)
					flag=1;
			}

		}
		if(flag==1)
			printf("正确");
		else
			printf("不正确");
	}
}

第四题 电话加密&解密

公司要在电话线上传输数据,但担心电话被窃听。所有数据用四位整数传输,他们要求编写一个程序,将数据进行加密,使数据传输更安全。程序读取四位整数并加密如下:
将每个位换成该位与7的和并用10求模。然后交换第一位与第三位,交换第二位与第四位,并打印加密后的整数。再编写一个程序读取加密的四位敷,并解密成原先的四位数。

#include <stdio.h>

int coder(int a)
{
	a=(a+7)%10;
	return a;
}

int decoder(int b)
{
	if(b<7)
	b=(b+10)-7;
	else
		b=b-7;
	return b;
}

int main()
{
	int num;
	int m,n,j,k;
	int code=0,decode=0;
	while(scanf("%d",&num)!=EOF)
	{
			
		m=num%10;
		n=(num/10)%10;
		j=(num/100)%10;
		k=num/1000;

	
	m=coder(m);
	n=coder(n);
	j=coder(j);
	k=coder(k);
		code=n*1000+m*100+k*10+j;
	if(n==0)
	{
			printf("加密输出:0%d\n",code);

	}
	else

	printf("加密输出:%d\n",code);
	


	m=decoder(m);
	n=decoder(n);
	j=decoder(j);
	k=decoder(k);
	decode=k*1000+j*100+n*10+m;
	printf("解密输出:%d\n",decode);
	}




}

猜你喜欢

转载自blog.csdn.net/m0_38040146/article/details/81368166
今日推荐