第三次测试

                     第三次测试

前2两次做的很积极的,这次放假端午回家了,就没有时间做,下午来到学校后把第三次的做完啦~。




1173 Problem A:弓型矩阵


Description

输出n*m的弓型矩阵

Input

多组测试数据 
每组输入2个整数 n和m(不大于20)

Output

输出n*m的弓型矩阵,要求左上角元素是1,(每个元素占2个位置,靠右)

Sample Input

4 3

Sample Output

1  2  3
 6  5  4
 7  8  9
12 11 10

一:源代码

#include<stdio.h>

int main()

{

int n,m,i,j,a[20],s;

while(scanf("%d%d",&n,&m)!=EOF)

 {

 s=0;

     for(i=1;i<=n;i++)

   {

    a[i]=i;

    if((i%2)==0)

    {

     s=s+m;

     for(j=m;j>0;j--)

     {

     printf("%2d ",s--);

     }

      printf("\n");

        s=s+m;

    }

    else

    {

     for(j=0;j<m;j++)

     {

      s++;

     printf("%2d ",s);

     }

     printf("\n");

    }

   }

return 0;

}


二:结果截图



三:思路和感受

这个题目其实不难,主要是我之前测试的时候只输入了一次,所以多次输入正不正确这个没有去判断,导致提交错了好多次,后来是由于(每个元素占2个位置,靠右)这个要求,写了好几种,最后才正确的用printf("%2d ",s); 把它表达出来了。



1174  Problem B:求2个时间之间的分钟数

Description

输入2个时间,求2个时间之间的分钟数(不包括自身),为了简单之见假设这2个时间在同一天且前面的时间较小

Input

输入2行,分别是2个时间,时间小时与分钟之间用:隔开

Output

输出之间的分钟数

Sample Input

12:12
12:16

Sample Output

3



一:源代码

#include<stdio.h>

int main()

{

 int h1,h2,m1,m2,s;

 char c;

 scanf("%d%c%d",&h1,&c,&m1);

 scanf("%d%c%d",&h2,&c,&m2);

 if(h1==h2&&m2>=m1)

  s=m2-m1-1;

 else if(h1<h2&&m2<m1)

  s=60-m1+m2-1;

 else if(h1<h2&&m2>=m1)

  s=(h2-h1)*60+m2-m1-1;

 printf("%d\n",s);

 return 0;

}


二:结果截图



三:思路和感受

这个题目其实还没有第二次测试的那个求时间的题目难,那个题目还要计算日期,算法是一样的,只是在要求输入12:12的时候小小的纠结了一下,最后才决定 用%c 来输入:  。



1175   Problem C:鸡兔同笼


Description

鸡和兔关在同一笼子中,已知鸡和兔的总数量n和腿的总数量m,求鸡的数量和兔的数量。

Input

输入2个整数分别是n和m

Output

输出鸡的数量和兔的数量,中间用空格隔开,如果无解则输出No

Sample Input

14 32

Sample Output

12 2

一:源代码

#include<stdio.h>

int main()

{

 int n,m,a,b;

 while(scanf("%d%d",&n,&m)!=EOF)

 { 

 a=2*n-m/2;

  b=m/2-n;

  if(m>=2*n&&m<=4*n)

  printf("%d %d\n",a,b);

  else

   printf("No\n");

 }

 return 0;

}


二:结果截图



三:实验思路和感受

这个题目真心不难,只要列出 a+b=n,2a+4b=m,求出a,b即可,然后要求无解输出NO,就只要保证a,ba 都大于0即可。



1177  Problem E:汉诺塔问题

Description

汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

Input

输入圆盘数n

Output

输出搬盘子的次数

Sample Input

1
2

Sample Output

1
3



一:源代码

#include<stdio.h>
int main()
{
	int n,i,s;
	while(scanf("%d",&n)!=EOF)
	{
		s=1;
		if(n==1)printf("1\n");
		else
		{
		for(i=1;i<=n;i++)
		{
			s=s*2;

		}
		printf("%d\n",s-1);
		}
	}
		return 0;
}


二:结果截图



三:思路和感受

这个是经典的汉诺塔,之前还在用上学期的知识疯狂的写,结果发现不知道在哪里表示搬的次数,不知道在哪里n++,后来想起来上学期讲过规律就是搬的次数是2的n次方-1;然后直接写了这个求结果的程序,结果过了。。。。

看来ACM注重的不是过程,而是结果。



Problem D:统计单词个数


Description

输入一行字符(少于80个字符),以回车结束,统计其中单词的个数。各单词之间用空格分隔,空格数可以是多个。

Input

输入一字符串,以回车结束。

Output

输出该字符串中单词的个数

Sample Input

This is  a     c    program.

Sample Output

5


一:源代码

#include<stdio.h>

int main()

{

 char s[80],q;

 int i,k,n;

    while(gets(s))

 {

  n=0,k=0;

 for(i=0;(q=s[i])!='\0';i++)

  {

   if(q==' ')

    k=0;

            else if(k==0)

   {

    k=1;

    n++;

   }

  }

 printf("%d\n",n);

 }

 return 0;

}


二:结果截图




三:思路和感受

这个题目算是这次测试里面比较困难的一个题目,for(i=0;(q=s[i])!='\0';i++)  判断句子是否到末尾,k=1,就是归位,回到初始值,对于输入的一段字符进行判断,要是空格就记为0, else if(k==0)不是空格就判断之前有没有空格,有空格就单词数记为1,然后直到末尾为休止符'\0',然后输出个数。



感觉这次的题目还是比较简单的,不算太难,只要写好格式就好,加油~






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值