1.有序序列插入一个整数
解题思路:
这里我们采用从后向前的比较法,如果最后面的数字比N大,我们就把这个数字向后移动一位,就比如把下标为3的数据移动到下标为4的位置。
注意:可能有一个数字是整个数组里面最小的,这时就需要额外判断。
解题代码:
#include<stdio.h>
int main()
{
int n = 0;
//输入个数
scanf("%d", &n);
int arr[51] = { 0 };
//要插入的数子
int m = 0;
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;
}
}
//m为最小值
if (i < 0)
{
arr[0] = m;
}
//输出
for (i = 0; i < n + 1; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
2.筛选法求素数
解题思路:
这里我们按照它的要求嵌套即可。
解题代码:
#include<stdio.h>
int main()
{
int n = 0;
while ((scanf("%d", &n)) != EOF)
{
int i = 0;
int arr[101] = { 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");
printf("%d", count);
}
return 0;
}
3.图像相似度
解题思路:
先定义两个二维数组,然后输入数据,再进行比较即可。
解题代码:
#include<stdio.h>
int main()
{
int n = 0;
int H = 0;
int L = 0;
int arr1[100][100] = { 0,0 };
int arr2[100][100] = { 0,0 };
int cont = 0;
int i = 0;
scanf("%d %d", &H, &L);
for (i = 0; i < H; i++)
{
int j = 0;
for (j = 0; j < L; j++)
{
scanf("%d", &arr1[i][j]);
}
}
for (i = 0; i < H; i++)
{
int j = 0;
for (j = 0; j < L; j++)
{
scanf("%d", &arr2[i][j]);
}
}
for (i = 0; i < H; i++)
{
int j = 0;
for (j = 0; j < L; j++)
{
if (arr1[i][j] == arr2[i][j])
cont++;
}
}
printf("%.2lf\n", (100.0 * cont) / (H * L));
return 0;
}
4.登录验证
解题思路:
这里我们使用strcmp函数,想要了解strcmp函数的使用可以去看一下我这篇文章,里面写的很详细。
字符串函数介绍_艾老虎尤的博客-CSDN博客
解题代码:
#include<stdio.h>
#include<string.h>
int main()
{
char name[100] = { 0 };
char password[100] = { 0 };
while ((scanf("%s %s",name,password )) != EOF)
{
if ((strcmp(name, "admin") == 0) && (strcmp(password, "admin") == 0))
{
printf("Login Success!");
}
else
{
printf("Login Fail!");
}
}
return 0;
}
5.包含数字9的数
解题思路:
假设一个数字19,我们先%一个10,看看等不等于9.再/10=1,再用1%10看看等不等于9,每当等于9我们就让计数器增加1.
解题代码:
#include<stdio.h>
int main()
{
int count = 0;
int i = 0;
for (i = 1; i <= 2019; i++)
{
int m = i;
while (m)
{
if (m % 10 == 9)
{
count++;
break;
}
m /= 10;
}
}
printf("%d", count);
return 0;
}
6.奇偶统计
解题思路:
这里我们把n以前的数字全部%2,结果为0的就是偶数,还有余数的就是奇数。。
解题代码:
#include<stdio.h>
int main()
{
int O = 0;
int J = 0;
int n = 0;
scanf("%d", &n);
int i = 0;
for (i = 1; i <= n; i++)
{
if (i % 2 == 0)
O++;
else
J++;
}
printf("%d %d", J, O);
return 0;
}