标签 知识 下的文章

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 一个程序说说scanf()判断

一道实例引起了关于scanf()的一点特性的思考:

#include <stdio.h>

int main(void)
{
    long num;
    long sum = 0L;
    int status;

    printf("Please enter an integer to be summed. ");
    printf("(q to quit): ");
    status = scanf("%ld", &num);
    while (status == 1)
    {
        sum = sum + num;
        printf("Please enter next integer (q to quit):");
        status = scanf("%ld", &num);
    }
    printf("Those integers sum to %ld.\n", sum);
    return 0;
}

这里用到了:

    status = scanf("%ld", &num);
    while (status == 1)

很明显赋值是给num的,那么status拿来何用?看起来似乎如果输入字符与格式符号不符(不能用%ld说明符读取),就会返回0,符合则返回1,这样就可以判断输入的是否是指定的格式了。

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;
}

PHP 代码行数倒计时 说说两个文件函数

前两天看到交大平均4年10W行,然后就跃跃欲试写了一个简单的统计,其实还是表单输入而已,想了想用数据库未免太过浪费,文件函数正好不熟,故用之。

因为很简陋,没有过滤什么的,所以不演示了,自己跑下便知:

<!DOCTYPE html>
<html>
<head>
    <title>Count Code</title>
</head>
<body>
    离10W代码量还有:
    <?php
        $file = fopen('count.txt', 'r');
        $num = fgets($file);

        echo number_format($num);
        fclose($file);
    ?>
    <br/>
    <form action="index.php" method="post">
        <input type="text" placeholder="输入这次的代码行数" name="line" />
        <input type="submit" value="提交" />
    </form>
    <?php
        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            $line = $_POST['line'];
            $now = $num - $line;
            file_put_contents('count.txt', $now);
        }
    ?>

</body>
</html>

- 阅读剩余部分 -

C printf()和scanf()的*修饰符

关于printf()scanf()有个神奇的*修饰符,他和通配其实没什么关系,而且printfscanf的作用不一样,所以一个个来看吧。

#include <stdio.h>

int main(void)
{
    unsigned width, precision;
    int number = 256;
    double weight = 242.5;

    printf("What field width?\n");
    scanf("%d", &width);
    printf("The number is: %*d: \n", width, number);
    printf("Now enter a width and a precision: \n");
    scanf("%d %d", &width, &precision);
    printf("Weight = %*.*f\n", width, precision, weight);
    return 0;
}

- 阅读剩余部分 -

C 总结一下 类型与格式说明符对应表

可能会有错吧,因为光一张基本类型表感觉还是一团糟。

int %d
double/float %f
long %ld
long long %lld
char %c
short %hd
unsigned int %d
unsigned short %hu
八进制short %ho
unsigned long %lu
long double %Lf
十六进制long double %la (最后p10 表示2^10 p 表示2的指数)
指数计数法 %e (E10 表示10^10)
浮点型%g http://codesky.me/archives/c-percentg.wind

八进制 %0
十六进制 %x
前面加#如%#0则会输出如0111 %#x 如 0x2f

C 回车符\r的效果

\r叫回车符,一直没明白,回车和换行有什么区别,从理解上,回车按下去,不就换行了吗。不过亲自尝试一下,会发现截然不同。

#include <stdio.h>

int main(void)
{
    float salary;

    printf("\aEnter your desired monthly salary: ");
    printf("$_______\b\b\b\b\b\b\b");
    scanf("%f", &salary);
    printf("\n\t$%.2f a month is $%.2f a year.", salary, salary * 12.0);
    printf("\rGee!\n");
    return 0;
}

- 阅读剩余部分 -

C 转义字符序列

\a 响铃符
\b 回退符
\f 换页符
\n 换行符
\r 回车符
\t 横向制表符
\v 纵向制表符
\\ 反斜杠
\? 问号
\' 单引号
\" 双引号
\ooo 八进制数
\xhh 十六进制数
\0 空字符(NULL)

其中\ooo代表1-3个八进制数,\xhh代表一个或多个十六进制数。
举例可见http://codesky.me/archives/c-variable-const-type.wind

NULL表示值为0的字符,其数字值是0
字符串内部使用一个空字符\0作为结尾,所以储存字符串的物理单元比双引号内的字符数多一个。

可见:http://codesky.me/archives/c-variable-const-type.wind

C 格式说明

%d 按照十进制整数型打印
6d 按照十进制整数型打印,至少6个字符宽
%f 按照浮点数打印
%.2f 按照浮点数打印,小数点后有两位小数

什么是字符宽请见:http://codesky.me/archives/c-str-width.wind

printf()还支持以下格式:
%o 表示八进制数
%x 表示十六进制数
%s 表示字符串
%% 表示百分比

复习一下PHP中:

八进制符号数值前加0;十六进制加0x。
表达式计算结果都以十进制输出。

From:http://codesky.me/archives/php-scalar-type.wind

C 变量与常量 数据类型

终于正式开始学C做笔记了 本来想一长篇说点的,想想还是边看边记,记得少点搜索起来方便。

变量与常量的命名规范与PHP类似,常量全部用大写字母,而变量使用小写字母,C也同样区分大小写,命名时不要以下划线_开头。局部变量一般使用较短的变量名,外部变量一般使用较长的名字。

保留字符的问题就不多说了,差不多就是那回事。

- 阅读剩余部分 -