02_N 개의 길이 가 최대 1000 에 이 를 수 있 는 수 를 정렬 하고 주어진 문자열 을 찾 아 중복 되 는 문 자 를 찾 아 그 위 치 를 제시 하고 일련의 정 수 를 입력 하여 그 중에서 가장 큰 수 를 골 라 내 고 나머지 수 를 정렬 합 니 다.

1. 제목 설명:
N 개의 길이 가 최대 1000 에 달 하 는 수 를 정렬 합 니 다.
입력:
첫 번 째 행동 의 정수 N 을 입력 하 십시오. (1 < = N < = 100)
다음 N 줄 은 줄 마다 하나의 수가 있 고 수의 길이 범 위 는 1 < = len < = 1000 입 니 다.
모든 수 는 하나의 정수 이 며 접두사 0 이 포함 되 지 않도록 보증 합 니 다.
출력:
여러 그룹의 테스트 데이터 가 있 을 수 있 습 니 다. 각 그룹의 데이터 에 대해 제 시 된 N 개 수 를 작은 것 에서 큰 것 으로 정렬 하고 출력 정렬 후의 결 과 는 각각 한 줄 을 차지 합 니 다.
샘플 입력:
3
11111111111111111111111111111
2222222222222222222222222222222222
33333333
샘플 출력:
33333333
11111111111111111111111111111
2222222222222222222222222222222222
답안 을 참고 하 다
#include<stdio.h>
#include<string.h>

//  n         1000      
void sortnum(char num[100][1000], int n)
{
	char temp[1000];
	int k, i;

	//    
	for(k=0; k<n; k++)
	{
		scanf("%s", num[k]);
	}
	for(i=0; i<n; i++)
	{
		for(k=0; k<n-i-1; k++)
		{
			if(strlen(num[k]) > strlen(num[k+1]))
			{
				strcpy(temp, num[k]);
				strcpy(num[k], num[k+1]);
				strcpy(num[k+1], temp);
			}
			else if(strlen(num[k]) == strlen(num[k+1]) && strcmp(num[k], num[k+1])>0)
			{
				strcpy(temp, num[k]);
				strcpy(num[k], num[k+1]);
				strcpy(num[k+1], temp);
			}
		}
	}
}

//    
void output(char num[100][1000], int n)
{
	for(int k=0; k<n; k++)
	{
		printf("%s
", num[k]); } } int main() { char num[100][1000]; int n; while(scanf("%d", &n) != EOF) { sortnum(num, n); output(num, n); } return 0; }

2. 제목 설명:
주어진 문자열 에 대해 중복 되 는 문 자 를 찾 아 위 치 를 알려 줍 니 다. 예 를 들 어 abcaaAB12ab 12.
출력: a, 1;a,4;a,5;a,10,b,2;b,11,1,8;1,12, 2,9;2,13。
입력:
알파벳 과 숫자 로 구 성 된 문자열 을 입력 하 십시오. 길이 가 100 을 넘 지 않 습 니 다.
출력:
여러 그룹의 테스트 데이터 가 있 을 수 있 습 니 다. 각 그룹의 데이터 에 대해 서 는...
샘플 출력 형식 에 따라 문자 가 나타 나 는 위 치 를 표시 합 니 다.
샘플 입력:
abcaaAB12ab12
샘플 출력:
a:0,a:3,a:4,a:9
b:1,b:10
1:7,1:11
2:8,2:12
알림:
1. 아래 표 시 는 0 부터 시작 합 니 다.
2. 같은 자모 가 한 줄 에 나타 난 위 치 를 나타 낸다.
답안 을 참고 하 다
#include<stdio.h>   
#include<string.h>  
  
typedef struct ch_arr{  
	int index[101];   //           
	int p;   //           
	int flag;   //           
}ch_arr; 
 
int main()  
{   
	ch_arr temp[130];
	char str[101];
	int k, t;
	
	while(scanf("%s", str) != EOF)
	{
		//       
		for(k=0; k<130; k++)
		{
			temp[k].p = 0;
			temp[k].flag = 0;   //flag           
		}
		//          
		for(k=0; k<strlen(str); k++)
		{
			temp[str[k]].index[temp[str[k]].p] = k;
			temp[str[k]].p++;
		}

		//    
		for(k=0; k<strlen(str); k++)
		{
			if(temp[str[k]].p>1 && 0==temp[str[k]].flag)
			{
				for(t=0; t<temp[str[k]].p-1; t++)
				{
					printf("%c:%d,", str[k], temp[str[k]].index[t]);					
				}				
				printf("%c:%d
", str[k], temp[str[k]].index[t]); temp[str[k]].flag = 1; } } } return 0; }

3. 제목 설명:
일련의 정 수 를 입력 하여 그 중에서 가장 큰 수 를 골 라 내 고 나머지 수 를 정렬 합 니 다.
입력:
첫 번 째 줄 을 입력 하면 정수 N, 1 < = N < = 1000 을 포함 하고 입력 데이터 의 개 수 를 대표 합 니 다.
다음 줄 에는 N 개의 정수 가 있다.
출력:
여러 그룹의 테스트 데이터 가 있 을 수 있 습 니 다. 각 그룹의 데이터 에 대해 서 는...
첫 번 째 줄 은 하나의 정 수 를 출력 하여 N 개의 정수 중 최대 치 를 나타 내 고 이 값 을 배열 에서 제거 하여 나머지 수 를 정렬 합 니 다.
두 번 째 줄 은 정렬 된 결 과 를 출력 합 니 다.
샘플 입력:
4
1 3 4 2
샘플 출력:
4
1 2 3
알림:
배열 에 숫자 가 하나 밖 에 없다 면 첫 번 째 줄 이 출력 되면 두 번 째 줄 은 '- 1' 을 출력 하 십시오.
답안 을 참고 하 다
#include<stdio.h>   

int main()
{
	int i, k, arr[1000], n;
	while(scanf("%d", &n) != EOF)
	{
		for(i=0; i<n; i++)
		{
			scanf("%d", &arr[i]);
		}
		if(n>1)
		{
			for(i=0; i<n; i++)
			{
				for(k=0; k<n-i-1; k++)
				{
					if(arr[k]>arr[k+1])
					{
						arr[k] = arr[k] + arr[k+1];
						arr[k+1] = arr[k] - arr[k+1];
						arr[k] = arr[k] - arr[k+1];
					}
				}
			}
			printf("%d
", arr[n-1]); for(i=0; i<n-2; i++) { printf("%d ", arr[i]); } printf("%d
", arr[n-2]); } else { printf("%d
", arr[0]); printf("-1
"); } } return 0; }

좋은 웹페이지 즐겨찾기