淘先锋技术网

首页 1 2 3 4 5 6 7
2017年:
1.输入n(1<=n<=9),打印对应行数的三角形。要注意非法输入。
2.输入n,判断n是否在n平方的右边出现。比如1,5,6,25,都在它的平方最右侧出现,就输出yes,否则输出no,这题好像跟前年的一样,题目的叙述有点问题,当时好多人问老师来着。
3.输入若干字符串,以空格隔开,输入回车结束,将字符串按ascii码表排列后输出。比如输入ac cf bgh\n,输出ac bgh cf。
4.输入字符串,递归输出它们的全排列(不可重复)。比如输入abc,输出abc,acb,bac,bca,cba,cab。测试样例基本正常,有一个比较奇怪,是abab,不知道该输出什么
1.
#include<stdio.h>

int main()
{
	int n;
	scanf("%d",&n);
	if(n<1||n>9)
	{
		printf("error");
		return 0;
	}
	for(int i=1;i<=n;i++)
	{
		int j=n-i;
		while(j--)
			printf(" ");
		int k=2*i-1;
		while(k--)
			printf("*");
		printf("\n");
	}


}
2.
#include<stdio.h>

int main()
{
	int n,k=0,i=0,p=0;
	long int num;
	scanf("%d",&n);
	num=n*n;
	int l=n,o=1;
	while(l!=0)
	{
		l/=10;
		k++;
		o=o*10;
	}
	p=num%o;
	//printf("%d %d\n",p,n);
	if(p==n)
		printf("yes");
	else
		printf("no");
}

3.
#include<stdio.h>
#include<string.h>

void swap(char p[],char q[])
{
	char temp[100];
	strcpy(temp,p);
	strcpy(p,q);
	strcpy(q,temp);
}

int main()
{
	char str[100][100],c,str1[100][100];
	int i=0,cnt=0;
	do
	{
		scanf("%s",str[i++]);
		scanf("%c",&c);
		cnt++;
	}while(c!='\n');
	for(i=0;i<cnt;i++)
	{
		for(int j=i;j<cnt;j++)
		{
			if(strcmp(str[i],str[j])>0)
				swap(str[i],str[j]);
		}
	}
	for(i=0;i<cnt;i++)
		printf("%s\n",str[i]);

}

4.//无法去重,输入abab这种就会有重复,就按不同的算吧
    #include<stdio.h>  
    #include<math.h>  
    #include <string.h>  
	char str[100];
void recu(char *r,int m,int n)
{
	if(n==m)
	{
		char *y=r;
		for(int a=0;a<m;a++)
			printf("%c",*r++);
		printf("\n");
	}
	else
	for(int j=n;j<m;j++)
	{
		char temp;
		temp=str[j];
		str[j]=str[n];
		str[n]=temp;
		recu(r,m,n+1);
		temp=str[j];
		str[j]=str[n];
		str[n]=temp;
	}
}


int main()
{
	char *r=str;
	int i=0;
	scanf("%s",str);
	while(*r!='\0')
	{
		r++;
		i++;
	}
	r=str;
	//printf("%d\n",i);
//	printf("piror:%s*",str);
	recu(r,i,0);

}