C语言基础学习——第2天(语句)
来源:互联网 发布:linux打开oracle服务 编辑:程序博客网 时间:2024/04/30 07:00
00if.c
#include <stdio.h>#define EPSILON 0.000001int main(void){ int a = 0; printf("pls input your score: "); scanf("%d", &a); if (a < 0 || a > 100) { printf("score should be 0 -- 100.\n"); return 0; } if (a < 30) { printf("grade E.\n"); } else if (a < 60) { printf("grade D.\n"); } else if (a < 75) { printf("grade C.\n"); } else if (a < 85) { printf("grade B.\n"); } else printf("grade A, excellent!\n"); printf("\n"); // 分成及格与不及格 if (a < 60) { if (a < 30) { printf("grade E.\n"); } else { printf("grade D.\n"); } } else { if (a < 75) { printf("grade C.\n"); } else if (a < 85) { printf("grade B.\n"); } else printf("grade A, excellent!\n"); } printf("\n"); float f = 5.00000001; // 不推荐直接用 == 来判断浮点数 if (f == 5.0) { printf("f == 5.0!\n"); } else { printf("f != 5.0!\n"); } printf("\n"); // 自己控制浮点数的判断范围(推荐做法) if ((f > 5.0 - EPSILON) && (f < 5.0 + EPSILON)) { printf("f == 5.0!\n"); } else { printf("f != 5.0!\n"); } return 0;}运行结果:pls input your score: 86grade A, excellent!grade A, excellent!f == 5.0!f == 5.0!
01while.c
#include <stdio.h>int main(void){ int i = 0; while (i < 5) { printf("i = %d\n", i); i++; } printf("******* i = %d *******\n", i); // do - while 无论如何会执行一次 do { printf("in do while i = %d\n", i); i++; } while (i < 5); printf("******* i = %d *******\n", i); return 0;}运行结果:i = 0i = 1i = 2i = 3i = 4******* i = 5 *******in do while i = 5******* i = 6 *******
02goto.c
#include <stdio.h>int main(void){ int i = 0;label: printf("i = %d\n", i); i++; if (i < 5) goto label; printf("******* i = %d *******\n", i); return 0;}运行结果:i = 0i = 1i = 2i = 3i = 4******* i = 5 *******
03for.c
#include <stdio.h>int main(void){ int i = 0; for (i = 1; i > 5; i++) ; printf("i = %d\n", i); printf("------------------\n"); for (i = 0; i < 5; i++) printf("i = %d\n", i); return 0;}for (init_expr; cond_expr; update_expr) statment // statment: 可以是 ; or expression; or { ... }init_expr(初始化表达式, 无论如何会执行一次) -> cond_expr (true) -> statment --> updata_expr -> cond_expr (true) -> statment --> updata_expr ...运行结果:i = 1------------------i = 0i = 1i = 2i = 3i = 4
04random.c
#include <stdio.h>int main(void){ int num = 0; printf("1970.1.1 00:00 -- now, sec: %d\n", time(NULL)); srand(time(NULL)); // 利用系统时间来改变系统的种子值 num = rand() % 100; // 产生100以内的随机整数 printf("num = %d\n", num); num = rand() % 100; // 产生100以内的随机整数 printf("num = %d\n", num); return 0;}运行结果:1970.1.1 00:00 -- now, sec: 1439711053num = 37num = 18
05break.c
#include <stdio.h>int main(void){ int i = 0, j = 0; while (i < 9) { printf("i: %d --> ", i); if (i == 3) { i++; putchar('\n'); continue; // 跳过本次循环 } j = 0; while (1) { printf("%d ", j); j++; if (j > i) break; } putchar('\n'); i++; } return 0;}break: 跳出一层循环continue: 结束本次循环运行结果:i: 0 --> 0i: 1 --> 0 1i: 2 --> 0 1 2i: 3 -->i: 4 --> 0 1 2 3 4i: 5 --> 0 1 2 3 4 5i: 6 --> 0 1 2 3 4 5 6i: 7 --> 0 1 2 3 4 5 6 7i: 8 --> 0 1 2 3 4 5 6 7 8
06switch.c
#include <stdio.h>int main(void){ char ch = 0; printf("input a char: "); ch = getchar(); switch (ch) { case 'a': case 'A': printf("a or A!\n"); break; case 'b': case 'B': printf("b or B!\n"); break; case 'c': case 'C': printf("c or C!\n"); break; default: printf("other unkown case.\n"); break; } return 0;}
07output_buf.c
#include <stdio.h>int main(void){ int n = 0; printf("hello\n"); // 这行可以打印出来 printf("world!"); // 这行却暂时打印不出来 //scanf("%d", &n); //fflush(stdout); while (1) { sleep(1); } return 0;}stdin 标准输入stdout 标准输出stderr 标准错误输出标准输出是行缓冲. 以下情况导致缓冲区刷新:1. 遇到换行字符('\n').2. 遇到下一次标准输入.3. 缓冲区满.4. 强制刷新(fflush(stdout)).
08input_buf.c
#include <stdio.h>int main(void){ int ret = 0, n = 0; char ch = 0; printf("pls input a integer: ");// 在这个地方,你可以输入一个数字或者一个字符试一下,比较结果有何不同 ret = scanf("%d", &n); // 如果scanf拿到东西, 则 ret != 0 printf("n = %d, ret = %d\n", n, ret); ret = 0; // 清0 while(getchar() != '\n') // 清空输入缓冲区(去缓冲区取, 直到取出'\n'就跳出while) ; printf("pls input a char: "); ret = scanf("%c", &ch); // 如果不清缓冲区的话,ch拿到的是'\n'换行符 printf("ch = %c, ret = %d\n", ch, ret); return 0;}scanf 按照格式到标准输入缓冲区中拿东西.只要标准输入缓冲区中的数据和 scanf 指定的格式不匹配, 则 scanf 直接返回.scanf 的返回值用于判断 scanf 有没有拿到东西.
exercise1.c
#include <stdio.h>int main(void){ double ret = 0.0; int divider = 0; for (divider = 1; divider <= 10; divider++) { if (divider % 2 == 0) ret -= (double)1 / divider; else ret += 1 / (double)divider; } printf("ret = %lf\n", ret); return 0;}计算 1 - 1/2 + 1/3 - 1/4 + ... - 1/10 的值
exercise2.c
#include <stdio.h>int main(void){ int num = 0, divider = 0, flag = 0, cnt = 0; for (num = 2; num <= 1000; num++) { flag = 1; // 素数的标志 for (divider = 2; divider <= num/2; divider++)// 一半就可以了 { if (num%divider == 0) { flag = 0; // 不是素数 break; } }#if 1 if (flag == 1) { cnt++; printf("%d is a prime number.\n", num); }#else if (divider == num / 2 + 1) { cnt++; printf("%d is a prime number.\n", num); }#endif } printf("*******************\n"); printf("2 - 1000 has %d prime numbers.\n", cnt); return 0;}求出 2 - 1000 的素数
exercise3.c
#include <stdio.h>int main(void){ unsigned int num = 0, temp = 0; unsigned int i = 0, k = 0; printf("please input the number:"); scanf("%u", &num); temp = num; while(temp != 0) { i = temp % 10; temp = temp / 10; k = k * 10 + i; } if(num == k) printf("%d is a palindromic number\n", num); else printf("%d is not a palindromic number\n", num); return 0;}输入一个无符号整数, 判定该整数是否是回文数ex: 1, 11, 121, 12321
exercise4.c
#include <stdio.h>int main(void){ int gj = 0, mj = 0, xj = 0; for(gj = 0; gj < 100/5; gj++) { for(mj = 0; mj < 100/3; mj++) { xj = 100 - gj - mj; if((xj % 3 == 0) && ((gj * 5 + mj * 3 + xj / 3) == 100)) { printf("gj = %d, mj = %d, xj = %d\n", gj, mj, xj); } } } return 0;}100元买100只鸡, 公鸡5元一只, 母鸡3元一只, 小鸡1元三只, 请输出所有的组合.运行结果:gj = 0, mj = 25, xj = 75gj = 4, mj = 18, xj = 78gj = 8, mj = 11, xj = 81gj = 12, mj = 4, xj = 84
exercise5.c
#include <stdio.h>int main(void){ unsigned int a = 0, b = 0, gcd = 0; printf("please input a and b: "); scanf("%u %u", &a, &b); for(gcd = a > b ? b : a; gcd > 0; gcd--) if((a % gcd == 0) && (b % gcd == 0)) break; printf("the greatest common divisor of %d and %d is %d\n", a, b, gcd); return 0;}求两个数的最大公约数.
exercise6.c
#include <stdio.h>int main(void){ unsigned int num = 0, i = 0, ret = 0; for(num = 1; num <= 1000; num++) { for(i = 1; i <= num/2; i++) // 一半就可以了 { if(num % i == 0) ret += i; } if(ret == num) printf("the perfect number is %d\n", num); ret = 0; // 及时清零 } return 0;}输出1 - 1000以内的完数(其真因子之和等于其自身) 6: 1, 2, 3; 6 = 1 + 2 + 3运行结果:the perfect number is 6the perfect number is 28the perfect number is 496
exercise7.c
#include <stdio.h>int main(void){ unsigned int num = 0, sum = 0, i = 0, j = 0 ; for(num = 2; num < 1000; num++) { j = num; sum = 0; while(j > 0) { i = j % 10; j = j / 10; sum += i * i * i; } if(sum == num) printf("the narcissistic number is %d\n", num); } return 0;}1 - 1000以内的水仙花数153 = 1 ^ 3 + 5 ^ 3 + 3 ^ 3运行结果:the narcissistic number is 153the narcissistic number is 370the narcissistic number is 371the narcissistic number is 407
0 0
- C语言基础学习——第2天(语句)
- C语言基础学习——第3天(函数)
- C语言基础学习——第4天(数组)
- C语言基础学习——第5天(指针)
- C语言基础学习——第11天(预处理)
- C语言基础学习第001天
- C语言基础学习——第1天(类型+操作符)
- C语言基础学习——第6天(动态内存分配)
- C语言基础学习——第7天(二维数组、指针数组等)
- C语言基础学习——第8天(函数指针)
- C语言基础学习——第9天(结构体、联合、枚举)
- C语言基础学习——第10天(文件操作)
- C语言基础学习(三)--语句
- c语言基础学习记录第一天
- 第一天C语言学习基础
- 学习C语言的第2天
- C语言学习第五天—递归
- c语言—语句
- WPF中播放帧序列图
- Java中的wait()方法和sleep()方法的区别是什么?
- Vanya and Books
- Java JUC之Atomic系列12大类实例讲解和原理分解
- win2003提示“在系统启动时至少有一个服务或驱动程序产生错误”
- C语言基础学习——第2天(语句)
- final,finally,finalize区别
- kindeditor编辑器 被过滤解决方法
- MYSQL的高并发
- 数据库事务隔离级别
- Proactor 学习2
- Send and Receive JSON between Android and PHP Web Service
- 求两线段交点
- WARN [org.hibernate.engine.jdbc.internal.JdbcServicesImpl] - <HHH000342: Could not obtain connectio