1.定义数组为全局时,默认值为全为0。定义为局部时必须进行初始化,否则会报错。
筛素数
#include<stdio.h>
int b[105];//把数组全部初始化为0要用大括号
int main(){
int a[105];
int c[1000]={1};
for(int i=1;i<100;i++){
a[i]=i;
b[i]=1;
}
b[1]=0;
for(int i=2;i<100;i++){
if(b[i]){
for(int j=2*i;j<100;j=j+i)
b[j]=0;
}
}
for(int i=1;i<100;i++){
if(b[i]) printf("%d ",a[i]);
}
return 0;
}
2.选择排序
#include<stdio.h>
//输入十个数,用选择排序法进行排序
int main(){
int a[15],temp;
for(int i=1;i<=10;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<=9;i++){//进行9次选择
int min=i;
for(int j=i+1;j<=10;j++){//前面已经确定,只比较它后面的
if(a[j]<a[min]){
min=j;
}
}
if(min!=i){
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
for(int i=1;i<=10;i++){
printf("%d ",a[i]);
}
return 0;
}
选择排序
#include<stdio.h>
int main(){
int a[11]={1,2,3,5,6,7,8,9,34,56};
int number;
scanf("%d",&number);
if(number>a[9]){
a[10]=number;
}
else{
for(int i=0;i<10;i++){
if(number<a[i]){
for(int j=10;j>i;j--){
a[j]=a[j-1];
}
a[i]=number;
break;//赋值之后就跳出,要写在if里面
}
}
}
for(int i=0;i<=10;i++){
printf("%d ",a[i]);
}
return 0;
}
逆序
#include<stdio.h>
int main(){
int a[11]={1,2,3,5,6,7,8,9,34,56};
int temp;
for(int i=0;i<5;i++){//数组颠倒顺序
temp=a[i];
a[i]=a[9-i];
a[9-i]=temp;
}
for(int i=0;i<10;i++){
printf("%d ",a[i]);
}
return 0;
}
杨辉三角
#include<stdio.h>
int a[11][11];
int main(){
for(int i=1;i<=10;i++){
a[i][1]=1;
a[i][i]=1;
}
for(int i=3;i<=10;i++){
for(int j=2;j<i;j++){
a[i][j]=a[i-1][j]+a[i-1][j-1];//看图找到规律,计算即可
}
}
for(int i=1;i<=10;i++){
for(int j=1;j<=i;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
找出二维数组中行最大,列最小
#include<stdio.h>
int a[11][11];
int max,maxj;
int flag;
int main(){
for(int i=1;i<=4;i++){
for(int j=1;j<=5;j++){
scanf("%d",&a[i][j]);
}
}
for(int i=1;i<=4;i++){
flag=1;
max=a[i][1];
maxj=1;
for(int j=1;j<=5;j++){
if(a[i][j]>max){
max=a[i][j];
maxj=j;
}
}
for(int k=1;k<=4;k++){
if(a[i][maxj]>a[k][maxj]){
flag=0;
continue;
}
}
if(flag){
printf("a[%d][%d]=%d",i,maxj,max);
break;
}
}
if(!flag){
printf("不存在");
}
return 0;
}
最小公约数与最大公倍数
#include<stdio.h>
int gcd(int p,int q){
return p%q!=0?gcd(q,p%q):q;
}
int main(){
int p,q,r;
scanf("%d%d",&p,&q);
if(p<q){
int t=q;
q=p;
p=t;
}
r=gcd(p,q);
printf("%d %d",r,p*q/r);
return 0;
}
行与列交换
#include<stdio.h>
int main(){
int a[5][5];
int t;
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++){ //矩阵行与列交换
for(int j=i+1;j<=3;j++){
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
printf("%d ",a[i][j]);
}
puts("");
}
return 0;
}