例 5.1.3 週期串
fgets(str, max, stdin);
scanf("%s",str);
fgets()函式執行後,str會讀到『\n』符號停下,也就是提取一行,『\n』也被讀進字串,因此strlen(str)會比原本輸入的字串多乙個;除了一種很特殊的情況,讀入一行時,只一行並不是以』\n『結束,而是以eof結束。
scanf()遇到』\n『,space,tab就會停下,而且這些不會被讀入字串,所以strlen的長度即為輸入字串的長度。
#include #include #define max 200
int main()
}if(ok) break;
}printf("%d\n",period);
}
5.2.2 階乘的精確值
#include #include #define max 3000
int arr[max];
int main()
}for(i = max; i > -1; i--)
if(arr[i]) break;
for(i = j; i >= 0; i--) printf("%d", arr[i]);
return 0;
}
5.3.1 6174問題
#include #include #define max 3000
int main()
bubblesort(a, 4);
int n1 = 0, n2 = 0;
for(i = 0; i < 4; i++)
n = n2 - n1;
for(i = 0; i < k; i++)
if(n == answer[i])
answer[k++] = n;
printf("-> %d ", n);
}return 0;
}void bubblesort(int a, int n)
}}
5.3.2 字母重排
#include #include #define max 3000
char word[1000][10], sorted[1000][10];
int cmp_char(const void* _a, const void* _b)
int cmp_string(const void* _a, const void* _b)
int main()
qsort(word, n, sizeof(word[0]), cmp_string);
for(i = 0; i < n; i++)
char s[10];
while(scanf("%s",s) == 1)
}if(found == 0) printf(":(");
printf("\n");
}return 0;
}
summary:
void qsort (void* base, size_t num, size_t size,int (*compar)(const void*,const void*));
演算法競賽入門經典 第五章 6174
假設你有乙個各位數字互不相同的四位數,把所有數字從大到小排序後得到a,從小到大排序後得到b,然後用a b替換原來這個數,並且繼續操作。例如,從1234出發,依次可以得到4321 1234 3087,8370 378 8352,8352 2358 6174,有趣的是,7641 1467 6174,回到...
演算法競賽入門經典 第五章錯位輸出
include char s 1234567890 qwertyuiop asdfghjkl zxcvbnm,int main return 0 記錄下標還可以當條件滿足的時候退出,這樣迴圈變數就一定是符合要求d 的下標值 要是我我會這麼寫 include char s 1234567890 qwe...
演算法競賽入門經典 第五章6174問題
include include int get next int x sscanf s,d b 輸出氣泡排序拍好的由小到大的數 for int i 0 i n 2 i 輸出由大到小的數 sscanf s,d a sscanf在這裡承擔格式轉換功能 return a b int num 2000 co...