期末将至,我们一起为复习备考的uu们加油叭~
本题解配合视频讲解食用更佳哦~!
-> 视频详解: 还不去打cf的个人空间-还不去打cf个人主页-哔哩哔哩视频
本题目来自河南师范大学2024级计算机与信息工程学院C语言程序设计基础期中考试
1.求距离
#include<stdio.h>
#include<math.h>
int main()
{
double x1, y1, x2, y2;
scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);
double d;
d = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
printf("%.2lf", d);
return 0;
}
// 代码来源:马若航
2.较小锐角的正弦值
#include<stdio.h>
int main()
{
int a, b, c;
int max = 0, min = 1e9;
scanf("%d%d%d", &a, &b, &c);
if (a > max) max = a;
if (a < min) min = a;
if (b > max) max = b;
if (b < min) min = b;
if (c > max) max = c;
if (c < min) min = c;
printf("%d/%d", min, max);
return 0;
}
// 代码来源:宋宇凡
3.月份天数
#include <stdio.h>
int main()
{
int y, m;
scanf("%d %d", &y, &m);
switch (m){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("31\n");
break;
case 4:
case 6:
case 9:
case 11:
printf("30\n");
break;
case 2:
if((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)){
printf("29\n");
}else printf("28\n");
break;
default:
printf("Wrong");
break;
}
return 0;
}
// 代码来源:刘正阳
4.求分数序列之和
#include <stdio.h>
int main()
{
int s1 = 2, s2 = 3, s;
int f1 = 1, f2 = 2, f;
int n;
double sum = 0.0;
scanf("%d", &n);
if(n == 1){
sum = 2.00;
}else if(n >= 2){
sum = 3.50;
for(int i = 3; i <= n; ++ i){
s = s1 + s1;
f = f1 + f2;
sum += (double)s / f;
s1 = s2,
s2 = s;
f1 = f2,
f2 = f;
}
}
printf("%.2lf", sum);
return 0;
}
// 代码来源:刘正阳
5.逆序输出
#include<stdio.h>
void fun(int n)
{
if(n == 0) return ;
else
{
printf("%d", n % 10);
fun(n / 10);
}
}
int count(int n)
{
int cnt = 0;
while(n)
{
cnt ++;
n /= 10;
}
return cnt;
}
int main()
{
int n;
scanf("%d", &n);
fun(n);
printf("\n");
int ans = count(n);
printf("%d", ans);
return 0;
}
// 代码来源:马若航
6.百钱买百鸡
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i <= n / 5; i ++)
for (int j = 0; j <= n / 3; j ++)
for (int k = 0; k <= n * 3; k ++)
if (i + j + k == n && i * 5 + j * 3 + k / 3 == n && k % 3 == 0)
printf("%d %d %d\n", i, j, k);
return 0;
}
// 代码来源:宋宇凡
7.最大奖金额
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
int a[110];
int sum = 0, max = 0, maxpos1, maxpos2;
for(int i = 1; i <= n; ++ i) scanf("%d", &a[i]);
for(int i = 1; i <= n - 1; ++ i)
{
for(int j = i + 1; j <= n; ++ j)
{
sum = a[i] + a[j];
if(sum % 2== 0 && sum % 10 != 0) sum *= 2;
else if(sum % 10 == 0) sum *= 5;
if(sum > max)
{
max = sum;
maxpos1 = i;
maxpos2 = j;
}
}
}
printf("%d %d %d", a[maxpos1], a[maxpos2], max);
return 0;
}
// 代码来源:马若航
8.回文素数
#include<stdio.h>
long long hw(long long n)//求回文数
{
long long hws = n / 10;
while(n > 0)
{
int a = n % 10;
hws = hws * 10 + a;
n = n / 10;
}
//printf("%lld", hws);
return hws;
}
int ss(long long n)//判断素数
{
int flag = 1;
for(long long i = 2; i * i <= n; i ++)
{
if(n % i == 0)
flag = 0;
}
return flag;
}
int main()
{
long long t;
scanf("%lld", &t);
long long hws = hw(t);
if(ss(hws))
{
printf("prime");
}
else printf("noprime");
return 0;
}
// 代码来源:刘雨欣
9.最大凸值
#include<stdio.h>
int a[10010];
int main()
{
int n;
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
}
int ans = 0;
for(int i = 1; i <= n-2; i++)
{
for(int j = i + 2; j <= n; j++)
{
if(a[i] == a[j])
{
int sum=0,cnt=0;
for(int k = i+1; k <= j-1; k++)
{
if(a[k]>=a[i]) sum += (a[k] - a[i]);
else
{
cnt=1;
break;
}
}
if(sum>ans && cnt!=1) ans=sum;
}
}
}
printf("%d",ans);
return 0;
}
// 代码来源:白汝凯
10.数列的计算个数
// 解法一:在讲题时,临时改出来的代码:
#include <stdio.h>
void dfs(int last, int *sum) {
if (last == 1) {
return;}//结束调用
else{// 尝试添加所有可能的新元素(正整数且不超过last的一半)
for (int i = 1; i <= last / 2; i++) {
(*sum)++;
dfs(i, sum);}
}
}
int main()
{
int n;
scanf("%d", &n);
int sum = 0;//总数
dfs(n, &sum);
sum ++;
printf("%d\n", sum);
return 0;
}
// 代码来源:郭嘉一
// 解法二:指针版
#include <stdio.h>
void dfs(int last, int *sum) {
(*sum)++;//无论如何先加1
if (last == 1) {return;}//结束调用
else{// 尝试添加所有可能的新元素(正整数且不超过last的一半)
for (int i = 1; i <= last / 2; i++) {
//sum ++;
dfs(i, sum);}
}
}
int main()
{
int n;
scanf("%d", &n);
int sum = 0;//总数
dfs(n, &sum);
printf("%d\n", sum);
return 0;
}
// 代码来源:郭嘉一
// 解法三:无指针版
#include <stdio.h>
int dfs(int n)
{
int sum = 0;
if(n == 1) return 1;
else {
for (int i = 1;i <= n/2;i ++)
{
int k = dfs(i);
sum = sum + k;
}
return 1+sum;
}
}
int main()
{
int n;
scanf ("%d",&n);
int k = dfs(n);
printf ("%d",k);
return 0;
}
// 代码来源:郭嘉一
emmm 写个结语叭~ 祝大伙er期末高绩点~!
3w3~