标签 题目 下的文章

C scanf()反向输出带空白字符字符串

编写一个程序读入一行输入,然后反向打印该行。您可以把输入存储在一个char数组中;假定该行不超过255个字符。回忆一下,您可以使用具有%c说明符的scanf()从输入中一次读入一个字符,而且当您按下回车键时会产生换行字符(n)。

以前曾经写过getchar()putchar()组合运用的,我们知道,scanf()在空白字符时会停止,那么如何用scanf()达到getchar()的效果呢,其实也就是把它当成getchar()来用:

#include <stdio.h>

int main(void)
{
    char line[255];
    int i, length;

    printf("Print a sentence: ");
    for (i = 0; i < 255; i++) {
        scanf("%c", &line[i]);
        if (line[i] == '\n')
            break;
    }
    for (i -= 1; i >= 0; i--)
        printf("%c", line[i]);

    return 0;
}

前三版:http://codesky.me/archives/c-reverse3-word.wind

C 反向打印第三弹-反向打印单词

一个单词读入一个字符数组,然后反向打印出这个值。提示:使用strlen()计算数组中最后一个字符的索引。

关于strlen()在以下两篇中略有提及:
http://codesky.me/archives/c-strlen-v2.wind
http://codesky.me/archives/c-variable-const-type.wind
前者编写了等功能的函数,后者则是更加泛泛而谈了。

关于前两个反向打印:
C 编写函数实现函数字符串字符颠倒
C 输入三位数,使之变成逆序输出

这次的为什么是单词,与前两个有什么不同,当然是大有不同的了,这里我们用到了scanf()的特性——遇到空白字符就会停止读取,这是他与getchar()明显的不同,所以用getchar()写出来的其实是最有用的,而那个三位数,局限性太大,不提也罢。

- 阅读剩余部分 -

C 大写字母输出金字塔

题目:

输入一个字母(如E)则输出:
    A
   ABA
  ABCBA
 ABCDCBA
ABCDEDCBA
提示:使用一个外部循环来处理行,在每一行中使用三个内部循环,一个处理空格,一个以升序打印字母,一个以降序打印字母。

- 阅读剩余部分 -

C 输出10°到20°的正弦值

这里我们用到了<math.h>中的M_PI常量(π的值),以及sin()函数,so easy。

sin()接受的是弧度制的值,所以我们要用这个常量来转换一下,剩下的,没什么难度了。

#include <stdio.h>
#include <math.h>

int main(void)
{
    int degree;
    double radian;

    for (degree = 10; degree <= 20; degree++) {
        radian = M_PI * degree / 180;
        printf("%d   %f\n", degree, sin(radian));
    }
    return 0;
}

C 使输入的大写英文字母变成小写

实际上,在<ctype.h>头中已经有相关函数的集成tolower()(小写变成大写是toupper()),这里我们要自己写一个也很容易,利用acsii码的差值(很常用的方法)。

#include <stdio.h>

#define DIF ('a' - 'A')

int main(void)
{
    char input;

    while ((input = getchar()) != EOF) {
        if (input >= 'A' && input <= 'Z') {
            printf("%c", input + DIF);
        } else {
            putchar(input);
        }
    }
    return 0;
}

这里我们用的常量,显得更加正规一点,并且也验证了printf()putchar()可以混合使用。

C 输入三位数,使之变成逆序输出

如题,刚开始没看到三位数,被这道题的难度吓尿了,因为那题我还有地方没搞懂,怎么才上课两周就变成同学的作业了……结果发现是三位整数,难度骤减。如果是负数再加一个判断就好了,只是我不知道= =负数逆是怎么逆的意思(毕竟不是反转字符串)

关于逆序输出,反转字符串,可见:C 编写函数实现函数字符串字符颠倒

- 阅读剩余部分 -

C 不用第三个变量,交换两个整数的值

题目如题,这道题,在PHP里做到过类似的,想来也是经典题目之一,不过,这里把难度降低了(说实在的字符串的话我还真不知道怎么反),变成了整数,因为在PHP里是有现成的list()函数,加上创建数组array()就可以了,所以比较简单(见此

实际上,在查的时候看到过这个方法,当时觉得list()不是更方便吗,所以就把这个方法忘了,这次来mark一下,主要考的是数学功底吧(( ̄▽ ̄"))

- 阅读剩余部分 -

C 斐波那契数列题目两则

师匠考我,说要写斐波那契数列,刚开始给了一道题,后来变成两道,作为算法入门题,虽然简单,但似乎确实很有教育意义,想折腾算法的不妨试试。

1、输入两个数,输出两个数间的斐波那契数列的数:如输入1 6,输出 1 1 2 3 5,输入4 4, 输出NONE
2、写一个斐波那契函数,列出第N个斐波那契数列的数,如输入0 输出0 输入3 输出2。

递归总是可以用的,但递归的效率很低,这种时候我们想到的就是“最优”,我写的不一定就是最优的,只是:有办法解决,仅此而已。

- 阅读剩余部分 -