数组的应用

问题:1.编写一个程序。输出以下形式的前五行杨辉三角图案 (石峰)

思路提示:

注意拼凑

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 5
int main(int argc, const char *argv[])
{
	int a[N][N]={0};
	int i, j, k;
	for(i=0; i<N; i++){
		for(j=0; j<=i; j++){
			if((j==0) || (j==i)) {
				a[i][j] = 1;
			}else{
				a[i][j] = a[i-1][j-1] + a[i-1][j];
			}
		}
	}
	for(i=0;i<N;i++){
		for(k=0; k<N-i; k++){
			printf(" ");
		}
		for(j=0;j<=i;j++){
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

问题:2.编写一个程序。请用 C、JAVA、C# 任一种语言,对数组 {3, 2, 10, 1, 23, 15, 82} 进行由小到大的排序。(安在软件)

思路提示:

int a[]={3, 2, 10, 1, 23, 15, 82};

int n=sizeof(a)/sizeof(int);

要求使用冒泡排序 和 简单选择排序实现

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a[] = {1,9,3,4,6,8,7,5,2,0};
	int n=sizeof(a)/sizeof(int);
	int i, j, k, t;
	for(i=1; i<n; i++){
		for(j=0; j<n-i; j++){
			if(a[j]>a[j+1]){
				t=a[j],a[j] = a[j+1], a[j+1]=t; 
			}
		}
	}	
	for(i=0; i<n; i++){
			printf("%d ",a[i]);
		}

	printf("\n");
	return 0;
}

问题:3.编写一个程序。假设你有一只刚出生的母兔,母兔第3年开始生小兔,以后每年生一只。如果生出的都是母兔,请代码实现:输入你拥有该母兔后的第几年,输出该年你拥有的兔子数。(北京信果科技)

思路提示:1  1  2  3  5   8   13   21

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int t, i;
	printf("输入年份");
	scanf("%d", &t);
	int a[t];
	for(i=0; i<=t-1; i++){
		if(i==0 || i==1){
			a[i]=1;
		}else{
			a[i] = a[i-1] + a[i-2];
		}
		printf("%4d\n", a[i]);


	}
	printf("在%d年后有%d只兔子\n", t, a[t-1]);
	return 0;
}

问题:4.编写一个程序。输入两个n行m列的矩阵A和B,输出他们的和A+B(小孩哥)

思路提示:定义两个二维数组 int a[10][10] , b[10][10];输入行数列数;然后对a数组元素和b数组元素对应求和【可以赋值给c数组】。最后输出求和后的结果

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int i, j, m, n, sum=0;
	printf("输入数列为几行几列");
	scanf("%d%d", &n, &m);
	int A[n][m], B[n][m], C[n][m];


	for(i=0; i<n; i++){
		for(j=0; j<m; j++){
			
			printf("请输入A数列第%d行的第%d个数", i+1, j+1);
			scanf("%d", &A[i][j]);
		}
	}	
	for(i=0; i<n; i++){
		for(j=0; j<m; j++){
			
			printf("请输入B数列第%d行的第%d个数", i+1, j+1);
			scanf("%d", &B[i][j]);
		}
	}

	for(i=0; i<m; i++){
		for(j=0; j<n; j++){
			C[j][i] = A[j][i] + B[j][i];
			printf("%d ", C[j][i]);		
		}
		printf("\n");
	}
	printf("总和为%d\n", sum);
	return 0;
}

问题:5.编写一个程序。一个长度为10的数组中重复数据,现要求相同数据只保留一份,其他的用0来代替,被替换的数据移到数组末尾。(数组内容自定) (富士安全,云尖软件开发)

int a[]={3, 2, 10, 1, 23, 15, 82,1,2,78};

提示思路:

第一步:重复数组用0代替

for(i=0; i<10; i++){

for(j=i+1; j<10; j++){

if(a[i]==a[j]){

a[j] = 0;

}

}

}

第二步:从大到小排序 输出

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a[] = {3,2,10,1,23,15,82,1,2,78};
	int n=sizeof(a)/sizeof(int);
	int i, j, k, t;

//	for(i=1; i<n; i++){
//for(j=0; j<n; j++){
//		if(a[i]==a[j]) a[j]=0;
//		}
//	}
	for(i=1; i<n; i++){
		for(j=0; j<n-i; j++){
			if(a[i]==a[j]){
				a[i]=0;
			}else if(a[j]<a[j+1]){
				t=a[j],a[j] = a[j+1], a[j+1]=t; 
			
			}
		}
	}	
	for(i=0; i<n; i++){
			printf("%d ",a[i]);
		}

	printf("\n");
	return 0;
}

用冒泡法没有成功

问题:6.【选做题】编写一个程序。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值的那两个整数,并输出它们的数组下标。输入: nums = [3,2,4],target = 6 输出:[1,2]。(郎宁电力)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a[]={6, 1, 8, 7, 5, 4, 3, 2, 9};
	int i, j, k;
	printf("输入一个数");
	scanf("%d", &k);
	for(i=0; i<9; i++){
		for(j=0; j<10; j++){
			if(a[i]+a[j]==k){
			printf("%d %d\n", i, j);
			}
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值