要考C语言啦,我们不如一起看看一些代码哦。
前几天又看了一遍战狼,发现里面有几个有关入侵代码的部分。
嗯,不错!
嗯?
嗯……
于是,本着搞事的原则,我们高贵的程序员就来一起还原下电影里的这些代码,给大家讲解讲解。都是C语言哦!
代码1:
#include <stdio.h> main() { int i, j, k, n; printf("'water flower'number is:"); for (n = 100; n < 1000; n++) { i = n / 100; j = n / 10 % 10; k = n % 10; if (i * 100 + j * 10 + k == i * i * i + j * j * j + k * k * k) { printf("%-5d", n); } } printf("n"); }
嗯,这个代码首先定义了四个变量,接下来有一个从100到999的n的循环,每次我们算出三个i,j,k,分别对应n的百位,十位,个位。最后我们判断下n的值和其百位的三次方加上十位的三次方加上个位的三次方相不相等,我们再看看,嗯?这不就是我们的水仙花数嘛?当然,这里的i * 100 + j * 10 + k可以直接用n代替,就可以了。
代码2:
/* zheng int is divided yinshu */ #include "stdio.h" #include "conio.h" main() { int n, i; printf("\nplease input a number:\n"); scanf("%d", &n); printf("%d=", n); for (i = 2; i <= n; i++) while (n != i) { if (n % i == 0) { printf("%d*", i); n = n / i; } else break; } printf("%d", n); getch(); }
嗯,这个代码首先定义了两个变量,接下来输入了一个n,我们首先输出n;接下来循环从2到n;对于每个枚举的i,我们判断i和n相不相等,不等的话我们就看看n模i(余数)是不是0,如果是就说明整除,那我们就知道这是个因数,接下来我们将n变成更小的再去循环,最后我们就能将一个数字分解成许多个因数相乘了。
代码3:
#include <stdio.h> main() { int score; char grade; printf("please input a score!\n"); scanf("%d", &score); grade = score >= 90 ? 'A' : (score > 80 ? 'B' : 'C'); printf("%d belongs to %c", score, grade); }
嗯,这个代码首先定义了两个变量,score和grade,接下来我们输入一个score,然后我们先判断分数是否大于等于90,如果是那么grade就是A,否则就是(score < 90 ? ‘B’ : ‘C’)的值,那么第二个表达式,就是判断score是不是小于80,如果大于80那么就是B,否则是C。
代码4:
#include <stdio.h> #include <conio.h> int main() { char letter; printf("please input the first letter of someday\n"); while ((letter = getch()) != 'Y') { switch (letter) { case 's': printf("please input second letter\n"); if ((letter = getch()) == 'a') printf("saturday\n"); else if ((letter = getch()) == 'u') printf("sunday\n"); else printf("data error\n"); break; case 'f': printf("friday\n"); break; case 'm': printf("monday\n"); break; case 't': printf("please input second letter\n"); if ((letter = getch()) == 'u') printf("tuesday\n"); else if ((letter = getch()) == 'h') printf("thursday\n"); else printf("data error\n"); break; case 'w': printf("wednesday\n"); break; default: printf("dataerror\n"); } } }
本程序功能为自动补全,从键盘输入一个星期七天的英文首字母,即可自动补全。
首先定义了一个变量letter,读入该英文的第一个字母,如果是f/m/w则得到结果,如果是s/t则再读入第二个字母进行判断。
getch()是一个难点,和getchar()差不多,区别在于getch()输入的屏幕不显示。
代码5:
#include <stdio.h> main() { long a, b, c, d, e, x; scanf("%ld", &x); a = x / 10000; b = x % 10000 / 1000; c = x % 1000 / 100; d = x % 100 / 10; e = x % 10; if (a != 0) printf("there are 5, %ld %ld %ld %ld %ld\n", e, d, c, b, a); else if (b != 0) printf("there are 4, %ld %ld %ld %ld\n", e, d, c, b); else if (c != 0) printf(" there are 3, %ld %ld %ld\n", e, d, c); else if (d != 0) printf("there are 2, %ld %ld\n", e, d); else if (e != 0) printf(" there are 1, %ld\n", e); }
首先定义一个变量x,读入x后按照个十百千万赋值给e/d/c/b/a,最后通过对a/b/c/d/e是否为0来判断该整数的位数,并按位输出该数。
这里的long大家可以当作和int一样(迫真