C语言笔记

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;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值