【蓝蓝计算机考研算法训练第二期】day02

137 阅读1分钟

3、计算字符串中含有不同字符串的个数

编写一个函数,计算字符串中含有不同的字符个数。字符串在ASCII码范围内(0~127,包括0和127),换行表示结束符,不算在字符里。不在范围内不做统计,多个相同的字符只计算一次,例如,对于字符串abaca而言,有a,b,c三种不同字符因此输出3。数据范围:1<=n<=500

输入描述

输入一行没有空格的字符串、

输出描述

输入字符串中范围在(0~127,包括0和127)字符的种数。

例如:输入:

输入:
abc
输出:
3

输出:

输入:
aaa
输出:
1

思路:

对于此算法中,需要能够辨别ASCII码在0~127范围内相同字符的个数,需要进行编码,当输入一串字符串后可以输出不同的字符串个数。

具体实现

`#include<stdio.h> int main(void) {

int i,j,count=0,x=0;    //count代表字符的个数
char S[127]; 
printf("请输入一个字符串:") ;
scanf("%[^\n]",S);//^\n代表第一个字符是非换行符的所有字符 
for(i=0;S[i]!='\0';i++)//\0代表字符串为空 
{
	count++;
 } 
 for(i=0;i<count;i++)
 {
 	for(j=i+1;j<count;j++)
 	{
 		if(S[i]==S[j])
 		{
 			x++;//x代表相同字符个数 
 			break;
		 }
	 }
 }
 printf("该字符串中不同字符个数为:%d",count-x);
return 0;

} `

4、从键盘输入两个字符m和n,判断m和n的最小公倍数。

思路:

通过算法设计,可以实现输出结果自行输入,并能够计算出m和n的最小公倍数然后进行输出。

具体实现:

`#include <stdio.h> int main () {

int n,m;
printf("输入m:"); 
scanf("%d",&m);
printf("输入n:"); 
scanf("%d",&n);
int mul=m*n;
if (m<n)
{
	int tmp;
	tmp=m;
	m=n;
	n=tmp;//将最大数给m 
}
while(m%n)
{
	int tmp;
	tmp=m%n;
	m=n;
	n=tmp;
	
}
printf("最小公倍数为:%d",mul/n);
return 0;

}//本代码是先计算出两个数字的最大公因数,根据两数之积除以最大公因数得到最小公倍数 `