C基础0613作业

练习一

使用二维数组计算杨辉三角

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;

0

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值