练习一
使用二维数组计算杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
.....
#include <myhead.h>
int main(int argc, const char *argv[])
{
int n;
printf("Please enter the rank : ");
scanf("%d", &n);
int arr[n][n], i, j;
for(i=0; i<n; i++)
{
for(j=0; j<=i; j++)
{
if(i==j || j==0)
arr[i][j] = 1;
else
arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
printf("%-4d", arr[i][j]);
}
putchar(10);
}
return 0;
}
练习二
输入一个n个元素的一维数组,计算最大的和,最大差(不允许使用排序)
最大和:第一大值+第二大值
最大差:第一大值-最小值
#include <myhead.h>
int main(int argc, const char *argv[])
{
int n, i;
printf("Please enter n :\n");
scanf("%d",&n);
int arr[n];
for(i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
int max = arr[0], min = arr[0], max_i;
for(i=0; i<n; i++)
{
if(max < arr[i])
{
max = arr[i];
max_i = i;
}
if(min > arr[i])
min = arr[i];
}
int second = min;
for(i=0; i<n; i++)
{
if(i = max_i)
continue;
if(second < arr[i])
second = arr[i];
}
printf("The largest sum: %d\tThe largest dif: %d\n", max+second, max-min);
return 0;
}
练习三
输入一个m行n列的二维数组,计算第二小值
#include <myhead.h>
int main(int argc, const char *argv[])
{
int m, n;
printf("Please enter m n : ");
scanf("%d %d", &m, &n);
int i, j;
int arr[m][n];
printf("Please enter a array with %d rows and %d columns:\n", m, n);
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
scanf("%d", &arr[i][j]);
}
}
int min = arr[0][0], max = arr[0][0], second;
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
if(min > arr[i][j])
min = arr[i][j];
if(max < arr[i][j])
max = arr[i][j];
}
}
second = max;
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
if(arr[i][j] == min)
continue;
if(second > arr[i][j])
second = arr[i][j];
}
}
printf("The second_min number is %d\n", second);
return 0;
}
练习四
输入n个元素的一维数组,输入查找的key值
如果key出现一次,则输出对应的下表
如果key没有出现,则提示不存在
如果key出现多次,则提示出现的次数
#include <myhead.h>
int main(int argc, const char *argv[])
{
int n;
printf("Please enter n: ");
scanf("%d", &n);
int arr[n];
for(int i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
int key;
printf("Please enter key: ");
scanf("%d", &key);
int count = 0;
int subscript;
for(int i=0; i<n; i++)
{
if(key == arr[i])
{
count++;
subscript = i;
}
}
if(count == 0)
printf("Don't exist!\n");
else if(count == 1)
printf("The subscript is %d\n", subscript);
else
printf("The frequency is %d\n", count);
return 0;
}
练习五
输入一个m行n列的二维数组,输出每一行的和,以及每一列的和
#include <myhead.h>
int main(int argc, const char *argv[])
{
int m, n;
printf("Please enter m n: ");
scanf("%d%d", &m, &n);
int arr[m][n];
int i, j;
printf("Please enter a array with %d rows and %d columns:\n", m, n);
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
scanf("%d", &arr[i][j]);
}
int sum;
for(i=0; i<m; i++)
{
sum = 0;
for(j=0; j<n; j++)
sum += arr[i][j];
printf("The sum of the No.%d line is %d.\n", i, sum);
}
for(j=0; j<n; j++)
{
sum = 0;
for(i=0; i<m; i++)
sum += arr[i][j];
printf("The sum of the No.%d column is %d.\n", j, sum);
}
return 0;
}
练习六
输入一个m行m列的二维数组,输出正对角线和反对角线的差
#include <myhead.h>
int main(int argc, const char *argv[])
{
int m, n;
printf("Please enter m n: ");
scanf("%d%d", &m, &n);
int arr[m][n];
int i, j;
int sum1 = 0, sum2 = 0;
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
scanf("%d", &arr[i][j]);
if(i == j)
sum1 += arr[i][j];
if(i+j == m-1)
sum2 +=arr[i][j];
}
}
printf("The diff in diagonals is %d\n", sum1-sum2);
return 0;
}
练习七
输入一个2行3列的二维数组,请实现转置(行列转换)
1 2 3
4 5 6 ----》 1 4
2 5
3 6
#include <myhead.h>
int main(int argc, const char *argv[])
{
int m, n;
printf("Please enter m n: ");
scanf("%d%d", &m, &n);
int arr[m][n], brr[n][m];
int i, j;
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
scanf("%d", &arr[i][j]);
brr[j][i] = arr[i][j];
}
}
printf("After matrix transpose: \n");
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
printf("%-4d", brr[i][j]);
putchar(10);
}
return 0;
}
练习八
设float a=2, b=4, c=3;,C语言表达式(1/2)+(a+b)*c的计算结果是:
18
练习九
下述程序执行后的输出结果是:
main()
{
int x='f';
printf("%c\n",'a'+(x-'a'+1));
}
g
练习十
执行语句“ k=7>>1; ”后,变量 k 的当前值是:
3
练习十一
若有宏定义:#define MOD(x,y) x%y
则执行以下语句后的输出结果是:
int a=10,b=94;
printf(″%d\n″,MOD(b,a+4));
8
练习十二
下列程序段运行后, x 的值是:
int a=1;b=2;x=0;
if(!( --a))x-- ;
if(!b)x=7;
else ++x;
标签:arr,练习,Please,int,作业,enter,基础,printf,0613 From: https://blog.csdn.net/Yadi_dr1/article/details/1396887240