1.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int arr[100][100];
int i,j,n=0;
printf("输入要打印的杨辉三角的行数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
arr[i][0]=1;//第一列都是1
for(j=0;j<=i;j++)
{
if(i==j)
{
arr[i][j]=1;//斜边都为1
}
if(i>=2&&j>=1)
{
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];//上面两个相加等于下面
}
}
}
for(i=0;i<n;i++)
{
/* for(j=0;j<n-1;j++)
{
printf("*");//打印空格
}*/
for(j=0;j<=i;j++)
{
printf("%d",arr[i][j]);
}
printf("\n");
}
return 0;
}
2.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n;
int i;
printf("输入一个一维数组的元素个数并输入该数组:\n");
scanf("%d",&n);
int arr[n];
int max1=arr[0];//最大值
int max2=arr[0];//第二大值
int min=arr[0];//最小值
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
max2 = max1 = min = arr[0];
for (i = 0; i < n; i++) {
if (arr[i] > max1) {
max1 = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
printf("最大值:%d\n", max1);
printf("最小值:%d\n", min);
for(i=0;i<n;i++)
{
if(arr[i]==max1)
continue;
else if(max2<arr[i])
{
max2=arr[i];
}
}
printf("第二大值为:%d\n",max2);
printf("该数组最大和为%d\n",max1+max2);
printf("该数字最大差为%d\n",max1-min);
return 0;
}
3.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n,m;
int i,j;
printf("输入一个m行n列的数组,并输入该数组:\n");
scanf("%d %d",&m,&n);
int arr[n][m];
int min1=arr[0][0];//最小值
int min2=arr[0][0];//第二小值
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%d",&arr[i][j]);
}
min2 = min1 = arr[0][0];
for (i = 0; i < m; i++)
{
for(j = 0;j<n;j++)
if (arr[i][j] < min1) {
min1 = arr[i][j];
}
}
printf("最小值:%d\n", min1);
if(min1==arr[0][0])
min2=arr[0][1];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(arr[i][j]==min1)
continue;
else if(min2>arr[i][j])
{
min2=arr[i][j];
}
}
}
printf("第小大值为:%d\n",min2);
return 0;
}
4.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n;
int i,j,k;
int key;
printf("输入数组的元素数:\n");
scanf("%d",&n);
int arr[n];
printf("输入数组:");
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);//输入数组
}
printf("输入的数组为:\n");
for(i=0;i<n;i++)
{
printf("%d\n",arr[i]);
}
printf("please enter key:\n");
scanf("%d",&key);//输入key
for(i=0;i<n;i++)
{
if(arr[i]==key)
{
j+=1;
k=i;
}
}
if(j==0)
printf("不存在key\n");
else if(j==1)
printf("下标为%d\n",k);
else
printf("key出现多次\n");
return 0;
}
5.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n,m;
int i,j;
printf("输入一个n行m列的数组,并输入该数组:\n");
scanf("%d %d",&n,&m);
int arr[n][m];
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
scanf("%d",&arr[i][j]);//输入数组
}
for(i=0;i<n;i++)
{
int row_sum = 0;
for(j=0;j<m;j++)
{
row_sum = row_sum +arr[i][j];
}
printf("第%d行的和为%d\n",i+1,row_sum);
}
for(j=0;j<m;j++)
{
int line_sum = 0;
for(i=0;i<n;i++)
{
line_sum = line_sum+arr[i][j];
}
printf("第%d列的和为%d\n",j+1,line_sum);
}
return 0;
}
6.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int m;
int i,j;
printf("输入一个m行m列的数组,并输入该数组:\n");
scanf("%d",&m);
int arr[m][m];
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
scanf("%d",&arr[i][j]);//输入数组
}
int sum1=0;//反对角线的和
int sum2=0;//正对角线的和
for(i=0;i<m;i++)
{
sum1+=arr[i][i];
}
for(i=0;i<m;i++)
{
sum2+=arr[i][m-i-1];
}
printf("差为%d",sum2-sum1);
return 0;
}
7.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a[2][3];
int b[3][2];
int i,j;
for(i = 0;i < 2; i++)
{
for(j = 0;j < 3; j++)
{
scanf("%d", &a[i][j]);//循环输入数组
}
}
for(i = 0;i < 2; i++)
{
for(j = 0;j < 3; j++)
{
b[j][i] = a[i][j];//转置行列对换
}
}
for(i = 0;i < 2; i++)
{
for(j = 0;j < 3; j++)
{
printf("%d ", a[i][j]);//输出数组a
}
printf("\n");
}
for(i = 0;i < 3; i++)
{
for(j = 0;j < 2; j++)
{
printf("%d ", b[i][j]);//输出转置后的数组b
}
printf("\n");
}
return 0;
}
8.
18.000000
9.
g
10.
3
11.
8
12.
0