1.编写一个程序。输出前五行杨辉三角图案
int main(int argc, const char *argv[])
{
int n;
//输入杨辉三角阶数
scanf("%d",&n);
int arr[n][n];
printf("%d阶杨辉三角为:\n",n);
//控制行
for(int i=0;i<n;i++)
{
//每一行前输出空格
for(int j=0;j<n-i;j++)
{
printf(" ");
}
//控制列数
for(int j=0;j<=i;j++)
{
//每一行第一个和最后一个赋值1
if(j==0||i==j)
{
arr[i][j]=1;
}
else{
//其余等上一行相邻两个数之和
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
printf("%d ",arr[i][j]);
}
//输出一行数字后换行
printf("\n");
}
return 0;
}
运行结果:
2.编写一个程序。请用 C、JAVA、C# 任一种语言,对数组 {3, 2, 10, 1, 23, 15, 82} 进行由小到大的排序。
int main(int argc, const char *argv[])
{
int arr[]={3,2,10,1,23,15,82};
//计算数组长度
for(int i=0;i<sizeof(arr)/sizeof(arr[0])-1;i++)
{
//记录下标
int index=i;
for(int j=i+1;j<sizeof(arr)/sizeof(arr[0]);j++)
{
//比较大小
if(arr[index]>arr[j])
{
index=j;
}
}
//判断下标是否发生变化,如果改变,交换位置
if(index!=i)
{
int temp=arr[index];
arr[index]=arr[i];
arr[i]=temp;
}
}
for(int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
{
printf("%d\t",arr[i]);
}
printf("\n");
return 0;
}
运行结果:
3.编写一个程序。假设你有一只刚出生的母兔,母兔第3年开始生小兔,以后每年生一只。如果生出的都是母兔,请代码实现:输入你拥有该母兔后的第几年,输出该年你拥有的兔子数。
int main(int argc, const char *argv[])
{
int year;
//输入年数
scanf("%d",&year);
printf("今年是拥有该母兔的第%d年\n",year);
//创建数组存储数量
int arr[year-1];
for(int i=0;i<year;i++)
{
//前两年只有一只兔子
if(i==0||i==1)
{
arr[i]=1;
}
else
{
//三年及以后兔子数为前两年之和
arr[i]=arr[i-1]+arr[i-2];
}
}
printf("今年有%d只兔子\n",arr[year-1]);
return 0;
}
运行结果:
4.编写一个程序。输入两个n行m列的矩阵A和B,输出他们的和A+B
int main(int argc, const char *argv[])
{
int n,m;
scanf("%d %d",&n,&m);
int arr[n][m],brr[n][m],crr[n][m];
//输入arr数组
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
scanf("%d",&arr[i][j]);
}
}
//输入brr数组
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
scanf("%d",&brr[i][j]);
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
//先初始化crr各项的值,再求和
crr[i][j]=0;
crr[i][j]=arr[i][j]+brr[i][j];
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
printf("%3d",crr[i][j]);
}
}
return 0;
}
运行结果:
5.编写一个程序。一个长度为10的数组中重复数据,现要求相同数据只保留一份,其他的用0来代替,被替换的数据移到数组末尾。(数组内容自定)
int main(int argc, const char *argv[])
{
int arr[10]={1,9,5,3,1,5,8,7,2,6};
for(int i=0;i<10;i++)
{
for(int j=i+1;j<10;j++)
{
//相同值赋值0
if(arr[i]==arr[j])
arr[j]=0;
}
}
//冒泡排序
for(int i=0;i<10;i++)
{
for(int j=0;j<10-1-i;j++)
{
if(arr[j]<arr[j+1])
{
int temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
for(int i=0;i<10;i++)
{
printf("%d\t",arr[i]);
}
printf("\n");
return 0;
}
运行结果:
6.编写一个程序。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值的那两个整数,并输出它们的数组下标。输入: nums = [3,2,4],target = 6 输出:[1,2]。
int main(int argc, const char *argv[])
{
int nums[5]={1,2,3,4,5};
int target;
scanf("%d",&target);
for(int i=0;i<5;i++)
{
for(int j=i+1;j<5;j++)
{
if(nums[i]+nums[j]==target)
{
printf("%d %d\n",i,j);
}
}
}
return 0;
}
运行结果: