1010 一元多项式求导 (25 分)

#include<stdio.h>
int main(void)
{
	//1.输入数组
	int number[3000] = { 0 };
	int cnt;
	char ch = 'a';
	for (cnt = 0; ch != '\n'; cnt++)
	{
		scanf_s("%d", &number[cnt]);
		ch = getchar();
	}
	cnt--;
	int n = cnt;
	//printf("%d", cnt);
	/*int n = cnt - 1;
	for (cnt = 0;cnt <= n;cnt++)
	{
		printf("%d ", number[cnt]);
	}*/

	//2.开始修改
	for (cnt = 0; cnt <= n; cnt++)
	{
		if (cnt % 2 == 0)
		{
			number[cnt] *= number[cnt + 1];
		}
		else
		{
			number[cnt] -= 1;
		}
	}
	
	//3.判断并输出
	int i = 1;
	int count = 0;
	for (cnt = 0; cnt <= n; cnt++)
	{
		if (count == 0 && number[cnt] == 0)
		{
			printf("0 0");
			return 0;
		}
		else
		{
			count++;
		}
		if (cnt % 2 == 0 && number[cnt] == 0)
		{
			cnt++;
			continue;
		}
		if (i == 1)
		{
			printf("%d", number[cnt]);
			i = 0;
			continue;
		}
		printf(" %d", number[cnt]);
	}
	return 0;
}

 1.输入数组

这里用了个之前的经验 题目没有直接给数据的个数 因而我们要自己判断数据在哪停止

从而判断好遍历循环在哪里结束

因此我们再次使用getchar()函数 当getchar读到换行符时 数据即结束

2.开始修改

我们直接区分双数位修改和单数位修改 比较简单

3.判断并输出

这里首先有个题目理解问题——因为一直都有测试点报答案错误额——按照别人blog的描述才理解好了题目 从而拿到完全正确 感觉这不是我的问题 而是题目描述有问题

判断的话比较简单 就是判断完以后需要跳过而非终止——因为需要用continue而非break这是个很严重的问题 已经犯过这样的错误了

然后就是格式问题(空格问题)

一开始用的是计数器模式 但却一直报了格式错误 也不知道是哪错了

因而后来采用了在别人blog学到的方法 还是挺好用的 然后就格式正确了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值