1、编写一个程序。输出以下形式的前五行杨辉三角图案 (石峰)
#include <stdio.h>
int main()
{
int a,m,n;
scanf(" %d",&a);//输入行数
//已知行a,则列为2a-1,中位下标为(2a-1)/2==a-1
int arr[a][2*a-1];
//数组填充
for(m=0;m<a;m++)//行循环
{
//初始化填充0
for(n=0;n<2*a-1;n++)
{
arr[m][n]=0;
}
//外侧填充1
arr[m][a-1-m] =1;//左
arr[m][a-1+m] =1;//右
for(n=1;n<=m-1;n++)
{
int t =a-1-m+2*n;//内部下标
arr[m][t]=arr[m-1][t-1]+arr[m-1][t+1];
}
//打印
for(n=0;n<2*a-1;n++)
{
0!=arr[m][n] ? printf("%-2d ",arr[m][n])
: printf(" ");
}
putchar('\n');
}
return 0;
}
结果:
2、编写一个程序。请用 C、JAVA、C# 任一种语言,对数组 {3, 2, 10, 1, 23, 15, 82} 进行由小到大的排序。(安在软件)
#include <stdio.h>
int main()
{
int arr[]={3,2,10,1,23,15,82},m,n,t;
for(m =0;m<sizeof(arr)/4;m++)
{
for(n =m+1;n<sizeof(arr)/4;n++)
{
t=0;
arr[m]>arr[n] ? (t=arr[m],arr[m]=arr[n],arr[n]=t)
: (t=0);
}
}
for(m=0;m<sizeof(arr)/4;m++)
{
printf("%d ",arr[m]);
}
return 0;
}
3、编写一个程序。假设你有一只刚出生的母兔,母兔第3年开始生小兔,以后每年生一只。如果生出的都是母兔,请代码实现:输入你拥有该母兔后的第几年,输出该年你拥有的兔子数。(北京信果科技)
#include <stdio.h>
int main()
{
int n,i;
scanf(" %d",&n);
int arr[n];
for(i=0;i<n;i++)
{
arr[i]=(i>1 ? arr[i-1]+arr[i-2] : 1);
}
printf("%d\n",arr[n-1]);
}
4、编写一个程序。输入两个n行m列的矩阵A和B,输出他们的和A+B(小孩哥)
#include <stdio.h>
int main()
{
int m,n;
printf("输入行数、列数:");
scanf(" %d %d",&n,&m);
int i,r, a[n][m],b[n][m],c[n][m];
for(i=0;i<n;i++)
{
for(r=0;r<m;r++)
{
printf("输入数组数组b下标为%d %d的数据:",i,r);
scanf(" %d %d",&a[i][r],&b[i][r]);
c[i][r]=a[i][r]+b[i][r];
}
}
for(i=0;i<n;i++)
{
for(r=0;r<m;r++)
{
printf("%d ",c[i][r]);
}
putchar('\n');
}
}
5、编写一个程序。一个长度为10的数组中重复数据,现要求相同数据只保留一份,其他的用0来代替,被替换的数据移到数组末尾。(数组内容自定) (富士安全,云尖软件开发)
#include <stdio.h>
int main()
{
int arr[10],i,n,m=0;
for(i=0;i<10-m;i++)
{
top:
//超出长度退出
if(9<i+m) break;
printf("请输入第%d个数据:",i+1+m);
scanf(" %d",&arr[i]);
//查重
for(n=0;n<i;n++)
{
arr[i]=(arr[i]==arr[n] ? 0 : arr[i]);
}
//0移到尾部,重新获取
if(0==arr[i])
{
arr[9-m]=0;
m++;
goto top;
}
}
for(i=0;i<10;i++)
printf("%d ",arr[i]);
return 0;
}
6、【选做题】编写一个程序。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值的那两个整数,并输出它们的数组下标。输入: nums = [3,2,4],target = 6 输出:[1,2]。(郎宁电力)
#include <stdio.h>
int main()
{
int n,i,target;
printf("请输入数组长度:");
scanf(" %d",&n);
int nums[n];
for(i=0;i<n;i++)
{
printf("请输入第%d个数据:",i+1);
scanf(" %d",&nums[i]);
}
printf("请输入目标值:");
scanf(" %d",&target);
printf("求和结果可以为:\n");
for(n=0;n<sizeof(nums)/4-1;n++)
{
for(i=n+1;i<sizeof(nums)/4;i++)
{
if(target==nums[n]+nums[i])
printf("[%d,%d]",n,i);
}
}
printf("\n");
return 0;
}