CCF爬梯第一期(简单题 · C语言程序设计基础)

这些题目都很简单,就不做解释了,如果不懂那就没办法了,我会一期一期的更新,难题后面老师给出来我会接着做然后发布。顺带一句,都是自己写的,我没有标准答案,如果算法不好欢迎给我留言,我很喜欢讨论这些的,但有BUG的话,我真的不是故意的,蒙住眼睛惭愧一下。

#include<stdio.h> 
int main()
{
	int n, m, c, t, i, j; 
	scanf("%d %d", &n, &m); 
	t=j=i=0; 
	while( i<n ){ 
	scanf("%d", &c); 
		t+=c; i++; 
		if( t>=m ){
		j++; 
		t=0; 
	    } 
	}  
	if( t>0 ) j++;	
	printf("%d", j); 
	return 0; 
} 

--------------------------------------------------------------------------------------------------------------------------------

 

#include<stdio.h>
int main()
{
	int i, t1, t2, m, k=0;
	scanf("%d", &m);
	int a[m];
	for(i=0; i<m; i++)
	scanf("%d", &a[i]);
	if(m>2)
	{
	t1 = a[1]-a[0];
    for(i=1; i<m-1; i++)
    {
    	t2 = a[i+1]-a[i]; 
    	if( t2>0&&t1>0||t2<0&&t1<0)
    	{
    	t1 = t2;
    	continue;
    	}
    	if( t2>0&&t1<0||t2<0&&t1>0)
    	{
    	k++;
    	t1 = t2;
    	}
    }
    printf("%d", k);
	}
    return 0;
}

--------------------------------------------------------------------------------------------------------------------------------

 

#include<stdio.h>
int a[1000]; 
int main(){ 
	int i, j, t, n, u=0, o=0; 
	scanf("%d", &n); 
	for( i=0; i<n; i++ ) 
	scanf("%d", &a[i]); 
	bool flag = false; 
	for( i=n-1; i>=0; i-- ){ 
		flag = false; 
		for( j=0; j<i; j++ ) 
		if( a[j]>a[j+1] ){ 
			t = a[j]; 
			a[j] = a[j+1]; 
			a[j+1] = t; 
			flag = true; 
		} 
		if( flag = false ) break; 
	} 
	
	for( i=0; i<n ;i++ ){ 
	if( a[i]<a[n/2] ) u++; 
	if( a[i]>a[n/2] ) o++;
	} 
	if( u==o )
	printf("%d", a[n/2]);
	else 
	printf("-1");
} 

--------------------------------------------------------------------------------------------------------------------------------

 

#include<stdio.h>
int main()
{
	long n, m;
	int i, sum=0, t;
    scanf("%d", &n);
    for(i=0; n>0; i++)
    {
    	t = n%10;
    	sum += t;
		n /= 10;
    }
    printf("%d", sum);
    return 0;
}

--------------------------------------------------------------------------------------------------------------------------------

#include<stdio.h>
int main()
{
	int m, i, j, c=0, n;
	scanf("%d", &m);
	int a[m];
	for(i=0; i<m;i++)
	{
		scanf("%d", &n);
		a[i] = n;	
	}
	for(i=m-1; i>=0; i--)
	{
		for(j=i; j>=0; j--)
		{
		if(a[i]==a[j])
		c++;
		}
		a[i] = c;	
		c=0;
	}
	for( i=0; i<m; i++ )
	printf( "%d ", a[i] );	
	return 0;	
}

--------------------------------------------------------------------------------------------------------------------------------

#include<stdio.h>
int main()
{
	int i, n, c=0, t=0;
	scanf("%d", &n);
	int a[n];
	for(i=0; i<n; i++)
	{
		scanf("%d", &a[i]);
		if(i>0)
		if(a[i]!=a[i-1])
		{
			c++;
			printf("a[%d] = %d a[%d] = %d %d \n",i, a[i],i-1, a[i-1] ,c);
		} 
	t=1;
	}
	if(t==1)
	c+=1;
	printf("%d", c);
	return 0;
}

--------------------------------------------------------------------------------------------------------------------------------

#include<stdio.h> 

int  a[1000][1000];//这个设定放在外面,不要方int里面。  

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

--------------------------------------------------------------------------------------------------------------------------------

 

#include<stdio.h>
int main()
{
	int i, j, n, m;
	scanf("%d", &n);
	int a[n]; 
	for(i=0; i<n; i++)
    {
    scanf("%d", &m);
    if(m<0)
    m = (-1)*m;
    a[i] = m;
	} 
	m=0;
	for(i=n-1; i>=0; i--)
	{
		for(j=i-1; j>=0; j--)
		if(a[i]==a[j])
		m++;
	}
	printf("%d", m);
	return 0;
}

--------------------------------------------------------------------------------------------------------------------------------

 

#include<stdio.h>//这道题不难,就是麻烦
int main()
{
	int i, j, n, c=0, t=0;
	scanf("%d", &n);
	int a[n-1], b[n-1];
	for(i=0; i<n; i++)
	scanf("%d", &a[i]);
	for(i=n-1; i>=0; i--) // 10 1 10 20 30 10
	{
		for( j=i; j>=0; j-- )
		{ 
			if(a[j] == a[i])
			c++;
		} 
		if(c>1) 
		t=1; 
		b[i] = c; 
		c=0;  
	} 
	i=0; 
	if(t==1) //当有数字次数超过一次的时候进入比较 
	{ 
		for(j=0; j<n; j++) 
		if( b[i]<b[j] ) 
		i=j; 
        for(j=0; j<n; j++) //检测是否有重复相同次数的数字,比较它们的大小
        { 
        	if(b[i]==b[j]) 
        	if(a[i]>a[j]) 
        	a[i] = a[j]; 
        } 
        printf("%d ", a[i]); 
	}  
	else//当没有重复的数字,直接比较就行了
	{  
	    i=0;
		for(j=0; j<n; j++)
		if(a[i]>a[j])
		i=j;
		printf("%d ", a[i]);	
	} 
	return 0;
}

——————————————————————————————————————————————————————

最大波动

201609-1

问题描述

  小明正在利用股票的波动程度来研究股票。小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少。

输入格式

  输入的第一行包含了一个整数n,表示小明拿到的收盘价格的连续天数。
  第二行包含n个正整数,依次表示每天的收盘价格。

输出格式

  输出一个整数,表示这只股票这n天中的最大波动值。

样例输入

6
2 5 5 7 3 5

样例输出

4

样例说明

  第四天和第五天之间的波动最大,波动值为|3-7|=4。

评测用例规模与约定

  对于所有评测用例,2 ≤ n ≤ 1000。股票每一天的价格为1到10000之间的整数。

#include<stdio.h> 
#include<math.h>
int main() 
{ 
	int i, n, t1, t2;
	scanf("%d", &n);
	int a[n]; 
	for(  i=0; i<n; i++ ) 
	scanf("%d", &a[i]); 
	t1 = abs(a[1]-a[0]); 
	if( n>2 ) 
	for( i=1; i<n-1; i++ ){ 
		t2 = abs(a[i+1]-a[i]); 
		if( t2>t1 )
		t1 = t2; 
	}  
    printf("%d", t1); 
	return 0; 
} 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值