C语言1. 数组作业

1. 小乐乐走台阶:(可递归、可dp)

思路:
用dp存数组
我差点忘了牛客网的ACM模式,需要你把头文件什么的都写出来

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	int n;
	scanf("%d", &n);
	int a[32];
	a[0] = 1;
	a[1] = 1;
	a[2] = 2;
	for (int i = 3; i <= n; i++)
	{
		a[i] = a[i - 1] + a[i - 2];
	}
	printf("%d", a[n]);
	return 0;
}

2. 序列中删除指定数字

牛客网需要自己写头文件

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	int f;
	int res[51] = { 0 };
	scanf("%d", &f);
	// scanf需要在main中	
	for (int i = 0; i <= f - 1; i++)
	{
		scanf("%d", &res[i]);
	}
	int find;
	scanf("%d", &find);
	for (int i = 0; i <= f-1; i++)
	{
		if (res[i] != find)
		{
			printf("%d ", res[i]);
		}
	}

}

3.

输出的时候,结果离奇,后来发现自己printf(“%d”, &),输出别加&,scanf才加&

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	int n;
	int max = 0;
	int min = 0;
	int a[10000] = { 0 };
	scanf("%d", &n);
	for (int i = 0; i <= n - 1; i++)
	{
		// 这个题特别在,输入10个数字,我用10个%d吗
		scanf("%d", &a[i]);
		if (i == 0) { min = a[0]; max = a[0]; }
		if (a[i] < min) { min = a[i];}
		if (a[i] > max) { max = a[i];}
	}
	int res = 0;
	res = max - min;
	printf("%d", res);
	return 0;
}

4. 大小写转换

思路:

  1. 数字:65、90、97、122,大小写差32 , 边界差25, 差26个字母
  2. putchar():输出字符为单独一行
    getchar():这里用int ch接受getchar() 输出ch结果只能是%d 且ch还是int类型, 此外putchar(ch)输出会转为字符
  3. getchar()去换行
  4. (ch=getchar())!=EOF EOF在读文件时候是结束符标志,但是输出过程中,一直不会结束 且这里循环过程就会接收字符
#include<stdio.h>

int main()
{
    int ch;
    int res = 0;
    while ((ch = getchar()) != EOF) {
        // 去除\n
        getchar();
        // printf("第一个char是%d\n", res);
        if (ch >= 65 && ch <= 90)
        {
            ch += 32;
            putchar(ch);    // 单个字符输出为一行
        }
        else if(ch>=97 && ch<=122)
        {
            ch -= 32;
            putchar(ch);
        }
        else
        {
            continue;
        }
        printf("\n");
    }
    return 0;
}

5.

思路:像上一题一样getchar()去换行符
注意:这里用到把int给char时,对ch应该强转 char a = (char)ch;

int main()
{
	int ch;
	while ((ch=getchar())!=EOF)
	{
		if ((65<=ch && ch<=90) ||(97<=ch && ch<= 122))
		{
			getchar();
			char a = (char)ch;
			printf("%c is an alphabet.\n", a);
		}
		else
		{
			getchar();
			char a = (char)ch;
			printf("%c is not an alphabet.\n", a);
		}
	}
	return 0;
}
 

6. 最高分数

scanf:接受一行一行的数据和一行内多个数据都行
三目运算符

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>



int main()
{
	int a;
	int b;
	int c;
	int res;
	scanf("%d", &a);
	scanf("%d", &b);
	scanf("%d", &c);
	res = a > b ? a:b;
	res = res > c ? res : c;
	printf("%d", res);
	return 0;

}


7. 变种水仙花

取模

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	// 遍历五位数
	for (int i = 10000; i <= 99999; i++)
	{
		// 每个数组有4种情况 需要8个变量拿到8个值
		int a1;
		int a11;
		int a2;
		int a22;
		int a3;
		int a33;
		int a4;
		int a44;
		// 10000 = 1+4 2+3 3+2 4+1
		a1 = i/10000;
		a11 = (i - a1*10000) % 10000;
		// a2错了,要拿前2位
		a2 = i/1000;
		a22 = (i-a2*1000)%1000 ;	// 结果是整数
		a3 = i / 100;
		a33 = (i - a3 * 100) % 100;
		a4 = i / 10;
		a44 = (i-a4*10)%10;
		// printf("%d %d %d %d %d %d %d %d", a1, a11, a2, a22, a3, a33, a4, a44);
		if (a1 * a11 + a2 * a22 + a3 * a33 + a4 * a44 == i)
		{
			printf("%d ", i);
		}
	}
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值