---
# System prepended metadata

title: 大一上 程設一
tags: [資料統整]

---

# 大一上 程設一
## 2604 mid1_practice 

## 11628 - Spiral 
```
#include <stdio.h>

int main(void) {
  int t,p,i,j,k,counter=0,c,cc;
  scanf("%d",&t);

  for(p=0;p<t;p++){
    scanf("%d",&c);
    cc = c;
    int a=0,b=0;
    counter = 0;
    char spr[c][c];
    for(i=0;i<c;i++){
      for(j=0;j<c;j++){
        spr[i][j]=32;
      }
    }
    while (c>0){
      if (counter%4==0){
        if(a!=0&&b!=0) b++;
        for (j=0;j<c;j++){
          spr[a][b+j] = '#';
        }
        b+=j-1;
        /*
        for(k=0;k<cc;k++){
          for(j=0;j<cc;j++){
            printf("%c",spr[k][j]);
          }
          printf("\n");
        }*/
      }
      else if(counter%4==1){
        a++;
        for (j=0;j<c;j++){
          spr[a+j][b] = '#';
        }
        a+=j-1;
        /*
        for(k=0;k<cc;k++){
          for(j=0;j<cc;j++){
            printf("%c",spr[k][j]);
          }
          printf("\n");
        }
  `    */
      }
      else if(counter%4==2){
        b--;
        for (j=0;j<c;j++){
          spr[a][b-j] = '#';
        }
        b-=j-1;
        /*
        for(k=0;k<cc;k++){
          for(j=0;j<cc;j++){
            printf("%c",spr[k][j]);
          }
          printf("\n");
        }
        */
      }
      else if(counter%4==3){
        a--;
        for (j=0;j<c;j++){
          spr[a-j][b] = '#';
        }
        a-=j-1;
        /*
        for(k=0;k<cc;k++){
          for(j=0;j<cc;j++){
            printf("%c",spr[k][j]);
          }
          printf("\n");
        }
        */
      }
      //printf("%d %d\n",a,b);
      counter++;
      c-- ;
    }
    
    for(k=0;k<cc;k++){
      for(j=0;j<cc;j++){
        printf("%c",spr[k][j]);
      }
      printf("\n");
    }
  }
  return 0;
}
```
### 12022 - prefix sum 
```
#include <stdio.h>

int main(void) {
  int n,m,i,j,l,r,c=0;
  scanf("%d",&n);

  int arr[n];
  long long map[n+1];
  map[0] = 0;

  for(i=0;i<n;i++){
    scanf(" %d",&arr[i]);
    map[i+1] = map[i]+arr[i];
  }
  
  scanf("%d",&m);
  for(i=0;i<m;i++){
    scanf("%d %d",&l,&r);
    printf("%d\n",map[r]-map[l-1]);
  }

  return 0;
}
```
### 12441 - Palindrome
```
#include <stdio.h>
#include <string.h>

int main(void) {
  int i,l,counter;
  char arr[100001];

  while(scanf("%s",arr)!= EOF){
    counter = 0;
    size_t lenth = strlen(arr);
    l = lenth/2+lenth%2;
    for(i=0;i<l;i++){
      if(arr[i] == arr[lenth-1-i])  counter++;
    }
    if(counter == l) printf("Yes\n");
    else printf("No\n");
   }
  return 0;
}
```
### 13633 - Indentation 
```
#include <stdio.h>
#include <string.h>

int main(void) {
  int i,counter;
  char arr[100];
  while(fgets(arr,100,stdin)){
    size_t lenth = strlen(arr);
    for(i=0;i<lenth;i++){
      if (arr[i] == 59) arr[i] = 32 ;
      else break;
    }
    
    if (arr[0]!=10){
      for(i=0,counter=0;i<lenth-1;i++){
        printf("%c",arr[i]);
        if (arr[i]=='{' || arr[i]=='}') counter++;
      }

    if (arr[lenth-2] == 125 && counter==2) printf(";\n"); 
    else if (arr[lenth-2] != 123 && arr[lenth-2] != 125 && arr[lenth-2] !=62 ) {
      printf(";\n");      
      }
    else   printf("\n");
    }
  }
  

  return 0;
}

/*
sample
#include<stdio.h>
int main(){
;;;;int a, b
;;;;scanf("%d%d", &a, &b)
;;;;printf("%d\n", a + b
;;;;int arr[3] = {0, 1}
;;;;return 0
;}

*/
```
### 13637 - Easy Gomoku Validator (4/6未過)
```
#include <stdio.h>

int main(void) {
  int n,i,j,k,l,a,b,c,r=0;
  scanf("%d",&n);
  char z[15][15];

  for(i=0;i<15;i++){
    for(j=0;j<15;j++){
      z[i][j] = ' ';
    }
  }

  for (i=0;i<(n/2+n%2);i++){
    scanf("%d%d",&j,&k);
    r++;
    z[j-1][k-1] = 'x';
    if (r>8){
      for (a=0;a<15;a++){
        for (b=0;b<15;b++){
          if (z[a][b] == 'x'){
            for(l=1,c=0;l<5;l++){
              if(z[a+l][b]=='x') c++;
            }
            if (c==4) {
              printf("LSC wins at the %dth step.\n",r);
              return 0;
            }
            
            for(l=1,c=0;l<5;l++){
              if(z[a][b+l]=='x') c++;
            }
            if (c==4) {
              printf("LSC wins at the %dth step.\n",r);
              return 0;
            }
            
            for(l=1,c=0;l<5;l++){
              if(z[a+l][b+l]=='x') c++;
            }
            if (c==4) {
              printf("LSC wins at the %dth step.\n",r);
              return 0;
            }
            
            for(l=1,c=0;l<5;l++){
              if(z[a+l][b-l]=='x') c++;
            }
            if (c==4) {
              printf("LSC wins at the %dth step.\n",r);
              return 0;
            }
          }
        }
      }
    }

    scanf("%d%d",&j,&k);
    r++;
    z[j-1][k-1] = 'y';
    if (r>8){
      for (a=0;a<15;a++){
        for (b=0;b<15;b++){
          if (z[a][b] == 'y'){
            for(l=1,c=0;l<5;l++){
              if(z[a+l][b] =='y') c++;
            }
            if (c==4) {
              printf("1TSC wins at the %dth step.\n",r);
              return 0;
            }
            
            for(l=1,c=0;l<5;l++){
              if(z[a][b+l]=='y') c++;
            }
            if (c==4) {
              printf("2TSC wins at the %dth step.\n",r);
              return 0;
            }
            
            for(l=1,c=0;l<5;l++){
              if(z[a+l][b+l]=='y') c++;
            }
            if (c==4) {
              printf("3TSC wins at the %dth step.\n",r);
              return 0;
            }
            
            for(l=1,c=0;l<5;l++){
              if(z[a+l][b-l]=='y') c++;
            }
            if (c==4) {
              printf("TSC wins at the %dth step.\n",r);
              return 0;
            }
          }
        }
      }
    }
  }
  /*
  for(j=0;j<15;j++){
    for(k=0;k<15;k++){
      printf("%c",z[j][k]);
    }
    printf("\n");
  }
  */
  printf ("There's no winner.\n");
  return 0;
}
```
## 2603 hw6 

### 13309 - How much is the string worth 2   
```
#include <stdio.h>
#include <string.h>

int main(void) {
  int i,j,counter=0;
  char arr[27],map[101];
  scanf("%s",arr);
  size_t l1 = strlen(arr);
  
  while(1){
    counter = 0;
    fgets (map, 101, stdin);
    size_t l2 = strlen(map)-1;
    
    if(l2 == 3 && map[0]==101 && map[1]==110 && map[2]==100) break;
    else if(l2 == 1 && map[0]==48) break;
    else if (map[0] != 10){
      for(i=0;i<l2;i++){
        for(j=0;j<l1;j++){
          if(map[i]==arr[j]) counter += (j+1) ;
        }
      }
          printf("%d\n",counter);
    }
    
  }

  return 0;
}
```

### 12434 - Bacteria Widespread   
```
#include <stdio.h>

int main(void) {
  int r,c,t,i,j,k;
  scanf("%d%d%d",&r,&c,&t);
  char cla[r][c+1],temp[r][c+1];

  for (i=0;i<r;i++){
    scanf("%s",cla[i]);
  }

for (i=0;i<r;i++){
  for (j=0;j<c;j++){
    temp[i][j] = cla[i][j];
  }
}
  
  for(k=0;k<t;k++){
    for (i=0;i<r;i++){
      for (j=0;j<c;j++){
      cla[i][j] = temp[i][j];
      }
    }
    for (i=0;i<r;i++){
      for (j=0;j<c;j++){
        if (cla[i][j]==70){
          if(cla[i+1][j]==67 && i+1<r-1) temp[i+1][j] = 70 ;   
          if(cla[i-1][j]==67 && i-1>0)   temp[i-1][j] = 70 ;    
          if(cla[i][j+1]==67 && j+1<c-1) temp[i][j+1] = 70 ;    
          if(cla[i][j-1]==67 && j-1>0)   temp[i][j-1] = 70 ;    
        }
      }
    }
  }

  for(i=0;i<r;i++){
    for(j=0;j<c;j++){
      printf("%c",temp[i][j]);
    }
    printf("\n");
  }
  
}
```
## 2593 hw5 

### 13591 - Second Highest Value
```
#include <stdio.h>

int main(void) {
  int n,max,sux;
  scanf("%d",&n);
  int arr[n];
  for (int i=0;i<n;i++){
    scanf("%d",&arr[i]);
  }

  printf("0");
  if (arr[0]>arr[1]){
    max = arr[0];
    sux = arr[1];
  }
  else{
    max = arr[1];
    sux = arr[0];
  }
  
  for(int i = 1;i<n;i++)
  {
    if (arr[i]>max){
      sux = max ;
      max = arr[i];
    }
    else if (max>arr[i] && arr[i]>sux){
      sux = arr[i];
    }

    printf(" %d",sux);
  }
  printf("\n");
  return 0;
}
```


### 13572 - String Operations 1   
```
#include <stdio.h>
#include <string.h> 

int main(void) {
  int i,j,q ;
  char s[1000000];
  char map[26]=
  {'a', 'b', 'c', 'd', 'e',
  'f','g','h','i','j',
  'k','l','m','n','o',
  'p','q','r','s','t',
  'u','v','w','x','y','z'};
  char a,b;
  
  scanf("%s",s);
  size_t l = strlen(s);


  scanf("%d",&q);

  for(i=0;i<q;i++){
    scanf(" %c %c",&a,&b);
    for(j=0;j<26;j++){
      if (map[j] == a)  {
        map[j] = b ;
      }
    }
  }

  for(i=0;i<l;i++){
    printf("%c",map[s[i]-97]);
  }
  
  printf("\n");
  return 0;
}
```
### 13290 - Matching Strings   
```
#include <stdio.h>
#include <string.h>

int main(void) {
  int n ,m ,i,j,k,c,l=0;

  scanf("%d%d",&n,&m);

  char s1[n][1000] ;
  char s2[1000] ;
  
  
  for (i=0;i<n;i++){
    scanf("%s",s1[i]);
  }
  
  for (i=0;i<m;i++){
    scanf("%s",s2);
    size_t length = strlen(s2);
    for(j=0,c=0;j<n;j++){
      for(k=0;k<length;k++){
        if (s2[k] == s1[j][k]){
          //printf("%d %d\n",j,k);
          c++ ;
          }
        }
      if(c == length){
        printf("Yes\n");
        l++;
        break;
      }
      else{
      c=0;
      }
    }
    
  if (l == 0) printf("No\n");

  }
  
  return 0;
}
```

