Tips:代码不一定最优解,但一般能懂(可能吧),用的是VS2022。
填空题部分由于它不给答案,我也不知道我有没有做对,你可以在编译器输入。
1.两电阻并联求阻值
代码
#include <stdio.h>
int main()
{
float a=0, b=0,c=0;
scanf("%f %f", &a, &b);
c = a * b / (a + b);
printf("%.2f", c);
return 0;
}
思路:不要用题目给的那公式,并联电阻“鸡在河上飞”直接求。
2.数列中俩数之差最大
代码
#include <stdio.h>
int main()
{
int n = 0;
float max=0,min=0,temp=0;
scanf("%d", &n);
float arr[100] = { 0 };
for (int i = 0; i < n; i++)
{
scanf("%f", &arr[i]);
}
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n-1-i; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
max = arr[n-1];
min = arr[0];
printf("%.2f", max - min);
return 0;
}
思路:这道题不用数组我想不到怎么做,但数组又是后面学的(bushi?)。将数放进数组后进行排序然后就能找到最大值和最小值。
3.封闭曲线分割平面
代码
#include <stdio.h>
int main()
{
int n,m = 2;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
m += 2 * (i - 1);
}
printf("%d", m);
return 0;
}
思路:别看这题那么长,其实有用的就是最后的公式,设初始值为2,然后循环加到输入的平面个数。(所以这题为啥做得比上题简单???
4.简单字符加密
代码
#include <stdio.h>
int main()
{
char ch;
char arr[60] = { 0 };
int i, cnt = 0;
do
{
ch = getchar();
arr[cnt++] = ch;
} while (ch != '\n');
for (i = 0; i < cnt; i++)
{
if (arr[i] <= 87 && arr[i] >= 65)//大写字母转小写加3
arr[i] = arr[i] + 35;
else if (arr[i] >= 97 && arr[i] <= 119)//小写字母转大写加3
arr[i] = arr[i] - 29;
else if (arr[i] > 119 && arr[i] <= 122)//xyz转大写再变ABC
arr[i] = arr[i] - 55;
else if (arr[i] >= 88 && arr[i] <= 90)//XYZ变abc
arr[i] += 9;
if (48 <= arr[i] && arr[i] <= 57)
{
if (arr[i] < 53)
arr[i] += 5;
else if (arr[i] >= 53)
arr[i] -= 5;
}
printf("%c", arr[i]);
}
return 0;
}
思路:这题要用到的东西很多,ascll码表,输入、输出字符串,将字符串放进数组后再让每一个字符进行转化。
5.数学竞赛猜测
代码:
#include <stdio.h>
int main()
{
int a = 0, b = 0, c = 0, d = 0;
printf("abcd\n");
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 (((c == 1) && !(a == 3) || !(c == 1) && (a == 3))
&& ((b == 1) && !(d == 4) || !(b == 1) && (d == 4))
&& ((d == 2) && !(c == 3) || !(d == 2) && (c == 3)))
{
if (a != b && a != c && a != d && b != c && b != d && c != d)
{
printf("%d%d%d%d", a, b, c, d);
}
}
}
}
}
}
return 0;
}
思路:题目提示了要用四重循环进行枚举,还给了相应的条件,那我们可以从这里下手,记住甲乙丙三个说的话都是成立的,但是只对一半。
捷径:直接printf(“3142“)