GDPU c语言 天码行空5
🙈 仅供参考,欢迎指正
填空(语法题)
1. 9.502. 03. 2.504. 3.505. 16. 07. 78. 09. 110. 011. 112. 113. 014. 115. 2416. 6017. 018. 319. 020. 64
⭐ 直接拷贝输出就好
#include<stdio.h>int main(){// 1
// printf("%f\\n",3.5+1/2+56%10);//9.50000//2
// int a = 2;
// printf("%d\\n",a++*1/3);//0.000000 //3
// float x = 2.5,y = 4.7;
// int a = 7;
// printf("%f",x+a%3*(int)(x+y)%2/4);//2.500000 //4
// int a = 2;
// int b = 3;
// float x = 3.5,y = 2.5;
// printf("%f",(float)(a+b)/2 + (int)x % (int)y);//3.500000//5
// int x = 3, y = 4; // 下边中间的 x+5 不是 x += 5 (x 值不变)
// printf("%d",(x = ++y,x+5,x/5));// 1 (看最后一个表达式子的值)//6
// int x = 4,y = 3;
// printf("%d",(x>y>=2)?1:0);// 0 x>y == 1; 1>=2 == 0;//7
// int a = 5, b = 6;
// printf("%d",(++a=b--)?++a:--b);// 7 //8~14/*int a = 3,b = 4, c = 5;printf("%d\\n",b>c&&b==c);printf("%d\\n",!(a>b)&&!c||1);printf("%d\\n",!(a=c)&&(b-c)&&0);printf("%d\\n",!(a+b)+c-1&&b+c/2);printf("%d\\n",a||(b+b)&&(c-a));printf("%d\\n",(!a==1)&&(!b==0));printf("%d\\n",a&&(b||c));*///15~20 int a = 12;
// printf("%d\\n",a+=a);// 24
// printf("%d\\n",a*=2 + 3);// 60
// printf("%d\\n",a/=a+1);// 0
// printf("%d\\n",a >>= 2);//3 (12 二进制 11000)
// printf("%d\\n",a+=a -= a*=a);//0 (从左往右顺序计算 )printf("%d\\n",a <<= a-=8);//64 ( -= 优先级高于 <<=)return 0;
}
1.两电阻并联求阻值
⭐ 公式化简直接求解
#include<stdio.h>int main(){double r1,r2;scanf("%lf %lf",&r1,&r2);printf("%.2lf",r1*r2/(r1+r2));return 0;
}
2. 数列中俩数之差最大
⭐ 记录最大值和最小值
#include<stdio.h>int main(){double max = -1e9;double min = 1e9,t;int n;scanf("%d",&n);while(n--){scanf("%lf",&t);max = max > t ? max : t;min = min < t ? min : t;}printf("%.2lf",max-min);return 0;
}
3. 封闭曲线分割平面
🤠 推公式很难?无所谓,我会套公式
⭐ 临时变量版
#include<stdio.h>int main()
{int n,i;scanf("%d", &n);int an = 0;int t = 2;for (i = 1; i <= n; i++){an = t + 2 * (i - 1);t = an;}printf("%d", an);
}
⭐ 数组版
#include <stdio.h>int main() {int n, A[1000], i; // 数组长度1000足够scanf("%d", &n);A[0] = 2; // 初始化A[1]为2for (i = 1; i < n; i++) {A[i] = A[i-1] + 2*i; // 计算An的值}printf("%d\\n", A[n-1]);return 0;
}
4. 更列问题
⭐ 递推(特殊处理前两项然后套公式)
#include <stdio.h>int main()
{int n;scanf("%d", &n);int f1 = 0, f2 = 1, fn = 0,i;for ( i = 3; i <= n; i++) {fn = (i-1) * (f1 + f2);f1 = f2;f2 = fn;}if(n == 2)fn = 1;if(n == 1)fn = 0; printf("%d", fn);return 0;
}
5. 简单的字符加密
⭐ 输入: fgets(字符数组, 长度, 输入源)
⭐ ASII 码值的应用
#include<stdio.h>int main()
{int i;char ss[61];//初始化字符数组for (i = 0; i < 61; i++)ss[i] = ' ';fgets(ss, 60, stdin);//读取一行字符串for (i = 0; i < 61; i++){char c = ss[i];if (c >= 97 && c <= 122)//小写 --> 大写{ss[i] = (c - 32-'A'+3) % 26 + 'A' ;}else if (c >= 65 && c <= 90)//大写 --> 小写ss[i] = (c + 32-'a' + 3) % 26 + 'a';else if (c >= 48 && c <= 57)//数字 --> 后延5个符号ss[i] = (c - '0' + 5) % 10 + '0';}for (i = 0; i < 61; i++)printf("%c", ss[i]);return 0;
}
6. 埃及分数
⭐ a 除以 b : a ÷ b
⭐ a 除 b: b ÷ a
#include<stdio.h>int main()
{int a,b,c,d,i;scanf("%d %d", &a, &b);printf("%d/%d=", a, b);while (1){c = b/a + 1;// 分母 ca = a*c - b;b *= c;printf("1/%d+", c);//出口(结束条件)if (a > 1 && b%a == 0){printf("1/%d", b / a);break;}if (a == 1){printf("1/%d", b);break;}}return 0;
}
7. 数学竞赛名次预测
⭐ 暴力枚举
#include<stdio.h>int main()
{int a, b, c, d;for (a = 1; a <= 4; a++)for (b = 1; b <= 4; b++)for (c = 1; c <= 4; c++)for (d = 1; d <= 4; d++)if (a != b && a != c && a != d && b != c && b != d && c != d)if ((c == 1 && a != 3) || (c != 1 && a == 3))//甲对一半if ((b == 1 && d != 4) || (b != 1 && d == 4))//乙对一半 if ((d == 2 && c != 3) || (d != 2 && c == 3))//丙对一半printf("abcd\\n%d%d%d%d\\n", a, b, c, d);return 0;
}