- 编写一个程序。输出以下形式的前五行杨辉三角图案 (石峰)
思路提示:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
int main(int argc, const char *argv[])
{
int a[5][5];
for(int i =0;i<5;i++){
for(int j=0;j<=i;j++){
if(i ==j||j==0){
a[i][j] = 1;
// printf("%d ",a[i][j]);
}else{
a[i][j] = a[i-1][j]+a[i-1][j-1];
// printf("%d ",a[i][j]);
}
}
// printf("\n");
}
for(int i=0; i<5; i++){
for(int j=0; j<5-i;j++){
printf(" ");
}
for(int j=0; j<=i; j++)printf("%2d",a[i][j]);
printf("\n");
}
return 0;
}
注意拼凑
- 编写一个程序。请用 C、JAVA、C# 任一种语言,对数组 {3, 2, 10, 1, 23, 15, 82} 进行由小到大的排序。(安在软件)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
//快速排序
int main(int argc, const char *argv[])
{
int arr[] = {3,2,10,1,23,15,82};
int len = sizeof(arr)/sizeof(arr[0]);
for(int i = 0;i<len-1;i++){
int min = i;
for(int j =i+1;j<len;j++){
if(arr[j]<arr[min])
min = j;
}
if(i!=min){
int t = arr[i];
arr[i] = arr[min];
arr[min] = t;
}
}
for(int i = 0;i<len;i++){
printf("排序结果:%d\n",arr[i]);
}
return 0;
}
- 编写一个程序。假设你有一只刚出生的母兔,母兔第3年开始生小兔,以后每年生一只。如果生出的都是母兔,请代码实现:输入你拥有该母兔后的第几年,输出该年你拥有的兔子数。(北京信果科技)
//规律满足杨辉三角形数字规律,从第三年开始,每一年等于前两年的兔子数量和,使用数组存放前几年的兔子数量
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
int main(int argc, const char *argv[])
{
int n;
printf("请输入年份");
scanf("%d",&n);
int arr[n];
for(int i = 0;i<n;i++){
if(i<=1)arr[i] = 1;
else arr[i] = arr[i-1]+arr[i-2];
}
printf("兔子数量:%d\n",arr[n-1]);
return 0;
}
- 编写一个程序。输入两个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>
#include <limits.h>
int main(int argc, const char *argv[])
{
int arr[][3] = {1,2,3,1,2,3,1,2,3};
int aee[][3] = {1,2,3,4,5,6,7,8,9};
int row = sizeof(arr)/sizeof(arr[0]);
int roh = sizeof(arr[0])/sizeof(arr[0][0]);
int a[row][roh];
for(int i = 0;i<row;i++){
for(int j = 0;j<roh;j++){
a[i][j] = arr[i][j]+aee[i][j];
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
- 编写一个程序。一个长度为10的数组中重复数据,现要求相同数据只保留一份,其他的用0来代替,被替换的数据移到数组末尾。(数组内容自定) (富士安全,云尖软件开发)
-
int main(int argc, const char *argv[]) { //找出重复数字并置为零 int a[]={3, 2, 10, 1, 23, 15, 82,1,2,78}; int len = sizeof(a)/sizeof(a[0]); for(int i=0; i<len; i++){ for(int j=i+1; j<10; j++){ if(a[i]==a[j]){ a[j] = 0; } } } // 第一次遍历:将非零数放到数组前面 int j=0; for(int i=0; i<len; i++){ if(a[i] != 0){ a[j++] = a[i]; } } // 在j之后填充0 for(;j<len;j++){ a[j] = 0; } //打印数组 for(int i=0; i<len; i++){ printf("%d ",a[i]); } return 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;
}
}
}
第二步:从大到小排序 输出
- 【选做题】编写一个程序。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值的那两个整数,并输出它们的数组下标。输入: nums = [3,2,4],target = 6 输出:[1,2]。(郎宁电力
int main(int argc, const char *argv[]) { int arr[]={1,2,3,4,5,6,7,8,9}; int len = sizeof(arr)/sizeof(arr[0]); for(int i=0; i<len;i++){ printf("给定的数组:%d",arr[i]); } printf("给定的数字:8\n"); for(int i=0; i<len/2-1;i++){ for(int j = i;j<len;j++){ if(arr[i]+arr[j] == 8){ printf("%d %d\n %d+%d\n",i,j,arr[i],arr[j]); } } } return 0; }