1.输入一个行数,打印对应行数杨辉三角
int main(int argc, const char *argv[])
{
printf("输入一个行数,打印出杨辉三角\n");
int line = 0;
scanf("%d",&line);
int arr[line][line];
bzero(arr,sizeof(arr));
for(int i = 0;i<line;i++)
{
for(int j = 0;j<=i;j++)
{
if(j==0 || i==j)
{
arr[i][j] = 1;
}else{
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
}
}
for(int i = 0;i<line;i++)
{
for(int j = 0;j<line;j++)
{
if(arr[i][j]!=0)
printf("%d\t",arr[i][j]);
}
putchar(10);
}
return 0;
}
2.输入一个n个元素的一维数组,计算最大的和,最大差(不允许使用排序)
int main(int argc, const char *argv[])
{
printf("输入一个N个元素的一维数组,计算最大的和,最大的差\n");
int arr[10];
for(int i = 0;i<10;i++)
{
scanf("%d",&arr[i]);
}
int max = arr[0],min = arr[0],max_se = arr[0];
for(int i = 1;i<10;i++)
{
if(max < arr[i])
{
max = arr[i];
}
if(min > arr[i])
{
min = arr[i];
}
}
for(int i = 1;i<10;i++)
{
if(max_se < arr[i] && arr[i]<max)
{
max_se = arr[i];
}
}
printf("maxdif = %d max_sum = %d\n",max - min,max + max_se);
return 0;
}
3.输入一个M行N列的二维数组,计算第二小值
int main(int argc, const char *argv[])
{
printf("输入一个M行N列的二维数组,计算第二小值\n");
int M=0,N=0;
scanf("%d %d",&M,&N);
printf("请输入%d个数\n",M*N);
int arr[M][N];
bzero(arr,sizeof(arr));
for(int i = 0;i<M;i++)
{
for(int j = 0;j<N;j++)
{
scanf("%d",&arr[i][j]);
}
}
int min_se = arr[0][0];
for(int i = 0;i<M;i++)
{
for(int j = 0;j<N;j++)
{
if(min_se>arr[i][j])
{
int temp = min_se;
min_se = arr[i][j];
arr[i][j] = temp;
}
}
}
min_se = arr[0][1];
printf("%d",min_se);
return 0;
}
4.输入n个元素的一维数组,输入查找key的值
int main(int argc, const char *argv[])
{
printf("输入n个元素的一维数组,输入查找key的值\n");
int n =0;
scanf("%d",&n);
int arr[n],key = 0;
bzero(arr,sizeof(arr));
for(int i = 0;i<n;i++)
{
scanf("%d",&arr[i]);
}
printf("输入key\n");
scanf("%d",&key);
int time = 0;
int ti = 0;
for(int i = 0;i<10;i++)
{
if(arr[i] == key)
{
time++;
ti = i;
}
}
if(time == 1)
printf("出现一次,下标为:%d\n",ti);
if(time > 1)
printf("出现%d次\n",time);
if(time ==0)
printf("不存在\n");
return 0;
}
5.输入一个m行n列的二位数组,输出每一行的和,以及每一列的和
int main(int argc, const char *argv[])
{
printf("输入一个m行n列的二位数组,输出每一行的和,以及每一列的和\n");
int m,n;
scanf("%d %d",&m,&n);
int arr[m][n];
bzero(arr,sizeof(arr));
int linesum = 0,rowsum = 0;
for(int i = 0;i<m;i++)
{
for(int j = 0;j<n;j++)
{
scanf("%d",&arr[i][j]);
}
}
for(int i = 0;i<m;i++)
{
int sum= 0;
for(int j =0;j<n;j++)
{
sum += arr[i][j];
}
printf("第%d行和是:%d\n",i,sum);
}
for(int i = 0;i<n;i++)
{
int sum = 0;
for(int j =0;j<m;j++)
{
sum += arr[j][i];
}
printf("第%d列和是:%d\n",i,sum);
}
return 0;
}
6.输入一个m行n列的二维数组,输出正对角线和反对角线的差
int main(int argc, const char *argv[])
{
printf("输入一个m行n列的二维数组,输出正对角线和反对角线的差\n")
int m,n;
scanf("%d %d",&m,&n);
int arr[m][n];
bzero(arr,sizeof(arr));
int linesum = 0,rowsum = 0;
int possum = 0, negnum = 0;
for(int i = 0;i<m;i++)
{
for(int j = 0;j<n;j++)
{
scanf("%d",&arr[i][j]);
if(i == j)
{
possum+=arr[i][j];
}
if((i+j) == n-1)
{
negnum+=arr[i][j];
}
}
}
printf("正对角线和反对角线差是:%d\n",possum-negnum);
return 0;
}
7.输入一个2行3列的二维数组,请实现转置(行列转换)
int main(int argc, const char *argv[])
{
printf("7.输入一个2行3列的二维数组,请实现转置(行列转换)\n");
int arr[2][3];
bzero(arr,sizeof(arr));
int arr1[3][2];
for(int i = 0;i<2;i++)
{
for(int j = 0;j<3;j++)
{
scanf("%d",&arr[i][j]);
arr1[j][i] = arr[i][j];
}
}
for(int i = 0;i<3;i++)
{
for(int j = 0;j<2;j++)
{
printf("%d ",arr1[i][j]);
}
printf("\n");
}
return 0;
}
8.设float a=2, b=4, c=3;,C语言表达式(1/2)+(a+b)*c的计算结果是:
18.000000
g
3
8
0