第四次测试

                                 第四次测试

1178  problem A :正弦和余弦

Description

输入一个正整数n,输出n度的正弦、余弦函数值。注意调用正余弦函数,要加#,函数参数为弧度。

Input

输入一个正整数(不大于10000)

Output

分2行分别输出n度的正弦和余弦函数值,保留2位小数

Sample Input

90

Sample Output

1.00
0.00

Source


一:源代码

#include<stdio.h>
#include<math.h>
#define PI acos(-1)
int main()
{
	int n;
	double a,b;
	scanf("%d",&n);
	a=sin(PI*n/180);
	b=cos(PI*n/180);
	printf("%.2f\n",a);
	printf("%.2f\n",b);
        return 0;

}


二:结果截图




三:思路和感受

这个题目只需要通过<math.h>头文件来运用sin和cos函数即可,用%.2f来保留2位小数。用

#define PI acos(-1)这个方式来去π的值已经很常见。 

这个题目主要是要求掌握用角度求余弦和正弦的公式。


1179 problem B:判断是否闰年

Description

输入年份,判断是否闰年

Input

输入一个整数n表示年份如果是闰年,输出yes,否则输出no

Output

如果是闰年,输出yes,否则输出no

Sample Input

2000

Sample Output

yes

Source


一:源代码

#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
	if((n%4==0&&n%100!=0)||n%400==0)printf("yes\n");
	else
		printf("no\n");
	return 0;
}


二:结果截图



三:思路和感受

这个题目就是以前用学C的时候判断闰年最基本的方法。



1180 problem C :求阶乘

Description

输入一个正整数n(n<10),计算它的阶乘

Input

输入一个正整数n(n<10)

Output

输出n的阶乘

Sample Input

3

Sample Output

6

Source


一:源代码

#include<stdio.h>
int main()
{
	int n,i,s=1;
	scanf("%d",&n);
	if(n<10)
	{
    for(i=n;i>0;i--)
		s=s*i;
	printf("%d\n",s);
	}
	return 0;
}

二:结果截图



三:思路和感受

c中简单的求阶乘。



1181 problem D :矩阵转置

Description

现要求你把一个矩阵行列转置后输出,注意行数和列数可能不相同的。

Input

多组测试数据,每组测试数据先在一行输入n 和m ,表示这个矩阵的行数和列数(1 < n,m <= 10) 
然后是n行m列的一个矩阵

Output

对于每组测试数据输出转置后的矩阵

Sample Input

3 2
1 2
3 4
5 6

Sample Output

1 3 5
2 4 6

Source



一:源代码

#include<stdio.h>

int main()
{
    int m,n,a[10][10],i,j;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
			for(i=0;i<n;i++)
			{
				for(j=0;j<m;j++)
			scanf("%d",&a[i][j]);
			}
		if((1<n&&n<=10)&&(1<m&&m<=10))
		{
		       	for(i=0;i<m;i++)
			{
				for(j=0;j<n;j++)
				{
					printf("%d ",a[j][i]);
				if(j==n-1)printf("\n");
				}
			}
				
			

		}
	}
	return 0;
}

二:结果截图



三:思路和感受

这个题目倒是废了点时间,之前没用数组,结果发现无法储存数字,后来运用之后,printf("%d ",a[j][i]);这一句后面的空格没有加,输出格式有问题;之后这一句,if(j==n-1)printf("\n");没有加,也不让过。

在第二次输入的时候,之前的m,n的位置写反了,虽然第一次是对的,但是第二次循环的时候就有问题了。

看来ACM 还是需要耐心和细心。



1182 problem E:进制转换

Description

输入一个十进制数N,将它转换成R进制数输出。

Input

输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。

Output

为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。

Sample Input

7 2
23 12
-4 3

Sample Output

111
1B
-11

Source



一:源代码

#include<stdio.h>

int main()
{
     int n,a[32];
		int R,i,j;
	while(scanf("%d%d",&n,&R)!=EOF)
	{
		if(n<0)
		{
			n=-n;
			printf("-");
		}
		if(2<=R&&R<=16&&R!=10)
		{
			if(2<=R&&R<10)
			{
				for(i=0;n!=0;i++)
                {
					a[i]=n%R;
					n=n/R;
					printf("%d",a[i]);
				}
				printf("\n");
			}
			else
			{
				for(i=0;n!=0;i++)
                {
					a[i]=n%R;
					n=n/R;
				}
				for(j=i-1;j>=0;j--)
				{
					if(a[j]==10)printf("A");
			     	else if(a[j]==11)printf("B");
				    else if(a[j]==12)printf("C");
			    	else if(a[j]==13)printf("D");
		    		else if(a[j]==14)printf("E");
			    	else if(a[j]==15)printf("F");
			    	else printf("%d",a[j]);
			     
				}
					printf("\n");

			}
					
		}
		
        
	}
	return 0;
}


二:结果截图



三:思路和感受

这个题目自我感觉是这次测试最难的一个题目。

首先负号就让我为难了好久,开始准备用unsigned来定义的,但是输出的结果不对。后来才想到if(n<0){n=-n;printf("-");} 这样来表示。

然后就是如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。这个条件不知道怎么表达。开始本来想用数组来一一对应,但是发现实现不了,后来说直接对应,用了If, if(a[j]==10)printf("A"); ,结果这样可以行得通。

for(i=0;n!=0;i++) {a[i]=n%R;n=n/R;printf("%d",a[i]);} 这个就是把十进制N转换为R进制的方法,数学里有学到。

这个题目需要考虑到的东西其实还是很多的。



1183 problem F:反话连篇

Description

把输入的字符按照反着顺序输出

Input

多组测试数据 
每组一行

Output

按照输入的顺序反着输出各个字符

Sample Input

I am a boy.

Sample Output

.yob a ma I

Source



一:源代码

#include<stdio.h>

#include<string.h>

int main()

{

int i,n;

char s[10000];

while(gets(s))

{

n=strlen(s);

if(n>1)

{

for(i=n-1;i>=0;i--)

printf("%c",s[i]);

}

}

return 0;

}


二:结果截图



三:思路和感受

循环输入字符串这个很郁闷,首先用了 while(printf("%s",&s)!=EOF),实现不了,后来运用了好几种方法还是不行,最后只能用while(gets(s))才能实现循环输入。

之后就是把输入的反向输出就好。




这次的ACM 前几个题目还算简单,就是E花了点时间,运用上学期的知识比较多。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值