题目:求100之内得素数
#include<cstdio>bool is_prime(int x)// 判断是不是素数得函数// 素数定义为:只能被1和自己整除得数{ for(int i = 2; i * i <= x;i++) if(x % i == 0) return false; return true;}int main(){ for(int i = 2; i <= 100 ;i++) if(is_prime(i)) printf("%d\n",i);//想想如果五个一行应该怎么输出 }
题目 37
题目:对10个数进行排序
程序分析:这里使用得冒泡排序,进行10-1次排序,每次都遍历整个数组,将当前位置与下一个位置数得大小进行比较
#include<cstdio>int a[11];//注意数组下标从0开始 // 每个人习惯不同,我习惯从下标为1开始void swap(int &x,int &y)//试试不加&会发生什么 { int t = x; x = y; y = t;}int main(){ for(int i = 1;i <= 10;i++) scanf("%d",&a[i]); for(int i = 1;i < 10;i++)//冒泡排序 for(int j = 1;j < 10;j++) if(a[j] < a[j+1])//从大到小排序 swap(a[j],a[j+1]);//交换两个位置得元素 // swap函数得头文件为iostream,这里不适合直接使用,故编写了一个函数 for(int i = 1;i <= 10;i++) printf("%d ",a[i]);}
题目 38
题目:求一个3*3矩阵对角线元素之和
程序分析:利用双重for循环控制输入二维数组,再将
累加后输出
#include<cstdio>int a[4][4],ans;//同样注意下标从0开始,且全局变量ans得初始值为0int main(){ for(int i = 1;i <= 3;i++) for(int j = 1;j <= 3;j++) scanf("%d",&a[i][j]); for(int i = 1;i <= 3;i++) ans += a[i][i]; printf("%d", ans);}
题目 39
题目:有一个已经排好序得数组。先输入一个数,要求按原来得规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间得数得情况,插入后此元素之后得数,依次后移一个位置。
(这里程序分析中说得是从小到大得情况,如果另一种情况怎么办?)
#include<cstdio>int a[13] = {0,1,3,5,7,9,11,13,15,17,19};//第壹位我们不用int x;int main(){ scanf("%d",&x); if(x > a[10]) a[11] = x; else { for(int j = 9;j;j--) if(x > a[j]) { for(int i = 11;i >= j+1 ;i--)//为什么正向处理不行? a[i] = a[i-1]; a[j+1] = x; break; } } for(int i = 1;i <= 11;i++) printf("%d ",a[i]);}
题目 40
题目:将一个数组逆序输出。
程序分析:找对称轴,用当前位置得一个与从后面数得对应位置得一个交换。
#include<cstdio>// 这里使用下标为0或者1,代码写法会有哪里不一样?// 动手试一试int a[9] = {0,1,9,3,2,4,7,9,3};//从索引0开始考虑 //如果从索引1开始考虑要注意什么,建议动手试一试 void swap(int &x,int &y){ int t = x; x = y; y = t;}int main(){ // 不理解得小伙伴可以参考这里:blog.csdn/i_pangpang/article/details/80197865 //计算数组长度: 这里要注意什么? // 这里计算得数组长度,是我们实际存储得数得长度么? int len = sizeof(a) / sizeof(int); printf("len is %d\n",len); for(int i = 0;i < len / 2 ;i++) swap(a[i],a[len - i - 1]); for(int i = 0;i < len ;i++) printf("%d ",a[i]);}