03_단어 개수, 단계 곱 하기, 출력 이 가장 짧 고 긴 문자열 을 통계 합 니 다.

1. 제목 설명:
프로그램 을 만 들 고 사용자 가 입력 한 '...' 로 끝 나 는 한 줄 의 문 자 를 읽 습 니 다. 모두 몇 개의 단어 가 있 는 지 통계 하고 각 단어 에 몇 개의 문자 가 있 는 지 출력 합 니 다.
(하나 이상 의 빈 칸 으로 구 분 된 부분 은 하나의 단어)
입력:
"." 로 끝 나 는 문자열 1 줄 을 입력 하 십시오. 문자열 에는 여러 단어 가 포함 되 어 있 습 니 다. 단어 사 이 는 하나 이상 의 빈 칸 으로 구분 되 어 있 습 니 다.
출력:
여러 그룹의 테스트 데이터 가 있 을 수 있 습 니 다. 각 그룹의 데이터 에 대해 서 는...
출력 문자열 에 있 는 단어 마다 포 함 된 자모의 갯 수 입 니 다.
샘플 입력:
hello how are you.
샘플 출력:
5 3 3 3
답안 을 참고 하 다
#include<stdio.h>   
#include<string.h>


int main()
{
	char str[1000], index, str_len, k;
	int word_len[1000]={0};   //          


	while(gets(str))
	{
		index=0;
		str_len = strlen(str);
		memset(word_len, 0, 1000);


		k=0;
		while((' ' == str[k]) && (k<str_len-1))//       
		{
			k++;
		}


		while(k<str_len-1)
		{
			if(str[k] != ' ')//      
			{
				word_len[index] += 1;
				k++;
			}
			else//      
			{
				index++;
				while((k<str_len-1) && (' ' == str[k]))//         
				{
					k++;
				}
			}
		}


		for(k=0; k<index; k++)
		{
			printf("%d ", word_len[k]);
		}
		printf("%d
", word_len[k]); } return 0; }

참고 프로그램 (이 문제 와 유사 하지만 이 문제 풀이 가 아 닙 니 다)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void main()
{
	char words[100][100];
	int	 w_index,w_num,i=0;
	char ch;
	
	printf("Input a string :
"); w_num = 0; w_index = 0; while((ch = getchar()) != '.') { if(ch == ' ') { if(w_index) { w_index = 0; w_num++; } } else { words[w_num][w_index++]=ch; words[w_num][w_index] = '\0'; } } printf("
There are %d words.
", w_num + 1); for(i=0; i <= w_num; i++) { printf("%s\t %d
", words[i], strlen(words[i])); } }

2. 제목 설명:
입력 n,
제발 y1 = 1! +3!+...m!(m 는 n 보다 작은 최대 홀수)
y2 = 2! + 4! +... p!
입력:
각 그룹의 입력 은 정수 1 개 를 포함 합 니 다: n
출력:
여러 그룹의 테스트 데이터 가 있 을 수 있 습 니 다. 각 그룹의 데이터 에 대해 서 는...
출력 문제 요구 y1 과 y2
샘플 입력:
4
샘플 출력:
7 26
답안 을 참고 하 다
#include <stdio.h>

long int result[15]; 

//   1   14         result    ,      
//  long int   ,    15!      
void initialize()
{
	
    long int i,tmp=1; 
    
    for(i=1; i<14; i++)
	{
        tmp=tmp*i;
        result[i]=tmp;
    }   
}


int main()
{
    int n,i;
    long int sum1, sum2;
	
    initialize();
	
    while(scanf("%d",&n) != EOF)
	{
        sum1 = sum2 = 0;
		
		//     result             
        for(i=1; i<=n; i++)
		{
            if(i%2==1)
                sum1 += result[i];
            else
                sum2 += result[i];   
        }
        printf("%ld %ld
", sum1 ,sum2); } return 0; }

3. 제목 설명:
여러 줄 의 문자열 을 입력 하 십시오. 원본 의 순서에 따라 가장 짧 고 긴 문자열 을 출력 하 십시오. 가장 짧 고 긴 문자열 이 하나 가 아니라면 모두 출력 하 십시오.
입력:
여러 줄 문자열, 문자열 의 길 이 를 포함 하 는 len 을 입력 하 십시오. (1 < = len < = 1000)
출력:
원본 의 순서에 따라 가장 짧 고 긴 문자열 을 출력 합 니 다. 가장 짧 고 긴 문자열 이 하나 가 아니라면 모두 출력 하 십시오.
샘플 입력:
hello
she
sorry
he
샘플 출력:
he
hello
sorry
답안 을 참고 하 다
#include<stdio.h>    
#include<string.h>  
#include <limits.h>  
  
typedef struct strs{  
    int len;   //             
    char arr[1001];   //          
}strs;  
  
strs store[10001];  
  
int main()  
{  
    int i, index = 0;  
    int max_len = INT_MIN, min_len = INT_MAX;  


    while(scanf("%s", store[index].arr) != EOF){  


        store[index].len = strlen(store[index].arr);  
          
        if(max_len < store[index].len){   //      
            max_len = store[index].len;  
        }         
        else if(min_len > store[index].len){   //       
            min_len = store[index].len;  
        }  
        index++;  
    }  
      
    for(i = 0;i < index;i++){   //       
        if(store[i].len == min_len){  
            puts(store[i].arr);  
        }  
    }  
    
    for(i = 0;i < index;i++){   //       
        if(store[i].len == max_len){  
            puts(store[i].arr);  
        }  
    }  
    return 0;  
} 

좋은 웹페이지 즐겨찾기