F1~F12 有了新的功能
Fn+F1 旧的功能
Fn+F2
Fn 辅助功能键
time_t=time(NULL )
goto语句:尽量不使用goto语句,goto语句不能跨函数跳转 可以在代码中出现逻辑的跳转
死循环的打印“呵呵”;
int main() { end: printf("呵呵\n"); goto end; printf("heihei\n"); return 0; }
void test() { flag: printf("haha\n"); } int main() { printf("hehe\n"); goto flag;//goto语句只能在同一个函数内部跳转,不能跨函数跳转 return 0; }
最常见的用法是终止程序在某些深度嵌套的结构的处理过程 例如:深度嵌套情况下,一次性跳出多层循环。
go to例子
关机程序:
程序运行后一分钟内关机
如果输入“我是猪”,则取消关机
int main() { char input[20] = { 0 }; system("shutdown -s -t 60");//开始倒计时关机 again: printf("你的电脑在一分钟内会关机,输入“我是猪”,则取消关机\n"); scanf("%s", input); //字符串不用&索引 if (strcmp(input, "我是猪") == 0)//字符串判断用 strcmp函数 { system("shutdown -a");//取消关机 printf("取消关机\n"); } else { goto again; } return 0; } //可以用循环语句进行替代 可以替换goto语句
小乐乐坐电梯
int main() { int n; printf("前面有多少人:"); scanf("%d", &n); int t = (n / 12) * 4 + 2; printf("%d分钟\n", t); return 0; }
逆序输出
int main() { int arr[10] = { 0 };//0-9 int i = 0; while (i < 10) { scanf("%d", &arr[i]); i++; } i = 9; while (i >= 0) { printf("%d ", arr[i]); i--; } return 0; }
ASCII码
int main() { int arr[] = { 73,32,99,97,110,32,100,111,32,105,116,33,'\0'}; int sz = sizeof(arr) / sizeof(arr[0]);//求元素个数 int i = 0; while (i < sz) { printf("%c", arr[i]); i++; } return 0; }
打印ASCII码值 只需要将%c和%d相互转换,这样可以将字符和对应的整形进行转换
int main() { int a = 99; printf("%c", a); return 0; }
小乐乐求和 小乐乐最近接触到了求和符号 但是小乐乐很笨 请你帮他解答一下
int main() { int a = 0; printf("请输入一个数:\n"); long long sum = 0; scanf("%d", &a); for (a,sum; a != 0; a--) { sum += a; } printf("%lld", sum);//sum数值过长,类型定义为long long return 0; }
小乐乐求和 方法二
等差数列前n项和 值足够大时,用long long
用等差数列求前n项和公式求和
int main() { long long n; //不仅要ret声明为long long,n也设置成long long类型 scanf("%lld", &n); long long ret = (1 + n) * n / 2;//等差数列前n项和公式 printf("%lld\n", ret); return 0; }
计算带余除法
int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); int m = a / b; int n = a % b; printf("%d %d", m, n); return 0;
计算体重指数
int main() { int kg = 0; int high = 0; double c = 0; printf("请输入体重:"); scanf("%d", &kg); printf("请输入身高"); scanf("%d", &high); c = kg / ((high / 100.0) * (high / 100.0)); printf("%.2lf", c); return 0; }
static可以改变变量范围 static会保留上一次的局部变量的值,不会销毁
口头语中的指针都是指针变量,用来存放地址。
指针变量的大小是4/8个字节
指针是个变量 用来存放地址
char*指针类型 计算指针变量的大小
小乐乐获得4个最大数,请帮他编程找到最大的数。
小乐乐找最大数 方法1 数组存放
int main() { int arr[4] = {0}; int i = 0; for (i = 0; i < 4; i++) { scanf("%d", &arr[i]); } int max = arr[0]; for (i = 1; i < 4; i++) { if (arr[i] > max) { max = arr[i]; } } printf("%d", max); return 0; }
小乐乐找最大数 方法2 用INT_MIN表示整数中的最小值 INT_MIN表示整形中的最小值
#include <limits.h> int main() { int max = INT_MIN;//需要头文件 <limits.h> int i = 0; int n = 0; for (i = 0; i < 4; i++) { scanf("%d", &n); if (n > max) max = n; } printf("%d\n", max); return 0; }
小乐乐找最大数 方法3 四个数分别进行比较 取最大值
int main() { int a, b, c, d; scanf("%d %d %d %d", &a, &b, &c, &d); int x = a > b ? a : b; int y = c > d ? c : d; int max = x > y ? x : y; printf("%d", max); return 0; }
字母大小写转换 方法1:
大写字母ASCII值65-90 小写字母ASCII值97-122
int main() { char ch = 0; while (scanf("%c", &ch)==1) { if (ch >= 97 && ch <= 122) { ch = ch - 32; printf("%c\n", ch); } else if (ch >= 65 && ch <= 90) { ch = ch + 32; printf("%c\n", ch); } } return 0; }
字母大小写转换 方法2
int main() { char ch = 0; while (scanf("%c", &ch) == 1)//返回1证明读到了字符,有字符 { if (ch >= 'a' && ch <= 'z') { ch = ch - 32; printf("%c\n", ch); } else if (ch >= 'A' && ch <= 'Z') { ch = ch + 32; printf("%c\n", ch); } } return 0; }
方法三 库函数精准度最高
字母大小写转换 方法三: 库函数直接判断大小写字母
判断大写字母-isupper
判断小写字母-islower
大写转小写-tolower 方法后要传参
小写转大写-toupper
大小写转换的头文件#include <ctype.h>
int main() { char ch = 0; while (scanf("%c", &ch) == 1) { if (islower(ch))//判断ch是否为小写字母 { printf("%c\n", toupper(ch));//toupper小写转大写函数 } else if (isupper(ch))//isupper大写转小写函数 { printf("%c\n", tolower(ch)); } } return 0; } //库函数更标准,出错效率小一点。
判断是不是字母 方法1 scanf
int main() { char ch = 0; scanf("%c", &ch); if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))//不能写成A到z printf("%c是字母", ch); else printf("%c不是字母", ch); getchar(); //清理\n return 0; }
判断是不是字母 方法2 getchar()
循环中 不用处理回车
int main() { int ch = 0; while (ch = getchar() != EOF) { if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))//不能写成A到z printf("%c是字母", ch); else printf("%c不是字母", ch); getchar(); //清理\n } return 0; }
判断是不是字母 方法3 库函数 isalpha函数
int main() { int ch = 0; while ((ch = getchar()) != EOF) { if (isalpha(ch))//不能写成A到z { printf("%c是字母\n", ch); } else { printf("%c不是字母\n", ch); } getchar(); //清理\n } return 0; }
写一个代码,打印1 - 100之间所有三的倍数 方法1:
int main() { int a = 0; for (a = 1; a <= 100; a++) { if (a % 3 == 0) { printf("%d ", a); } } return 0; }
写一个代码,打印1 - 100之间所有三的倍数 方法2:
int main() { int i = 0; for (i = 3; i <= 100; i = i + 3) { printf("%d ", i); } return 0; }
写代码将三个整数从大到小输出 方法1:
int main() { int a = 0; int b = 0; int c = 0; scanf("%d %d %d", &a, &b, &c); //比较判断三个数的大小: if (a < b) { int t = a; a = b; b = t; } if (a < c) { int t = a; a = c; c = t; } if (b < c) { int t = b; b = c; c = t; }//用第三个变量调整顺序,从而由大到小输出 printf("%d %d %d", a, b, c); }
写代码将三个整数从大到小输出 方法2:
int main() { int a, b, c; printf("请您输入要比较的三位数字:\n"); scanf("%d %d %d", &a, &b, &c); if (a > b) { if (a > b && a > c) printf("%d %d %d", a, b, c); else printf("%d %d %d", a, c, b); } else if (b > a) { if (b > a && a > c) printf("%d %d %d", b, a, c); else printf("%d %d %d", b, c, a); } else if (c > a) { if (c > a && c > b) { printf("%d %d %d", c, a, b); } else printf("%d %d %d", c, b, a); } return 0; }
写一个代码,打印100-200之间的素数 方法1:
int main() { int i = 0; int count = 0; for (i = 100; i <= 200; i++)//外层循环帮我们产生i 内存循环进行试除 判断是否为素数 { //判断i是否是素数 素数(质数)只能被1和它本身整除 //用2-i-1试除一下 int j = 0; int flag = 1; for (j = 2; j < i; j++)//sqrt开平方 #include <math.h> 函数 { if (i % j == 0) { flag = 0; break; } } if (flag == 1) { count++; printf("%d ", i); printf("count=%d\n", count); } } printf("\ncount=%d\n", count); return 0; }
写一个代码,打印100-200之间的素数 方法2:
int main() { int i = 0; int count = 0; for (i = 101; i <= 200; i+=2)//外层循环帮我们产生i 内存循环进行试除 判断是否为素数 { //判断i是否是素数 素数(质数)只能被1和它本身整除 //用2-i-1试除一下 int j = 0; int flag = 1; for (j = 2; j <= sqrt(i); j++)//sqrt开平方 #include <math.h> 函数 { if (i % j == 0) { flag = 0; break; } } if (flag == 1) { count++; printf("%d ", i); printf("count=%d\n", count); } } printf("\ncount=%d\n", count); return 0; }
打印1000-2000间的闰年
int main() { int a = 0; int count = 0; for (a = 1000; a <= 2000; a++) { //判断是否是闰年 //判断规则:能被四整除不能被一百整除/能被四百整除 if (a % 4 == 0 || a % 100 == 0) { printf("%d ", a); count++; } } printf("%d", count); return 0; }
寻找最大公约数 方法1:循环法:
int main() { int m = 0; int n = 0; scanf("%d %d", &m, &n); int y = (m > n ? n : m); while (1)//恒为真 一直进行循环 { if (m % y == 0 && n % y == 0) //从两个数中的较大的数开始取余,找到两个数的最大公约数 { break; //找到后跳出循环 } y--;//从大到小,找到唯一可以整除他俩的 } printf("%d\n", y); return 0; }
寻找最大公约数 方法2:辗转相除法——求最大公约数的一种方法
int main() { int m = 0; int n = 0; int p = 0; printf("请输入两个整数: "); scanf("%d %d", &m, &n); while (p = m % n) { m = n; n = p; } printf("最大公约数为:%d\n", n); return 0; }
最小公倍数
int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); int x = 0; x = a > b ? a : b; while ((x % a != 0) || (x % b != 0)) { x++; } printf("%d", x); return 0; }
99乘法口诀表的打印
int main() { int i, j; for (int i = 1; i <= 9; i++) { for (j = 1; j <= 9; j++) { int sum = i * j; printf("%d * %d= %-2d ", i, j, sum); if ( j == 9) { printf("\n"); } } } return 0; }
求十个整数中的最大值 键盘输入
int main() { int arr[10] = { 0 }; int n = 0; for (n = 1; n <= 10; n++) { printf("请输入一个整数:\n"); scanf("%d", &arr[n]); } int m = arr[0]; int i = 0; for (i = 1; i <= 10; i++) { if (arr[i] > m) { m = arr[i]; } } printf("最大的值是:%d\n", m); return 0; }
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
分数求和 方法1:
int main() { int i = 0; double sum = 0; int flag = 1; for(i=1;i<=100;i++) { sum += flag * 1.0 / i; flag = -flag; //加减交替 } printf("%lf", sum); return 0; }
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
分数求和 方法2:
int main() { int i = 0; double sum = 0; int flag = 1; for(i=1;i<=100;i++) { if (i % 2 == 1) { sum += 1.0 / i; } else { sum -= 1.0 / i; } } printf("%lf\n", sum); return 0; }
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
分数求和 方法3:
int main() { double sum1 = 0; double sum2 = 0; for (int i = 2; i <= 100; i += 2) { sum1 = sum1 + 1.0 / i; } for (int j = 1; j <= 99; j += 2) { sum2 = sum2 + 1.0 / j; } double sum = 0; sum = sum2 - sum1; printf("%lf", sum); return 0; }
编写程序数一下 1到 100 的所有整数中出现多少个数字9
int main() { int a = 0; int sum = 0; for (a = 1; a < 101; a++) { if (a % 10 == 9 || a / 10 == 9) { sum++; } if (a == 99) sum = sum + 1; } printf("%d", sum); return 0; }
猜数字游戏:
//猜数字: void menu() { printf("*************************\n"); printf("******** 1. play ********\n"); printf("******** 0. exit ********\n"); } void game() { //生成随机数 int ret = rand()%100+1; //0-99+1-->1-100 ,限制随机数产生的范围 //printf("%d\n", ret); //RAND_MAX; //2.猜数字 int guess = 0; while (1) { printf("请猜数字;"); scanf("%d", &guess); if (guess < ret) printf("猜小了\n"); else if (guess > ret) printf("猜大了\n"); else { printf("恭喜你,猜对了\n"); break; } } } int main() { int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("请选择:"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出游戏\n"); break; default: printf("选择错误,重新选择"); break; } } while (input); return 0; }
输出1-100之间的奇数 并判断它是不是3的倍数
int main() { int a = 1; while (a <= 100) { a++; if (a % 3 == 0) { printf("%d ", a); } } return 0; }
输出1—100之间的奇数
int main() { //while循环 int a = 0; int sum = 0; while(a < 101) { if (a % 2 == 1) { printf("%d ", a);//输出之间加空格 } sum = sum + a; a++; } printf("\n"); printf("sum = %d", sum); return 0; }