C语言:作业:有序序列合并、小乐乐改数字

  1. 有序序列合并
    示例1
    输入:
    5 6
    1 3 7 9 22
    2 8 10 17 33 44
    复制
    输出:
    1 2 3 7 8 9 10 17 22 33 44

思路:挨个比,小的存入第三个数组,注意:在下面代码中,a或b某个长度已经走完了的时候,应该从for循环用break退出

#include<stdio.h>

// 在res的范围内,如果i1,i2长度某个已经完了,加break退出
int main()
{
	int a[1000] = { 0 };
	int b[1000] = { 0 };
	int n = 0;
	int m = 0;
	scanf("%d %d", &n, &m);
	//printf("接收的n和m是:%d %d\n", n, m);
	// int数组不考虑\n
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
	}
	// 去掉换行\n
	for (int i = 0; i < m; i++)
	{
		scanf("%d", &b[i]);
	}
	// printf("其中一个:\n");
	int res[1000];
	int len1 = 0;
	int len2 = 0;
	int i = 0;
	for (i = 0; i <= n + m - 1; i++)
	{
		if (len1 <= n - 1 && len2 <= m - 1)
		{
			if (a[len1] <= b[len2])
			{
				res[i] = a[len1++];
			}
			else
			{
				res[i] = b[len2++];
			}
		}
		else { break; }
	}
	// 看谁有剩余
	while (len1 <= n - 1)
	{
		res[i++] = a[len1++];
	}
	while (len2 <= m - 1)
	{
		res[i++] = b[len2++];
	}
	//printf("\n排序完结果是\n");
	for (i = 0;i<=n+m-1; i++)
	{
		printf("%d ", res[i]);
	}
	return 0;
}

小乐乐改数字
分析:题目让做的是:把一个数字的每一位取出,且判断,符合不同情况,转为不同值,最后再放回原位。
思路(做法):从最低位开始,加入判断,依次往高位累加,核心代码是:
ret += w*pow(w, i++);

int main()
{
	long int a = 0;
	scanf("%d", &a);
	int t = a;
	// 从低位一直往上累加
	int ret = 0;
	int i = 0;
	while (t)
	{
		// 最低位
		int w = t % 10;
		t = t / 10;
		// 
		if (w % 2 == 0) { w = 0; }
		else { w = 1; }
		ret += w * pow(10, i++);
	}
	printf("%d", ret);
	return 0;
}

BC60-带空格直角三角形图案

记下:不断接收n,直到不输入
while(scanf(“%d”, &n)!=EOF)

#include<stdio.h>

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

    }
	
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值