1.使用二维数组计算杨辉三角
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n;//定义显示几行杨辉三角数
printf("please enter n:");
scanf("%d",&n);
int arr[100][100];
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
if(i>1 && j>0)
{
arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
}
else
{
arr[i][j]=1;
}
}
}
printf("打印杨辉三角:\n");
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)//打印数
{
printf("%d ",arr[i][j]);
}
putchar(10);
}
return 0;
}
⒉.输入一个n个元素的一维数组,计算最大的和,最大差(不允许使用排序)
最大和:第一大值+第二大值
最大差:第一大值-最小值
include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n;//定义输入元素的个数
printf("please enter n:");
scanf("%d",&n);//注意:一定要先确定元素的个数(即n的值),不然定义数组长度时,n是个变量
int arr[n];
int i;
for(i=0;i<n;i++)
{
printf("please enter arr value:");
scanf("%d",&arr[i]);
}
int max=arr[0];
int min=arr[0];
for(i=1;i<n;i++)
{
if(max<arr[i])
{
max=arr[i];
}
if(min>arr[i])
{
min=arr[i];
}
}
int second_max=min;
for(i=0;i<n;i++)
{
if(second_max<arr[i] && arr[i]!=max)
{
second_max=arr[i];
}
}
printf("second_max=%d\n",second_max);
int max_sum=max+second_max;
int max_difference=max-min;
printf("max_sum=%d max_difference=%d\n",max_sum,max_difference);
return 0;
}
3.输入一个m行n列的二维数组,计算第二小值
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int m,n;
printf("please enter m row:");
scanf("%d",&m);
printf("please enter n column:");
scanf("%d",&n);
int arr[m][n];
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("please enter arr value:");
scanf("%d",&arr[i][j]);
}
}
int max=arr[0][0];
int min=arr[0][0];
int second_min;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(max<arr[i][j])
{
max=arr[i][j];
}
if(min>arr[i][j])
{
min=arr[i][j];
}
}
}
second_min=max;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(second_min>arr[i][j] && arr[i][j]!=min)
{
second_min=arr[i][j];
}
}
}
printf("数组中的第二小值为:%d\n",second_min);
return 0;
}
4.输入n个元素的一维数组,输入查找的key值
如果key出现一次,则输出对应的下表
如果key没有出现,则提示不存在
如果key出现多次,则提示出现的次数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n;
printf("please enter n:");
scanf("%d",&n);
int arr[n];
int i;
int key,index,count = 0;
for(i=0;i<n;i++)
{
printf("please enter arr value:");
scanf("%d",&arr[i]);
}
printf("您想要需要查找的key是:");
scanf("%d",&key);
for(int i=0;i<n;i++)
{
if(key==arr[i])
{
index=i;
count ++;
}
}
if(count==0)
{
printf("key不存在\n");
}else if(count==1)
{
printf("key的下标为:%d\n",index);
}else
{
printf("key出现了%d次\n",count);
}
return 0;
}
5.输入一个m行n列的二维数组,输出每一行的和,以及每一列的和
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int m,n;
printf("please enter m row && n column:");
scanf("%d%d",&m,&n);
int arr[m][n];
int i,j,row_sum=0,column_sum=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("please enter arr value:");
scanf("%d",&arr[i][j]);
}
}
for(i=0;i<m;i++)
{
row_sum=0;//输出完一行的和之后要进行清零操作,不然后面行的和会累加
for(j=0;j<n;j++)
{
row_sum+=arr[i][j];
}
printf("第%d行的和为:%d\n",i+1,row_sum);
}
for(i=0;i<n;i++)
{
column_sum=0;//输出完一列的和之后要进行清零操作,不然后面列的和会累加
for(j=0;j<m;j++)
{
column_sum+=arr[j][i];
}
printf("第%d列的和为:%d\n",i+1,column_sum);
}
return 0;
}
6.输入一个m行m列的二维数组,输出正对角线和反对角线的差
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int m;
printf("please enter m:");
scanf("%d",&m);
int arr[m][m];
int i,j;
int Diagonal_sum=0,back_Diagonal_sum=0;
int difference;
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
printf("please enter arr value:");
scanf("%d",&arr[i][j]);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
if(i==j)
{
Diagonal_sum+=arr[i][j];
}
if(i+j==m-1)
{
back_Diagonal_sum+=arr[i][j];
}
}
}
difference=Diagonal_sum-back_Diagonal_sum;
printf("正对角线和反对角线的差为:%d\n",difference);
return 0;
}
7.输入一个2行3列的二维数组,请实现转置(行列转换)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int x,y;//定义几行几列
printf("please enter x row && y column:");
scanf("%d%d",&x,&y);
int arr[x][y];
int i,j;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
printf("please enter arr value:");
scanf("%d",&arr[i][j]);
}
}
for(i=0;i<y;i++)
{
for(j=0;j<x;j++)
{
printf("%d ",arr[j][i]);
}
putchar(10);
}
return 0;
}
8.设float a=2,b=4,c=3; ,C语言表达式(1/2)+(a+b)*c的计算结果是:
答:18
9.下述程序执行后的输出结果是:
main()
{
int x='f;
printf("%cIn",'a'+(x-'a'+1));}
答:g
10.执行语句“ k=7>>1; "后,变量k的当前值是:
答:3
11.若有宏定义:#define MOD(x,y)x%y
则执行以下语句后的输出结果是:
int a=10,b=94;
printf("%dIn",MOD(b,a+4));
答:8
12.下列程序段运行后,x的值是:int a=1;b=2;x=0;
if(!( --a))x-- ;if(!b)x=7;else ++x;
答:0