- /*输入一个英文句子,翻转句子中的单词顺序。但单词内的顺序不变。句子中单词空格隔开。
- 为简单起见,标点符号和普通字母一样处理。
- 例如输入"I am a student.",则输出“student. a am I”.*/
- #include<stdio.h>
- #include<assert.h>
- void reverse(char *begin, char *end)
- {
- char tmp;
- while (begin < --end)
- {
- tmp = *begin;
- *begin = *end;
- *end = tmp;
- ++begin;
- }
- }
- char *word_reverse(char src[])
- {
- char *p = src;
- char *pstart;
- char *pend;
- assert(src != NULL);
- while (*p)
- {
- while (*p == ' ')
- p++;
- pstart = p;
- while (*p != ' ' && *p)
- p++;
- pend = p;
- reverse(pstart, pend);
- }
- reverse (src, p);
- return src;
- }
- int main()
- {
- char src[] = "I am a student.";
- printf("%s\n", word_reverse(src));
- return 0;
- }
- /*将10进制转换为2-16进制*/
- #include <stdio.h>
- int main(void)
- {
- int n,k,i,j,m=0;
- char str[38], tmp;
- printf("请输入要转换的10进制数n和要转换的进制k:");
- scanf("%d%d",&n,&k);
- while(n)
- {
- str[m++]=(n%k)["0123456789ABCDEF"];
- n/=k;
- }
- str[m]='\0';
- for(i=0,j=m-1;i<j;i++,j--) {
- tmp = str[i]; str[i] = str[j]; str[j] = tmp;
- }
- printf("转换后为:%s\n",str);
- return 0;
- }
相关文章: