思路:
用dp存数组
我差点忘了牛客网的ACM模式,需要你把头文件什么的都写出来
#define _CRT_SECURE_NO_WARNINGS #include2. 序列中删除指定数字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; }
牛客网需要自己写头文件
#define _CRT_SECURE_NO_WARNINGS #include3.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]); } } }
输出的时候,结果离奇,后来发现自己printf(“%d”, &),输出别加&,scanf才加&
#define _CRT_SECURE_NO_WARNINGS #include4. 大小写转换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; }
思路:
- 数字:65、90、97、122,大小写差32 , 边界差25, 差26个字母
- putchar():输出字符为单独一行
getchar():这里用int ch接受getchar() 输出ch结果只能是%d 且ch还是int类型, 此外putchar(ch)输出会转为字符 - getchar()去换行
- (ch=getchar())!=EOF EOF在读文件时候是结束符标志,但是输出过程中,一直不会结束 且这里循环过程就会接收字符
#include5.int main() { int ch; int res = 0; while ((ch = getchar()) != EOF) { // 去除n getchar(); // printf("第一个char是%dn", 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; }
思路:像上一题一样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 #include7. 变种水仙花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; }
取模
#define _CRT_SECURE_NO_WARNINGS #includeint 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; }



