1.空心正方形图案
1°题目链接
链接
2°思路
找规律
线上的地方打印*加空格
其他地方打印空格
3°实现
#include<stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;for (i = 0; i < n; i++){int j = 0;for (j = 0; j < n; j++){if (i == 0 || i == n - 1)printf("* ");else if (j == 0 || j == n - 1)printf("* ");elseprintf(" ");}printf("\n");}}return 0;
}
4°运行结果
2.空心三角形图案
1°题目链接
链接
2°思路
找规律
线上的地方打印*加空格
其他地方打印空格
3°实现
#include<stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;for (i = 0; i < n; i++){int j = 0;for (j = 0; j < n; j++){if (i == n - 1 || j == 0 || i == j)//选择行列打印* {printf("* ");}else{printf(" ");}}printf("\n");}}return 0;
}
4°运行结果
3.有序序列插入一个数
1°题目链接
链接
2°思路
定义一个足够长的数组
输入m为插入的数
遍历数组
从后往前比较
如果arr[i]>m 就把这个元素往后拿一个arr[i+1]=arr[i]
如果arr[i]<m 就把m赋给arr[i+1] arr[i+1]=m
还有一种情况
就是遍历完后没有插入
只有m小于数组所有元素才成立
这时把arr[0]=m
3°实现
#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;
}
4°运行结果
4.筛选法求素数
1°题目链接
链接
2°思路
用筛选法求n以内的素数。筛选法求解过程为:将2~n之间的正整数放在数组内存储,将数组中2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清0 ,以此类推,直到n为止。数组中不为0的数即为素数。
先把2~n之间的正整数放到一个数组中
再写一个外循环代表2~n的数
再在外循环内部写一个内循环
把之前2~n的正整数的数组进行遍历
遍历中去试除
试除成功就把这个元素变为0
走完之后
再次遍历数组
如果arr[i]!=0就打印
arr[i]==0就计数
3°实现
#include <stdio.h>
int main()
{int n=0;while(~scanf("%d",&n)){//int arr[n+1];int arr[101];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]);elsecount++;}printf("\n%d\n",count);}return 0;
}
4°运行结果
5.图像相似度
1°题目链接
链接
2°思路
输入两个m行n列的数组
如果对应的元素相等就计数
最后100.0*count/(m*n)就可以得到百分比
保留两位小数
3°实现
#include <stdio.h>
int main()
{int m = 0;int n = 0;int arr1[100][100] = { 0 };int arr2[100][100] = { 0 };scanf("%d %d", &m, &n);int i = 0;int j = 0;int count = 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++;}}}printf("%.2lf\n", 100.0 * count / (m * n));return 0;
}
4°运行结果
#5C OJ练习五#完