C語言for loop有規律字元

本帖最後由 haloPaul 於 2018-11-8 12:16 編輯

要求顯示以下有規律字元(Model Answer)
c e e g g i i k k m m o

我的寫法

#include <stdio.h>
int main() {
  char value;
  int offset;

  for (value = 'c'; value <= 'o'; value = value + 2) {
      for (offset = 0; offset < 2; offset += 1) {
         printf("%c ", value);
      }
    }
  printf("\n");
  return 0;
}

程式顯示: c c e e g g i i k k m m o o
但是我的答案與Model Answer有小小出入,點樣做到同Model Answer一模一樣?

要求顯示以下有規律字元(Model Answer)
c e e g g i i k k m m o

我的寫法

#include
int main() {
  cha ...
haloPaul 發表於 2018-11-8 12:14


char [] str="ceeggiikkmmo" /* pattern in string */
int i,j,n,len;
n=4; /* Repeat time */
len=strlen(str);
for (j=0; j<n; j++)
{
   for(i=0;i<len;i++)
     printf("%c ",str);
   printf("\n");
}

TOP

回覆 1# haloPaul

#include <stdio.h>
int main() {
  char value;
  int offset;

  char min = 'c', max = 'o';
  int repeat = 2;
  for (value = min; value <= max; value = value + 2) {
      repeat = 2;
      if ((value = min) || (value + 2 > max))
      {
          repeat = 1;
      }
      for (offset = 0; offset < repeat; offset += 1) {
         printf("%c ", value);
      }
    }
  printf("\n");
  return 0;
}




my 20 cents.

TOP

一個loop就得, 唔洗兩個
  1. #include <stdio.h>

  2. int main(void) {
  3.   char value;
  4.   
  5.   for (value = 'c'; value < 'o'; ++value) {
  6.           if (value % 2 == 1)
  7.             printf("%c ", value);
  8.           else
  9.             printf("%c ", value + 1);
  10.   }
  11.   
  12.   printf("\n");
  13.   return 0;
  14. }
複製代碼

TOP

回覆 4# wfshop

思路幾好,先睇成"c d e f g h..."寫個普通的loop
然後梅花間竹將字母「減一」

我一個平凡的寫法
  1. char c;
  2. for (c = 'c'; c < 'o'; c += 2) {
  3.     printf("%c %c ", c, c + 2);
  4. }
複製代碼

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

本帖最後由 亞基拉 於 2018-11-9 17:47 編輯

for(cc = 'c'; cc <= 'o'; ++cc) printf("%c ", (((cc / 2) * 2) + 1);

TOP

本帖最後由 morris 於 2024-3-22 13:22 編輯

......

TOP

本帖最後由 EITCo 於 2018-11-9 21:44 編輯

回覆 8# morris

玩野系列

交功課咁寫實唔會畀人話係抄
  1. char s[] = "a c e ";
  2. int *ip = (int *)(s + 2);
  3. int d = *ip - *(int *)s;
  4. for (; s[2] < 'o'; *ip += d) {
  5.     printf(s + 2);
  6. }
複製代碼
(假定int係4 bytes)

TOP

d | 1 = e
e | 1 = e
f | 1 = g
g | 1 = g
h | 1 = i
i | 1 = i
j | 1 = k
k | 1 = k
...

TOP