分离正整数,组成最大数和最小数,两个数组合并为一个数组,降序排列,求鞍点等

【实验题目1】 从键盘输入任意一个正整数。首先分离出该正整数中的每一位数字,并按逆序显示输出各位数字;然后用分离出的每位数字组成一个最大数和一个最小数,并显示输出。

#include<stdio.h>
void main()
{
	int a[10];
	int x,i,num=0,j,k,n;
	printf("请输入一个整数:\n");
	scanf("%d", &x);
	for(i=0;i<10;i++)
	{
		num++;
		a[i] = x % 10;
		x = x / 10;
		if (x == 0)
			break;
	}
	for(i=0;i<num;i++)
	printf("%d", a[i]);
	for (i = 0; i < num - 1; i++)
	{
		k = i;
		for (j = i + 1; j < num; j++)
		{
			if (a[k] < a[j])
			{
				k = j;
				n = a[i];;
				a[i] = a[k];
				a[k] = n;
			}
		}
	}
	printf("\n最大数为;\n");
	for (i = 0; i < num; i++)
		printf("%d", a[i]);
	printf("\n最小数为;\n");
	for (i = num - 1; i >= 0; i--)
		printf("%d", a[i]);

}

【实验题目2】任何一个自然数m的立方均可写成m个连续奇数之和。
例如:
  111 = 1
  222= 3+5
  333= 7+9+11
  444 = 13+15+17+19 555=21+23+25+27+29
编程实现:输入一自然数n,求组成n^3的n个连续奇数。

#include<stdio.h>
void main()
{
	int n,i;
	printf("请输入一个自然数:\n");
	scanf("%d",&n);
	printf("%d*%d*%d=", n, n, n);
	for (i = 0; i < n; i++)
	{
		printf("%d", n*(n - 1)+1+i*2);
		if (i < n - 1)
			printf("+");
	}
}

【实验题目3】编写程序:输入两个包含10个元素的数组,先将第一个数组采用冒泡法进行降序排列,第二个数组采用选择法排序进行降序排列,然后将这两个数组合并成一个降序数组。

#include<stdio.h>
void main()
{
	int a[10], b[10], c[20];
	int i,j,k,n;
	printf("请输入第一组数:\n");
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &a[i]);
	}
	printf("排序后;\n");
	for(i=9;i>0;i--)
		for (j = 0; j < i; j++)
		{
			if (a[j] < a[j+1])
			{
				n = a[j];
				a[j] = a[j+1];
				a[j+1] = n;
			}
		}
	for (i = 0; i < 10; i++)
	{
		printf("%d  ", a[i]);
	}
	printf("\n请输入第二组数:\n");
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &b[i]);
	}
	printf("排序后;\n");
	for (i = 0; i < 9; i++)
	{
		k = i;
		for (j = i+1; j < 10; j++)
		{
			if (a[k] < a[j])
			{
				n = a[j];
				a[j] = a[k];
				a[k] = n;
			}
		}
	}
	for (i = 0; i < 10; i++)
	{
		printf("%d  ", b[i]);
	}
	for (i = 0; i < 20; i++)
	{
		if ( i< 10)
		   c[i] = a[i];
		if (i >= 10)
			c[i] = b[i - 10];
	}
	printf("\n合并并且排序后;\n");
	for (i = 0; i < 19; i++)
	{
		k = i;
		for (j = i + 1; j < 20; j++)
		{
			if (c[k] < c[j])
			{
				n = c[j];
				c[j] = c[k];
				c[k] = n;
			}
		}
	}
	for (i = 0; i < 20; i++)
	{
		printf("%d  ", c[i]);
	}
}

【实验题目4】输入一个M行N列的二维数组,找出在该行上最大但在该列上最小的元素输出元素值及位置信息,若没有,则显示信息“没找到”。

#include<stdio.h>
void main()
{
	int a[3][3];
	int i, j, k,num=0;
	int flag, flag1;;
	printf("请输入一个三行三列的二维数组:\n");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			scanf("%d", &a[i][j]);
		}
	}
	printf("二维数组为;\n");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			flag = 0;
			flag1 = 0;
			for (k = 0; k < 3; k++)
			{
				if (a[i][j] < a[i][k])//当前行是否最大
					flag = 1;
			}
			for (k = 0; k < 3; k++)
			{
				if (a[i][j] > a[k][j])//当前列是否最小
					flag1 = 1;
			}
			if (!flag && !flag1)//当前行当前列是否都是最大
			{
				printf("行:%d 列:%d = %d\n", i + 1, j + 1, a[i][j]);
				num = 1;
			}
		}
	}
	if (num == 0)
		printf("不存在鞍点\n");
}
	

【实验题目5】编写程序:输入字符串s1和s2以及插入位置f,在字符串s1中的指定位置f处插入字符串s2。如:输入"BEIJING"、"123"和位置3,则输出:“BEI123JING”。

#include<stdio.h>
#include<string.h>
void main()
{
	char str1[10];
	char str2[10];
	char str3[20];
	int i,j,n,str1len,str2len;
	printf("请输入第一个字符串:\n");
	scanf("%s", str1);
	printf("请输入第二个字符以及插入的位置:\n");
	scanf("%s%d", str2, &n);
	str1len = strlen(str1);
	str2len = strlen(str2);
	for (i = 0; i < n; i++)
	{
		str3[i] = str1[i];
	}
	for (i = n; i < n + str2len; i++)
	{
		str3[i] = str2[i - n];
	}
	for (i = n + str2len; i < str1len + str2len; i++)
	{
		str3[i] = str1[n++];
	}
	str3[str1len + str2len] = '\0';
	printf("%s\n", str3);
}

【实验题目6】编写程序:输入若干个字符串,求出每个字符串的长度,并打印最长一个字符串的内容。

#include<stdio.h>
#include<string.h>
void main()
{
	int i, j, a[5], k;
	char str[5][10];
	printf("请输入字符串;\n");
	for (i = 0; i < 5; i++)
	{
		scanf("%s", str[i]);
	}
	for (i = 0; i < 5; i++)
	{
		printf("第%d个字符串的长度为:",i+1);
		a[i] = strlen(str[i]);
		printf("%d\n", a[i]);
	}
	for (i = 0; i < 4; i++)
	{
		k = i;
		for (j = i + 1; j < 5; j++)
		{
			if (a[k] < a[j])
				k = j;
		}
	}
	printf("最长字符串为:%s\n", str[k]);

}

有什么不对的地方,谢谢大家留言。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值