Weekly Diary 1(week 8,2020 fall) - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

Weekly Diary 1(week 8,2020 fall)

发表时间:2020-10-18

发布人:葵宇科技

浏览次数:34

Introduction

Freshmen 大一新生
Beginner 入门小白
会在每周记录学到的东西和写的代码
这周主要写基本的C语句语法和几道题,外加一些非常amazing的事情和困惑

那我们开始吧!

Basic grammar of C language

if,else

 if (条件)
    {
        (写代码)
    }
    else
    {
        (写代码)
    }

初学判断、循环的时候,括号,大括号,分号的使用很难记,所以要格外注意一下

上例子:

#include<stdio.h>
int main() {
	int age, English_score, IQ;
	printf("请输入你的年龄:\n");
	scanf_s("%d", &age);
	printf("Please input your English score and your IQ:\n");
	scanf_s("%d %d", &English_score, &IQ);
	if (age > 0 && English_score >= 0 && IQ >= 0) {
		if (age >= 18 && (English_score >= 130 || IQ >= 100))
			//if ((age >= 18) && (English_score>=130||IQ>=100)) 
			//age >= 18加括号可以增加程序可读性
			printf("YES!\n");
		else{
			printf("NO!\n");
		}
			//简单的if, else可不加大括号,只能执行一行
	}
	else 
		printf("Error!\n");
	return 0;
}

else if

使用else if正确的语序应该是:

if ( 条件1 ) { ... ..... }  
else if ( 条件2 ) { ... ... } 
else if  ( 条件3 ) {  ... ...  } 
else... ...

C语言是从上到下依次执行的,所以最后的else在上面条件都不为真时才执行

下面直接上代码:

#include<stdio.h>
int main() {
	int age;
	printf("Please input your age:\n");
	scanf_s("%d",&age);
	if (age >= 70) {
		printf("可以退休了\n");
	}
	else if (age >= 40)
		printf("中年人你好\n");
	else if (age >= 18)
		printf("成年了,可以注册游戏账号!\n");
	else if (age <= 0)
		printf("你不对劲!\n");
	else
		printf("未成年,快回家写作业!\n");
	return 0;
}

switch

注意:
break要加上(据说他的作用是跳出switch语句),不考虑嵌套,一个switch中不允许有两个case后面条件一样
case后面是冒号不是分号

具体语法如下

switch(...){ //这里有大括号
	case 数字或字符_1  :
	.........;
	break;
 	case 数字或字符_2   :
   .........;
   	break;
  	default : 
  	break;
}

因为平时用字符比较少,所以这里举了一个字符的例子

#include <stdio.h>
int main(){
    /* 局部变量定义 */
	char grade = getchar();
    switch (grade)
    {
    case 'A':
        printf("大佬!\n");
        printf("大佬,救救孩子吧\n");
        break;
    case 'B':
    case 'C':
        printf("JUST SO SO\n");
        break;
    case 'D':
        printf("您通过了\n");
        break;
    case 'F':
        printf("I LOVE JLU!\n");
        break;
    default:
        printf("无效的成绩\n");
        break;
    }
    printf("您的成绩是 %c\n", grade);
    return 0;
}

while, do…while, for

所谓的先判断条件循环和后判断条件循环,高中做那种带方框的选择题就很容易错 😦 所以我本人是非常不喜欢这个的。

在这里,for语句的执行流程是我认为比较重要的。同时还有continue,break,下周介绍把 hhh

三元运算符(用法简单 不多说了)

//输入年和月份,输出这个月有多少天
#include<stdio.h>
int main() {
	int year, month;
	scanf_s("%d%d",&year,&month);
	int day[12] = { 31,0,31,30,31,30,31,31,30,31,30,31 };
	day[1] = (year % 400 == 0 || year % 400 != 0 && year % 4 == 0) ? 29 : 28;
	printf("%d",day[month-1]);
	return 0;
}
>>这里意外发现,其实||的优先级比&&低,可以不用加括号,但加上还是比较靠谱^.^

Visual Studio 2019 hot key

Ctrl+A Select all

Ctrl+C Without cursor selection, VS will copy the code of this line

Ctrl+K+F Correct format

Alt+ or Alt+ The selected line moves up (down)

Ctrl+S Save(It’s best to form a good habit of save.)

Amazing experience & Puzzling problems

1.#include<math.h>中的sqrt与pow数据类型

/*1*/int a = sqrt(10);   
/*2*/printf("%lf",(double)a);
/*3*/printf("%d",sqrt(9));
/*4*/printf("%lf",sqrt(10));
/*5*/printf("%d",pow(2,8));

前两行用了强制数据类型转换
对比3,4行,第四行可以输出正确值但是第三行不对
于是我又尝试pow,发现同理
我猜想计算机内部计算应该是浮点类型的(瞎猜hah)

2.#define

大家第一次见到define应该都是#define WIETH 30这种形式吧
我发现define的其他玩法

#include<stdio.h>
#define NUM 3+4
int main() {
	int a = NUM * NUM;
	printf("%d", a);
	return 0;
}

结果是19不是49

#include<stdio.h>
#define NUM 'f'
int main() {
	printf("%c", NUM);
	return 0;
}

用define输出字符

3.输入输出字符串?

char s[10] = { 'I','2',' ','\n','b','\t','y','.','a'};
printf("%s",s);
>>数组长度是10个,只能输出9个,最后一个是\0
>>char s[] = { 'I','2','\n','\\','b','\t','y','.','a','\0'};
>>像这样[]内不写数字的,最后要加\0

4.(数据类型)5除以2等于几?

#include <stdio.h>
int main() {
	printf("%f\n", 5 / 2);  //0.000000(绿色波浪线)
	printf("%d\n", 5 / 2);  //2
	printf("%d\n", (float)5 / 2);  //0(绿色波浪线)
	printf("%f\n", (float)5 / 2);  //2.500000
	printf("%f\n", 5.0 / 2);  //2.500000
	printf("%f\n", 5 / 2.0);  //2.500000
	printf("%d\n", 5.0 / 2);  //0(绿色波浪线)
	return 0;
}

5.这是学校书里的一道题,有关getchar的用法不懂

#include <stdio.h>
int main() {
	char win;
	int mark;
	printf("Please input your mark:\n");
	scanf_s("%d", &mark);
	printf("Did you win the game?(input 'Y' or 'N')");
	getchar();
	win = getchar();
	if (win == 'y' || win == 'Y') {
		if (mark >= 95)
			printf("Your final score is 100 :-).");
		else
			printf("Your final score is %d .", mark + 5);
	}
	else
		printf("Your final score is %d .", mark);
	return 0;
}

最开始没有写第八行的getchar(),程序是执行不了的。经过我简单研究,这应该和缓冲区有关,等我研究明白后再来解释吧 😃

大周日的还要去学高数 [orz] ,这周就到这里叭,下周再见~~

>>Author: Timax

相关案例查看更多