編集テスト中

目次

Q.文字列を読み込み、条件を満たす同じ個数の文字列を出力する

一定の文字からなる列sを読み込み、以下の条件を満たす同じ個数の文字からなる列tを出力するプログラムを作りなさい。
ただし、以下での単語とは空白以外の文字からなる列のこととする。
1,s中の単語は同じ順番で t に現われる
2,t中では単語は一つの空白に区切られる
3,t中に最初の単語の最初の文字から最後の単語の文字までは列全体の中央に位置し、前後は空白である
例えば文字の列
_This___is__a____good___program___
を入力すると
______This_is_a_good_program______
が出力される。ここで、_は空白を表すものとする。
#include <stdio.h>
#include <string.h>
int main(void)
{
  int i, j, l, count = 0;
  char str[256];
  gets(str);
  l = strlen(str);
  for(i=0; i<l-1; i++) {
    if(str[i]==' ') {
      while(str[i+1]==' '){
        for(j=i; j<l; j++) str[j] = str[j+1];
        count++;
      }
    }
  }
  for(i=0; i<l; i++) str[l-1-i] = str[l-1-count/2-i];
  for(i=0; i<(count-count/2); i++) str[l-1-i] = ' ';
  for(i=0; i<count/2; i++) str[i] = ' ';
  puts(str);
  return 0;
}

Q.指定したファイルの内容に行番号をつけて表示する

以下のプログラムを参考に、
指定したファイルの内容に行番号をつけて表示し、
さらに、空白(スペース)、タブ、改行を除く文字数を表示しなさい。
---------------------------サンプル-------------------------------
#include <stdio.h>
int main( void )
{
  FILE *fp;
  char c;
  char inFileName[64];
  char str[256];
  printf("File name ?"); scanf("%s", inFileName);
  if (( fp = fopen( inFileName, "r")) == NULL) {
    perror("fopen"); exit(1);
  }
  while( fgets( str, 256, fp) )
  printf("%s", str);
  fclose( fp );
}
#include <stdio.h>
int main( void )
{
  FILE *fp;
  int i,lcnt=1,size=0;
  char inFileName[64]; char str[256];
  printf("File name ?"); scanf("%s", inFileName);
  if (( fp = fopen( inFileName, "r")) == NULL) {
    perror("fopen"); exit(1);
  }
  while( fgets( str, 256, fp) ) {
    i=0; printf("%d\t%s",lcnt, str);
    while(str[i]){
      switch(str[i]){
        case '\n': lcnt++;break;
        case '\t': case ' ': break;
        default:size++;break;
      }
      i++;
    }
  }
  printf("total: %d characters\n",size);
  fclose( fp );
}

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2006年12月10日 23:19