CodeSky 代码之空

随手记录自己的学习过程

归档时间:2014-03

C 关于素数的两道题和相关算法

2014-03-08 20:50分类: C评论: 2

这道题目有点意思。 1.如果一个数是素数,则指出是素数,否则写出因数。 2.输入一个整数,显示所有小于等于该数的素数。

首先明确什么是素数再说,实际上概念我忘得差不多了:

質數,又称素数,指在大於1的自然数中,除了1和此整数自身外,無法被其他自然数整除的数(也可定義為只有1和本身两个因数的数)。

阅读更多 →

C 谈谈switch

2014-03-08 20:15分类: C评论: 0

没学C的时候谈了一下break的作用Switch-Case中break的作用

这次来说说与if else的区别。

我时常在纠结switch case到底能不能加表达式,实际上,如果加了表达式,将会是一件异常方便的事,遗憾的是,switch只能是常量或者由常量组成的表达式(并且必须是整型值,包括char),否则的话就要用if else了(比如你需要一个范围),可见switch虽然结构清晰,条件确实坑爹。

阅读更多 →

C continue与break

2014-03-08 19:56分类: C评论: 0

continue时表示结束这次循环开始下一次循环(不运行接下来的语句),而break表示跳出循环结构。

但是continuebreak的使用根本是让循环简单化,如果复杂化了,还不如不用。

阅读更多 →

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

2014-03-08 19:43分类: C评论: 0

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

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

1#include <stdio.h>
2
3int main(void)
4{
5    char line[255];
6    int i, length;
7
8    printf("Print a sentence: ");
9    for (i = 0; i < 255; i++) {
10        scanf("%c", &line[i]);
11        if (line[i] == '\n')
12            break;
13    }
14    for (i -= 1; i >= 0; i--)
15        printf("%c", line[i]);
16
17    return 0;
18}
19

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

阅读更多 →

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

2014-03-08 18:05分类: C评论: 0

一个单词读入一个字符数组,然后反向打印出这个值。提示:使用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 大写字母输出金字塔

2014-03-08 17:15分类: C评论: 0

题目: 输入一个字母(如E)则输出:

    A
   ABA
  ABCBA
 ABCDCBA
ABCDEDCBA

提示:使用一个外部循环来处理行,在每一行中使用三个内部循环,一个处理空格,一个以升序打印字母,一个以降序打印字母。

阅读更多 →

C 一个程序说说scanf()判断

2014-03-08 15:46分类: C评论: 0

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

1#include <stdio.h>
2
3int main(void)
4{
5    long num;
6    long sum = 0L;
7    int status;
8
9    printf("Please enter an integer to be summed. ");
10    printf("(q to quit): ");
11    status = scanf("%ld", &num);
12    while (status == 1)
13    {
14        sum = sum + num;
15        printf("Please enter next integer (q to quit):");
16        status = scanf("%ld", &num);
17    }
18    printf("Those integers sum to %ld.\n", sum);
19    return 0;
20}
21

这里用到了:

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

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

阅读更多 →

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

2014-03-08 12:52分类: C评论: 0

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

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

1#include <stdio.h>
2#include <math.h>
3
4int main(void)
5{
6    int degree;
7    double radian;
8
9    for (degree = 10; degree <= 20; degree++) {
10        radian = M_PI * degree / 180;
11        printf("%d   %f\n", degree, sin(radian));
12    }
13    return 0;
14}
15
阅读更多 →

C 输出指定字母ASCII码与字母ASCII码表

2014-03-08 12:44分类: C评论: 0

一共这里是两道题,两道题都要求输出ascii码对应的十六进制,八进制,十进制,前面一道异常,非常,超级的……简单。而后面一道对输出格式有要求,所以慢慢修改探究出一个和答案差不多格式的了。

关于第二题的效果图: ![2014-03-08_124310.png][1]

阅读更多 →
共 38 篇文章,4 页