标签 题目 下的文章

C 不用与或改一个循环语句 小解枚举型变量

题目:

for (i = 0;i < lim - 1 && (c = getchar()) != '\n' && c != EOF; ++i)
    s[i] = c;
不用&&和||的条件下编写一个与上面的for循环语句等价的循环语句

题目看着不难,我当时就想着用whileif的结合就OK了吧,结果思路方向错了,我想先ifwhile可是这样就跳过了两个条件的重复利用,先whileif才是正解,正好答案中还有枚举型的出现,就码来研究了一下。

- 阅读剩余部分 -

C 编写程序确定各种类型变量取值范围

题目:

编写一个程序以确定分别由signed和unsigned限定的char、short、int与long类型变量的取值范围。

书中说用两种,暂时只会一种,另一种说是用位运算符,难度系数就略高了……

我的输出是:

signed char min:-128
signed char max:127
int max:2147483647
int min:-2147483648
long max:2147483647l
long min:-2147483648l
short max:32767
short min:-32768
unsigned char max:255
unsigned int max:4294967295
unsigned long max:4294967295l
unsigned short max:65535

具体是要取决于你的编译器的,这里以code::blocks为例而已。关于这点,见C 变量与常量 数据类型

- 阅读剩余部分 -

C 删除C语言程序中的所有注释

题目:

编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。在C语言中,注释不允许嵌套。

还是看答案吧,毕竟是导言,我并不指望自己能写出来,代码还是勉强能看懂的,就是处理引号部分还不大明白(如为什么echo_quote里搜索\\),留待以后回头再看看这个问题。

另外这个程序一个问题就是分段落输出,这样比较无力……不晓得是不是我码错了什么……换言之,确实它值得改进的地方还有很多,注释也自己乱加了点OTZ。

- 阅读剩余部分 -

C 编写函数实现函数字符串字符颠倒

这是K&R中的一道题目:

编写一个函数reverse(s),将字符串s中的字符顺序颠倒过来。使用该函数编写一个程序,每次颠倒一个输入行中的字符顺序。

在PHP中曾经做过类似的题,见PHP 实现中文字符串截取无乱码,同样也是写reverse()函数,我相信C中也有现成的函数,因为编译器高亮颜色不一样。

输出示例:

hello
olleh

- 阅读剩余部分 -

C 输出菱形

受泽发来的贺电- -嗯……数学不是很好所以码了有一会儿吧。

数学不好搞算法好吃力……

输出比如下面一样的菱形:

   *
  ***
 *****
*******
 *****
  ***
   *

- 阅读剩余部分 -

C 打印输入中单词长度的直方图

导言中的题目,昨天我勉强算实现了输出,不过效果其实很糟糕,还是没有考虑今天发的那几个问题,下载好答案之后就看了看,题目意思也明白了:

原话:

编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易,垂直方向的直方图则要困难一些。

实际上,他是要统计,比如hello有5个字母,我只输入hello 那么5中就输出1,类似的hello world在5中就输出2

我当时实际上只是很简单的直方图了,而没有考虑本身,所以是个错误的答案。

同时我还在想,我怎么知道单词有多长呢——答案很好的解决了这个问题。

- 阅读剩余部分 -

C 一行输出一个单词

貌似以前也看到有一道题是这样的,这里发现了思维不够严密,比如我是这么写的:

#include <stdio.h>

#define IN 1
#define OUT 0

main(void)
{
    int c, state;

    while ((c = getchar()) != EOF) {
        if (c == '\t' || c == ' ')
            printf("\n");
        else
            putchar(c);
    }

    return 0;
}

- 阅读剩余部分 -

C 删除输入中多余空格

做到这样一题,是将其中多个空格替换为一个空格,回想起来PHP也有类似需求,暂时先mark一下这个方法。

我的想法是根据空格前面是否存在空格来控制空格的输出。(书中答案貌似更简练一些,直接加一个变量记录这次输出的值,用那个值来对比)

#include <stdio.h>

int space = 0;

int c;

main(void)
{
    while ((c = getchar()) != EOF) {
        if (c == ' ' && !space) {
            space = 1;
            putchar(c);
        } else if (c != ' ') {
            space = 0;
            putchar(c);
        }
    }

    return 0;
}

PHP中可以用转为数组-删除数组空白元素-转为字符串的方法,首尾部分空格可以用trim()处理