
🔥个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》、《数据结构与算法》、C语言刷题12天IO强训 🍉学习方向:C/C++方向 ⭐️人生格言:为天地立心,为生民立命,为往圣继绝学,为万世开太平

前言:上一篇博客又带大家刷了一些相对来说简单的代码题目,本篇文章我们将继续练习下面的题目。这些题目有的挖了大坑,大家做的时候要留意,如果做不出来,看了代码演示后要自己多敲几遍,去理解代码的逻辑。 宇宙安全声明:鉴于博主能力有限,本专栏适用于代码小白刷题,大佬们多多包涵(抱拳)!

这道题很简单,我就不展开讲啦,直接看博主的代码演示吧——
写法(1):
#include <stdio.h>
int main()
{
double score = 0.0;
double sum = 0.0;
int arr[5] = {0};
int i = 0;
for(i = 0;i < 5;i++)
{
scanf("%lf",&score);
sum += score;
}
printf("%.2lf",sum/5);
return 0;
}写法(2):
#include <stdio.h>
int main()
{
int i = 0;
float h = 0.0;
float sum = 0.0;
for(i = 0;i < 5;i++)
{
scanf("%f",&h);
sum += h;
}
printf("%.2f",sum/5);
return 0;
}写法(3):
#include <stdio.h>
int main()
{
int i = 0;
double sum = 0.0;
float h[5] = {0};
for(i = 0;i < 5;i++)
{
scanf("%f",&h[i]);
}
for(i = 0;i < 5;i++)
{
sum += h[i];
}
printf("%.2lf\n",sum/5);
return 0;
}
1、多组输入; 2、状态码比较多,且为整数,我们要不可以考虑用switch语句。
#include <stdio.h>
int main()
{
int s = 0;
while(scanf("%d",&s) != EOF)
{
switch(s)
{
case 200:
printf("OK\n");
break;
case 202:
printf("Accepted\n");
break;
case 400:
printf("Bad Request\n");
break;
case 403:
printf("Forbidden\n");
break;
case 404:
printf("Not Found\n");
break;
case 500:
printf("Internal Server Error\n");
break;
case 502:
printf("Bad Gateway\n");
break;
}
}
return 0;
}这道题不需要写default吗?是的,不需要。switch、case语句里面如果有明确题目说的和情况不匹配的时候,我们写default,这里匹配,就不用写了。


1、多组输入; 2、分析清楚每行打印的内容就行了。
#include<stdio.h>
int main()
{
int n = 0;
while(scanf("%d",&n) != EOF)
{
int i = 0;
for(i = 1;i <= n;i++)
{
int j = 0;
for(j = 1;j <= i;j++)
{
printf("%d ",j);
}
printf("\n");
}
}
return 0;
}
1、多组输入; 2、一边输入,一边求和,一边求最大值最小值; 3、再算平均值,这里我们要除5.0,因为创建的变量都是整型。
#include <stdio.h>
int main()
{
int i = 0;
int sum = 0;
int max = 0;
int min = 100;
int score = 0;
for(i = 0;i < 7;i++)
{
scanf("%d ",&score);
sum += score;
if(score > max)
max = score;
if(score < min)
min = score;
}
printf("%.2f\n",(sum-min-max)/5.0);
return 0;
}
1、注意多组输入; 2、从往前比较并一定数字找到合适的位置,就可以插入数字了,但是如果插入的数字比所有的元素都小,那就插入到第一个位置上。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int n = 0;
int arr[51] = { 0 };
int m = 0;
//输入个数
scanf("%d", &n);
int i = 0;
//输入有序的数字
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
//输入要插入的数字
scanf("%d", &m);
//输入数据的实现
for (i = n - 1; i >= 0; i--)
{
if (arr[i] > m)
{
arr[i + 1] = arr[i];
}
else
{
arr[i + 1] = m;
break;
}
}
//要输入的元素小于所有的元素
if (i < 0)
{
arr[0] = m;
}
//输出
for (i = 0; i < n + 1; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
(1)筛选法求素数
这道题要求我们用筛选法求素数,我们用代码实现一下——
#include <stdio.h>
int main()
{
int n = 0;
while(~scanf("%d",&n))
{
//int arr[n + 1];//变长数组
int arr[101] = {0};
int i = 0;
//存储数据
for(i = 2;i <= n;i++)
{
arr[i] = i;
}
//列举所有的除数
int j = 0;
for(j = 2;j <=n;j++)
{
int k = 0;
for(k = j + 1;k <= n;k++)
{
if(arr[k]%j == 0)
{
arr[k] = 0;
}
}
}
//输出并记录
int count = 0;
for(i = 2;i <= n;i++)
{
if(arr[i] != 0)
printf("%d ",arr[i]);
else
count++;
}
printf("\n%d\n",count);
}
return 0;
}(2)if线——用试除法求解素数
当然,这里是题目要求我们用筛选法,不用筛选法可不可以求出来呢?当然可以,我们还可以用试除法试试求解素数——
#include <stdio.h>
int main()
{
int n = 0;
while(~scanf("%d",&n))
{
//int arr[n + 1];//变长数组
int i = 0;
int count = 0;
for(i = 2;i <= n;i++)
{
//判断i是否为素数
//i->i-1之间的数字
int j = 0;
for(j = 2;j < i;j++)
{
if(i % j == 0)
{
count++;
break;
}
}
//break跳到这儿
if(j == i)
printf("%d ",j);
}
printf("\n%d\n",count);
}
return 0;
}虽然不符合题目的要求,但也是一种思路,如果题目要求用试除法求,我们不就可以写了嘛。

1、输入二维数组; 2、求两个二维素组的相同元素个数; 3、求百分比要注意*100.0,小时点后保留2位。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int m = 0;
int n = 0;
int count = 0;
int arr1[100][100] = { 0 };
int arr2[100][100] = { 0 };
scanf("%d %d", &m, &n);
int i = 0;
int j = 0;
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
scanf("%d", &arr1[i][j]);
}
}
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
scanf("%d", &arr2[i][j]);
}
}
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
if (arr1[i][j] == arr2[i][j])
count++;
}
}
//求相速度注意乘以100
printf("%.2f\n", 100.0 * count / (m * n));
return 0;
}
1、多组输入; 2、两个字符串比较大小不能使用==,得使用strcmp函数,比较的是两个字符串中对应字符的ASCII码值。
#include <stdio.h>
#include<string.h>
int main()
{
char name[20] = {0};
char passage[40] = {0};
while(scanf("%s %s",name,passage) != EOF)
{
if(strcmp(name,"admin") == 0 && strcmp(passage,"admin") == 0)
{
printf("Login Success!");
}
else
{
printf("Login Fail!");
}
}
return 0;
}
1、要判断一个数字是否包含9就看一下这个数字的某一位是否为9即可,只要某一位为9就停下里来。
#include <stdio.h>
int main()
{
int num = 0;
for(int i = 1;i < 2020;i++)
{
if(i % 10 == 9 || i / 10 % 10 == 9 || i / 100 %10 == 9)
num++;
}
printf("%d",num);
return 0;
}
1、代码1就是统计技术的个数,算出偶数的个数; 2、 代码2是根据数字的个数推算。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int odd = 0;//奇数
int i = 0;
for (i = 1; i <= n; i++)
{
if (i % 2 == 1)
odd++;
}
printf("%d %d\n", odd, n - odd);
return 0;
}还有一个更加简洁的办法——
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d",&n);
if(n % 2 == 1)
printf("%d %d\n",n/2+1,n/2);
else
printf("%d %d\n",n/2,n/2);
return 0;
}往期回顾:
【C语言刷题】第七天:加量加餐继续,代码题训练,熟练IO模式
【C语言刷题】第六天:继续加量加餐,代码题训练,熟练IO模式
【C语言刷题】第五天:继续加量加餐,代码题训练,熟练IO模式
【C语言刷题】第四天:继续加量加餐,代码题入门,熟练IO模式
【C语言刷题】第三天:继续加量加餐,代码题入门,熟练IO模式
结语:本篇文章带大家刷了十道题目,大家认真思考一下,就能想出来。本文到这里就结束了,希望对友友们有所帮助。本文的代码相比起之前的题目,难度上已经有了加深,大家要上手操作,后面的代码题难度上整体是逐渐递增的,博主控制了难度,这样友友们能比较丝滑地上手敲下去。