冒泡排序/字符串复制/整除/三位数输出按1:2:3条件寻找

1.青年歌手参加歌曲大奖赛,有10个评委打分,试编程求选手的平均得分(要求去掉一个最高分和一个最低分)

  比较大小  用冒泡

冒泡排序

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
int main(void)
{
	double a[10] = { 0 };//定义数组用来接收
	int i = 0;
	int j = 0;//用于冒泡排序
	double t = 0;//用于交换大小值
	double sum = 0;//8个评委总分
	double average = 0;//八个评委平均分
	printf("Enter 10 scores:");
	for (i = 0; i <= 9;i++)
	{
		scanf("%lf", &a[i]);
	}//输入十个分数
	for (i = 0; i <= 8; i++)
	{
		for (j = 0;j <= 8 - i;j++)
		{
			if (a[j] > a[j + 1])
			{
				t = a[j];
				a[j] = a[j + 1];
				a[j + 1] = t;
			}
		}
	}//冒泡排序
	for (i = 1;i <= 8;i++)
	{
		sum += a[i];
	}//8个评委总分
	average = sum / 8.0;//平均分
	printf("%f", average);//输出
	return 0;
}

方法二: 应用max()和min()

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int i = 0,j=0,t=0;
	double  a[10] = { 0 };
	double sum = 0.0;
	int max = 0, min = 0;
	printf("请输入成绩:\n");
	//循环输入
	for (i = 0; i < 10; i++)
	{
		scanf("%lf", &a[i]);
	}
	//找出最小值和最大值
	for (i = 1,j = 1;i < 10;i++,j++)
	{
		if (a[i] > a[max])
		{
			max = i;
		}
		if (a[j] < a[min])
		{
			min = j;
		}
	}
	for (i = 0; i < 10; i++)
	{
		sum += a[i];//求和
	}
	t = sum - a[min] - a[max]; //在减去最大值和最小值
	printf("%lf", t/8.0);
	return 0;
}

2.输入两个正整数m和k,其中1<m<100000,1<k<5 ,判断m 能否被19整除,且恰好含有k个3,
 如果满足条件,则输出YES,否则,输出NO。 

例如,输入:43833 3,满足条件,输出YES。
 如果输入:39331 3,尽管有3个3,但不能被19整除,也不满足条件,应输出NO。

方法一:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#if(0)
int main()
{
	int m = 0, k = 0;
	int i = 0, j = 0, t = 3;//循环变量
	int flag = 1;
	printf("请输入两个整数m和k\n");
	scanf("%d%d", &m, &k);
	for (i = 0; i < m; i++)
	{
		for (j = 1; j < k; j++)
		{
			if ((m % 19 == 0) && (t = k % 3 == 0) && (t = 3))//条件限制
			{

				flag = 1;//代表Yes
			}
			else
			{
				flag = 0;//代表No
			}
		}
	}
	if (flag == 1)
	{
		printf("Yes");
	}
	else
	{
		printf("No");
	}
	return 0;
}

方法二:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int m = 0;
	int k = 0;
	int i = 0;
	int count = 0;
	printf("m 和 k:");
	scanf("%d%d", &m, &k);
	if (m % 19 == 0)
	{
		while (m != 0)
		{
			if (m % 10 == 3)
			{
				count++;
            }
			m = m / 10;
		}
		if (count == k)
		{
			printf("YES");
		}
		else
		{
			printf("NO");
		}
	}
	else
	{
		printf("NO");
	}
}

3.输入一个字符串,将其中的元音字母(a、e、i、o、u)复制到另一个字符串,然后输出元音字母的字符串。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	char a[20];//存放原字符串
	char  b[20];//存放原音字符串
	int i = 0;//计数
	int j = 0;//计数
	printf("请输入一个字符串:");
	while ((a[i] = getchar()) != '\n')//输入源字符串
	{
		if (a[i] == 'a' || a[i] == 'e' || a[i] == 'i' || a[i] == 'o' || a[i] == 'u')
		{                      //判断是不是元音字母
			b[j] = a[i];       //成立便存放在b数组
			j++;               //计数加一
		}
		i++;//计数加一
	}
	b[j] = '\0';//让b字符结束
	printf("元音字母字符串是:");
	puts(b);//输出b字符
	return 0;
}

4.将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成 
1:2:3的比例,试求出所有满足条件的三个三位数。 
例如:三个三位数192,384,576满足以上条件。 

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
	int a = 1;
	int b= 1;
	int c = 1;//定义a,b,c分别为三个三位数
	int m[9] = { 0 };//定义数组
	int i = 0;
	int j = 0;//定义循环变量
	for (a = 123; a < 333; a++)//定义123是1:2:3比例得来
	{
		b = 2 * a;
		c = 3 * a;//使得a:b:c比例为1;2:3
		m[0] = a % 10;//个
		m[1] = a / 10 % 10;//十位
		m[2] = a / 100;//百位
		m[3] = b % 10;
		m[4] = b / 10 % 10;
		m[5] = b / 100;
		m[6] = c % 10;
		m[7] = c / 10 % 10;
		m[8] = c / 100;
	//用m[i]分别接收a,b,c的个、十、百位
		for (i = 0;i < 8;i++)
		{
			for (j = i + 1;j < 9;j++)
			{
				if (m[i] == m[j] || m[i] == 0 || m[j] == 0)//不重复且不为0
				{
					break;
				}
			}
			if (j < 9)//跳出外面这个循环之后防备
			{
				break;
			}
		}
		if (i == 8 && j == 9)//跳出整个大循环之后结束且输出
		{
			printf("%d %d %d\n", a, b, c);
		}
	}//利用for循环找出九位数都不重复的a,b,c
	return 0;
}

输入字符串

int main()
{
     int a[80] = { '\0' };
    scanf("%d", a);
    
    printf("%d", a);
    return 0;
}

或者

for (i = 0; i <= 9; i++)
{
	scanf("%c", &a[i]);
}

计算字符串长度

int main()
{
	 char a[80] = { '\0' };
	scanf("%s", a);
	int len = strlen(a);
	printf("%d", len);
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值