@0xl2oot
2017-03-27T04:49:21.000000Z
字数 5853
阅读 1290
关于C语言教学的一点思考
American Standard Code for Information Interchange
48-57 数字 65-90 大写 97-122 小写
准备一张纸一支笔
写程序其实是在做数学题,只不过你需要按照程序的思维方式来思考问题,看到一个问题,先把他当做一个数学问题,然后在转换成程序能理解的语句,比如IF判断,赋值语句(比如说一个求最大值的问题),那么这样想来,一旦你学会了基本的语句,那么你解题的时间应该是80%在思考数学题,20%在写代码,在思考的过程中,可以拿只笔写写算算。
然后再来从写程序的角度来思考,计算机是不会思考的,更不会凭空生成数据,程序运算的数据是人来提供的,所以要给程序提供数据,数据计算完成之后,你不写printf语句,程序也不会把结果呈现在屏幕上。
所以程序开始就要读入数据scanf,那么把数据读到哪里呢,这时候就需要我们定义一个变量,变量现在学的就是 int float double char ,把数据读入到定义好的变量后,就可以进行计算了,计算无非是 + - * / % 这几个,这里要随时注意运算后的结果是不是正确的数据类型,最后打印到屏幕上(标准输出设备),打印出来的时候可以选择打印的格式,就像用 Word Excel 一样,可以对齐,可以取小数,还可以强制转换数据类型。
另外一点值得注意的是要考虑程序的健壮性,什么是程序的健壮性呢,当然这个概念你们可能不会接触的很多,但是在有些题目中会出现这样的情况(比如一个三位数,要求输出相反顺序的数字,我输入了200,那么你返回了002,那么这个程序就没有足够的健壮性),这是最简单的例子,还有一些例子是你们写的程序都是要求输入特定数据的,那么我偏不输入特定数据,这样程序很可能会崩溃,好的程序应该能做到防止用户输入垃圾数据的能力。
写程序的目的是解题,那么解题的办法就没有限制了,只要能解出题来,任何一种方法都可以,比如判断三位水仙花数的问题,我们可以用搜索引擎搜到,三位水仙花数只有四个数,那么我们输入一个数进行判断时,就可以只跟这四个数进行比较。
三目运算符 a ? b : c;1978年,丹尼斯·里奇(Dennis Ritchie)和布莱恩·科尔尼干(Brian Kernighan)出版了一本书,名叫《The C Programming Language》K&R C ANSI C、ISO C、C89、C90
我不是很了解环工这个专业到底是做什么的,但是在环境工程这个领域中,也可能用到很多计算机的知识,比如说一个环境问题,处理这个环境问题一定会有大量的数据产生,那么如何处理这些数据,就需要用到编程了,另外还有常用的GPS,GIS系统等等,比如常用的MATLAB,Python,看起来好像和C语言没有多大的关系,但实际上,编程语言都是相通的,一旦学会了一门编程语言,就可以在较短的时间内学会其他的编程语言,另外有人说Python简单,直接学Python就好了啊,事实上Python中的知识远远要比C语言复杂的多,只是大部分人都他表面的语法给误导了。C语言应该算是最简洁的语言,单词很少,运行速度快,K&R C一直是经典。
单片机的开发,智能小车,无人机开发等等
不搞算法,知道加减乘除就可以了标识符就是程序员自己起的名字,除了变量名,后面还会讲到函数名、宏名、结构体名等。不过,名字也不能随便起,C语言规定,标识符只能由字母(A~Z, a~z)、数字(0~9)和下划线(_)组成,并且第一个字符必须是字母或下划线。
#include <stdio.h>
int main(){
int n,i,a=0,b=1,c;
scanf("%d",&n);
printf("%d ",b);
for(i=2;i<=n;i++){
c=a+b;
printf("%d ",c);
a=b;
b=c;
}
return 0;
}
#include <stdio.h>
#include <math.h>
int main(){
int n,m,i,j,k,s=0;
scanf("%d",&n);
m=pow(10,n-1);
for(i=m;i<m*10;i++){
k=i;
for(j=1;j<=n;j++){
s=s+pow(k%10,n);
k=k/10;
}
if(s==i) printf("%d\n",i);
s=0;
}
return 0;
}
#include <stdio.h>
int main() {
int n, m = 4, num = 1, sum = 0, i;
scanf("%d", &n);
for(i = 0; i < n; i++) {
sum += num;
printf("%d\n", num);
num += m;
m += 2;
}
printf("%d", sum);
return 0;
}
#include <stdio.h>
int main() {
int a[4] = {153, 370, 371, 407};
int b[3] = {1634, 8208, 9474};
int c[3] = {54748, 92727, 93084};
int d = 548834;
int n, i;
scanf("%d", &n);
if(n == 3) {
for(i = 0; i < 4; i++)
printf("%d\n", a[i]);
}
else if(n == 4) {
for(i = 0; i < 3; i++)
printf("%d\n", b[i]);
}
else if(n == 5) {
for(i = 0; i < 3; i++)
printf("%d\n", c[i]);
}
else {
printf("%d\n", d);
}
return 0;
}
#include <stdio.h>
int main() {
long a = 0L;
double b = 0;
double c = 0.01;
int i;
for(i = 0; i < 30; i++) {
a += 100000L;
b += c;
c *= 2;
}
printf("%ld %.2f", a, b);
return 0;
}
#include <stdio.h>
int main() {
int n, m, chk;
scanf("%d %d", &n, &m);
for(chk = 0; chk <= n; chk++) {
if(chk*2 + (n-chk)*4 == m)
printf("%d %d ", chk, n - chk);
}
return 0;
}
#include <stdio.h>
int main() {
int a, b, sum = 0, i, temp;
scanf("%d%d", &a, &b);
if(a > b)
{
temp = a;
a = b;
b = temp;
}
a = a%2 ? a : a + 1;
b = b%2 ? b : b - 1;
for(i = a; i <= b; i += 2)
sum += i;
printf("%d", sum);
return 0;
}
#include <stdio.h>
int main() {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("%s", ((a+b > c) && (((a-b > 0) ? (a-b) : (b-a)) < c)) ? "TRUE" : "FALSE");
return 0;
}
#include <stdio.h>
int main() {
int A1, A2, B1, B2, C1, C2, flag;
scanf("%d%d%d%d%d%d", &A1, &B1, &C1, &A2, &B2, &C2);
if(A1 == A2) {
if(B1 == B2) {
if(C1 == C2)
flag = 0;
else if(C1 > C2)
flag = 1;
else
flag = 2;
}
else if(B1 > B2)
flag = 1;
else
flag = 2;
}
else if(A1 > A2)
flag = 1;
else
flag = 2;
switch(flag){
case 0: printf("Same"); break;
case 1: printf("First"); break;
case 2: printf("Second"); break;
}
return 0;
}
#include <stdio.h>
int main() {
char a, b;
scanf("%c %c", &a, &b);
if((a == 'S' && b == 'J') || (a == 'J' && b == 'B') || (a == 'B' && b == 'S'))
printf("FIRST");
else if(a == b)
printf("DEUCE");
else
printf("SECOND");
return 0;
}
#include <stdio.h>
int main() {
int a, b;
scanf("%d%d", &a, &b);
if(a > b) {
int temp = a;
a = b;
b = temp;
}
printf("%s", (a+1 == b) ? "TRUE" : "FALSE");
return 0;
}
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
if(n < 0 || n > 100) {
printf("Score is error!");
return 0;
}
switch (n/10) {
case 10:
case 9: printf("A"); break;
case 8: printf("B"); break;
case 7: printf("C"); break;
case 6: printf("D"); break;
default:printf("E");
}
return 0;
}
#include <stdio.h>
int main() {
int a, b, c, max;
scanf("%d%d%d", &a, &b, &c);
max = a;
max = max > b ? max : b;
max = max > c ? max : c;
printf("%d",max);
return 0;
}
#include <stdio.h>
int main() {
int num, a, b, c;
scanf("%d", &num);
a = num/100;
b = num/10%10;
c = num%10;
printf("%s", (a*a*a + b*b*b + c*c*c == num) ? "TRUE" : "FALSE");
return 0;
}
#include <stdio.h>
int main() {
int n;
scanf("%d",&n);
printf("%s",(n%2)?"odd":"even");
return 0;
}
#include <stdio.h>
int main() {
int n, m;
scanf("%d %d", &n, &m);
printf("%d", (m-n)>0 ? m-n : n-m);
return 0;
}
// 92分数据测试有误,原因未知
#include <stdio.h>
int main() {
char sex, sports, diet;
float faHeight, moHeight, childHeight;
scanf("%c %f %f %c %c", &sex, &faHeight, &moHeight, &sports, &diet);
if(sex == 'M')
childHeight = (faHeight + moHeight)*0.54;
else
childHeight = (faHeight*0.923 + moHeight)/2;
if(sports == 'Y' && diet == 'Y')
childHeight *= 1.0353;
else if(sports == 'Y' && diet == 'N')
childHeight *= 1.02;
else if(sports == 'N' && diet == 'Y')
childHeight *= 1.015;
else
;
printf("%.0f",childHeight);
return 0;
}
#include <stdio.h>
int main() {
char c;
scanf("%c",&c);
if(c >= 48 && c <= 57)
printf("1");
else if(c >= 65 && c <= 90)
printf("2");
else if(c >= 97 && c <= 122)
printf("3");
else if(c == ' ')
printf("4");
else
printf("5");
return 0;
}
#include <stdio.h>
int main() {
char c;
scanf("%c",&c);
if(c >= 65 && c <= 90)
c += 32;
else if(c >= 97 && c <= 122)
c -= 32;
printf("%c %d", c, (int)c);
return 0;
}
#include <stdio.h>
int main()
{
char c;
scanf("%c",&c);
printf("%c %d",c-32,(int)(c-32));
return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c;
scanf("%f%f%f",&a,&b,&c);
printf("%.4f %.4f",(-b+sqrt(b*b-4*a*c))/(2*a),(-b-sqrt(b*b-4*a*c))/(2*a));
return 0;
}
#include <stdio.h>
int main()
{
int n,a,b,c;
scanf("%d",&n);
n = n > 0 ? n : -n;
a = n % 10;
b = n % 100 / 10;
c = n / 100;
if(a)printf("%d",a);
if(a || b)printf("%d",b);
printf("%d",c);
return 0;
}
#include <stdio.h>
int main()
{
long a,b;
float x,y;
scanf("%ld,%ld",&a,&b);
scanf("%f,%f",&x,&y);
printf("a = %ld, b = %ld\n",a,b);
printf("x = %.2f, y = %.2f\n",x,y);
return 0;
}
#include <stdio.h>
int main()
{
int a = 1;
float b = 2.5;
char c = 'A';
printf("a = %d, sizeof(a) = %lu\n",a,sizeof(a));
printf("b = %.1f, sizeof(b) = %lu\n",b,sizeof(b));
printf("c = %c, sizeof(c) = %lu\n",c,sizeof(c));
printf("End of program\n");
return 0;
}
#include <stdio.h>
int main()
{
float x = 2.5;
float y = 2.5;
float z = 2.5;
printf("These values are :\n");
printf("x = %.1f\n",x);
printf("y = %.1f\n",y);
printf("z = %.1f\n",z);
return 0;
}