我的第一篇博客
| 这个作业属于哪个班级 | C语言--网络2011/2012 |
| ---- | ---- | ---- |
| 这个作业的地址 | C博客作业00--我的第一篇博客 |
| 这个作业的目标 | 学习Makdown语法,对本专业及C语言课程有个简单了解,记录自学慕课视频的笔记。教师可以对学生有个初步的认识。 |
0. 准备工作
- 学习Markdown语法
- 学习中国大学mooc《c语言程序设计》课程
- 在pta上刷题
- 关于IDE(集成开发环境)
1. 谈谈自己对网络专业或者计算机专业的了解
我的专业是网络工程:
网络工程专业主要讲授计算机科学基础理论、计算机软硬件系统及应用知识、网络工程的专业知识及应用知识。网络工程专业需要具有创新意识,具有分析问题和解决问题的能力,具备一定的实践技能,并具有良好的外语应用能力。————《百度百科》
网络专业中有两个比较热门的方向:
- 网络运维
运维,是指为保障电信网络与业务正常、安全、有效运行而采取的生产组织管理活动,简称运维管理或OAM。负责维护并确保整个服务的高可用性,同时不断优化系统架构提升部署效率。————《百度百科》
- 网络安全
网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。————《百度百科》
所以,我从资料中了解到是网络运维主要是人类对网络进行运行维护:确保网络有效运行,进行划分IP地址,规划路由,管理网络设备之类的工作,也侧重于各项指标信息收集、集中而控制网络设备。而网络安全则是人类进行维护网络的安全:侧重防护和堵漏洞,包含网络通信安全和应用安全,比如防止外来的攻击,打系统补丁等。但是运维也需要一些基础网络知识和安全知识融合在工作里,二者难舍难分,在实际工作中相辅相成。就业小到网管,确保数台电脑的连接情况;大到网络工程师,帮助用户设计和建设计算机系统,而且分为多种板块,具有多领域发展潜力。就业方向为计算机网络设计规划,维护管理,安全保障和应用开发的相关工作及网络系统设计,开发,部署,运行,维护工作等等。
2. 谈谈自己对c语言的理解
由来:
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,这便是C语言最初的标准。
概述:
c语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
c语言是一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
c语言是一门很基础的的语言,想要在计算机专业走的更远,C语言是一门必须掌握的语言。从资料里引用一句对c语言的经典总结:“任何比C语言更低级的语言,都不足以完整地抽象一个计算机系统; 任何比C高级的语言,都可以用C来实现” 。———— 资料
所以,我的理解是:c语言是一门基础编程语言语言,是我们与计算机交流的一种工具,是人与计算机交流的一种桥梁。深入学习 C 语言,能够了解计算机的执行原理和理解程序运行机制。学习c语言就是学习电脑语言的语法,让电脑做我们告诉它的事。
3.希望从该专业中学习到的内容及大学学习生活安排
- 学习内容:
- 关于计算机与网络的专业知识和课程:
包括高等数学,中国近代史纲要,大学体育,军事理论,高级语言程序设计(c语言),线性代数,大学英语,网络工程导论··· - 能够熟练地使用电脑;提高自己的编程能力;
- 学习英语;
- 关于计算机与网络的专业知识和课程:
- 大学学习生活安排:
大学四年皆以学习为重,在大一期间可适当参加两个自己感兴趣的社团或组织,在其中得到为人处世和解决问题的能力,以及自身其它各方面的锻炼,发展自己的兴趣,获得独特的乐趣与体验;从大一开始抓住机会考英语四六级,直到全部通过为止;到大二期间可着重考虑退出各类社团与组织,对自身已经没有太多的学习和锻炼或是自身没有太大的兴趣的皆可退出,更加投入学习;到大三期间应该考虑是工作或考研,学习是这两方面的必经之路,所以必须把学习放在第一位,并且为选择的道路做好准备;如果是考研,大四就需要深入准备考研知识;如果是就业,大四则更加看重实习与职场方面;一时无法做出选择,可先按照考研路来学习知识和要求自己,考研和就业的技术要求都是非常高的,之后再根据情况再进行调整和改变自己的选择。(此时的想法)
每天至少花1~2小时进行编程练习;每天按时完成作业,认真听讲,做好本职工作,不迟到不早退不旷课;
在有限的课余时间参加所在社团举办的部分自己感兴趣的活动及分配的任务,不占用学习时间。
4.目前自学的内容
我要做的事
- 慕课:《浙大c语言程序设计》———— 翁恺
- 安装并使用vs
- 驼峰命名法
- 在pta刷题
4.0关于c的变量名
- 定义:
骆驼式命名法(Camel-Case)又称驼峰式命名法,是电脑程式编写时的一套命名规则(惯例)。正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。程序员们为了自己的代码能更容易的在同行之间交流,所以多采取统一的可读性比较好的命名方式。———《百度百科》
- 例如:printEmployeePaychecks();
- 阐述:函数名中的每一个逻辑断点都有一个大写字母来标记;当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时,第一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母。
- 分类:小驼峰法和大驼峰法
小驼峰法:
变量一般用小驼峰法标识。驼峰法的意思是:除第一个单词之外,其他单词首字母大写。譬如
int myStudentCount;
变量myStudentCount第一个单词是全部小写,后面的单词首字母大写。
常用于函数名。
大驼峰法:
相比小驼峰法,大驼峰法(即帕斯卡命名法)把第一个单词的首字母也大写了。常用于类名,属性,命名空间等。譬如
public class DataBaseUser;
提示:[中间不需要空格 - _等分割符]
自己写的代码:
#include <stdio.h>
int main()
{
int math,english,politics,professionalCourse,totalScore;
scanf("%d %d %d %d",&math,&english,&politics,&professionalCourse);
totalScore=math+english+politics+professionalCourse;
if(totalScore>=370&&english>=55&&politics>=55)
{
printf("A");
}else if(totalScore>=305&&english>=55&&politics>=55)
{
printf("B");
}else{
printf("C");
}return 0;
}
学习笔记
4.0:基础知识
程序和变量
- 程序框架
#include <stdio.h>
int main()
{
return 0;
}
直到学函数之前,我们的代码都只是在这个框架中间
-
变量
定义:变量定义的一般形式就是<类型名称><变量名称>;
如:int price;
int amount;
int price,amount; -
数据类型
整数:int,printf("%d",...),scanf("%d",&...)
带小数点的数:double,printf("%f",...),scanf("%lf",...) -
整数的分解
- 运算符
- 几种表达式
4.1 分支结构
1. 单分支结构
- if语句
if(条件成立)
{
...
}
- 条件
- 案例
判断票面够不够
(如果在if后面还有语句,他们会在if结束后执行,无论条件如何)
年龄决定语句
比较数的大小
2. 双分支结构
if(条件成立)
{
...
}else{
...
}
- 案例
比较数的大小
计算薪水
判断成绩
- 自己写的PTA代码
本题目要求计算分段函数 f(x) 的值(1)
#include <stdio.h>
int main() {
float x, y;
scanf("%f",&x);
if (x!=0) {y=1/x;}
else {y = 0;}
printf("f(%.1f) = %.1f\n", x, y);
return 0;
}
本题目要求计算分段函数 f(x) 的值(2)
#include<stdio.h>
#include<math.h>
int main(){
float x,y;
scanf("%f",&x);
if(x>=0)
{y=sqrt(x);}
else
{y=pow(x+1,2)+2*x+1.0/x;}
printf("f(%.2f) = %.2f",x,y);
return 0;
}
本题目要求计算分段函数 f(x) 的值(3)
#include <stdio.h>
int main(){
float x,y;
scanf("%f",&x);
if(x != 10) {y = x;}
else {y=1.0/x;}
printf("f(%.1f) = %.1f\n",x,y);
return 0;
}
输入一个正整数a,如果a为偶数,输出yes,否则输出no。
输入格式:
直接输入一个正整数,没有其他任何附加字符。
输出格式:
直接输出yes或no,没有其他任何附加字符。
#include <stdio.h>
int main()
{
int x;
int y;
scanf("%d",&x);
y=x%2;
if(y == 0){
printf("yes\n");
}else {
printf("no\n");
}return 0;
}
3. 多分支结构
- 分支结构的嵌套
if(条件成立)
{
...
}else if(条件成立)
{
...
}else if(条件成立)
{
...
}
...//省略n个else if,最后以else结尾
else{
...
}
- 案例
比较三个数最大值
没加大括号,else总是与最近的if匹配
tips:在if和else后加大括号
分段函数
- 自己写的PTA代码
为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
输入格式:
输入在一行中给出某用户的月用电量(单位:千瓦时)。
输出格式:
在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。
#include <stdio.h>
int main(){
float w,cost;
scanf("%f",&w);
if(0<w&w<=50)
{cost=0.53*w;
printf("cost = %.2f\n",cost);}
else if(w>50)
{cost=50*0.53+0.58*(w-50);
printf("cost = %.2f\n",cost);}
else if(w<0)
{printf("Invalid Value!\n");}
return 0;
}
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
#include <stdio.h>
int main(){
int hour1,minute1,hour2,minute2,a,b,m,h;
scanf("%2d%2d %2d%2d",&hour1,&minute1,&hour2,&minute2);
a=hour2-hour1;
b=minute2-minute1;
if(b<0)
{m=b+60,h=a-1;}
else
{m=b,h=a;}
printf("%02d:%02d",h,m);
return 0;
}
假设个人所得税为:税率×(工资−1600)。请编写程序计算应缴的所得税,其中税率定义为:
当工资不超过1600时,税率为0;
当工资在区间(1600, 2500]时,税率为5%;
当工资在区间(2500, 3500]时,税率为10%;
当工资在区间(3500, 4500]时,税率为15%;
当工资超过4500时,税率为20%。
输入格式:
输入在一行中给出非负工资。
输出格式:
在一行输出个人所得税,精确到小数点后2位。
#include <stdio.h>
int main()
{
float a,b;
scanf("%f",&a);
if(a <= 1600)
{
printf("0.00\n");
}else if(a > 1600&a <= 2500)
{
b=0.05*(a-1600);
printf("%.2f",b);
}else if(a > 2500&a <=3500)
{
b=0.1*(a-1600);
printf("%.2f",b);
}else if(a > 3500&a <= 4500)
{
b=0.15*(a-1600);
printf("%.2f",b);
}else if(a > 4500)
{
b=0.2*(a-1600);
printf("%.2f",b);
}return 0;
}
本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√
s(s−a)(s−b)(s−c)
,其中s=(a+b+c)/2。
输入格式:
输入为3个正整数,分别代表三角形的3条边a、b、c。
输出格式:
如果输入的边能构成一个三角形,则在一行内,按照
area = 面积; perimeter = 周长
的格式输出,保留两位小数。否则,输出
These sides do not correspond to a valid triangle
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,c;
double area,p,s;
scanf("%d %d %d",&a,&b,&c);
if(a+b>c&a+c>b&b+c>a)
{
s=(a+b+c)/2.0;
p=a+b+c;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("area = %.2f; ",area);
printf("perimeter = %.2f\n",p);
}else{
printf("These sides do not correspond to a valid triangle\n");
}return 0;
}
- switch语句
switch(控制表达式){
case 常量:
语句
...
case 常量:
语句
...
default:
语句
...
}
- 案例
你好
成绩分类
月份
(一般每句后加break跳出此结构)
- 自己写的PTA代码
给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。
首先在屏幕上显示以下菜单:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。
输入格式:
输入在一行中给出用户连续输入的若干个编号。
输出格式:
首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留两位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束。
#include <stdio.h>
int main()
{
int type;
printf("[1] apple\n");
printf("[2] pear\n");
printf("[3] orange\n");
printf("[4] grape\n");
printf("[0] exit\n");
int count=1;
for(count=1;count<=5;count++){
scanf("%d",&type);
switch(type)
{
case 1:
printf("price = 3.00\n");
break;
case 2:
printf("price = 2.50\n");
break;
case 3:
printf("price = 4.10\n");
break;
case 4:
printf("price = 10.20\n");
break;
case 0:
break;
default:
printf("price = 0.00\n");
}
if(type == 0)
break;
}
return 0;
}
本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。
输出格式:
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。
#include <stdio.h>
int main()
{
int n,x;
scanf("%d",&n);
int i=1;
int a=0;
int b=0;
int c=0;
int d=0;
int e=0;
for(i=1;i<=n;i++)
{
scanf("%d",&x);
if(x >= 90)
{ a++;
}
else if(x < 90&x >= 80)
{ b++;
}
else if(x < 80&x >= 70)
{ c++;
}
else if(x < 70&x >= 60)
{ d++;
}
else if(x < 60)
{ e++;
}
}
printf("%d %d %d %d %d\n",a,b,c,d,e);
return 0;
}
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。(混合嵌套)
#include <stdio.h>
int main()
{
int year,month,day,number,result;
scanf("%4d/%2d/%2d",&year,&month,&day);
if((year%4==0&&year%100!=0)||(year%400==0))
{
switch(month)
{
case 1:number=0;break;
case 2:number=31;break;
case 3:number=60;break;
case 4:number=91;break;
case 5:number=121;break;
case 6:number=152;break;
case 7:number=182;break;
case 8:number=213;break;
case 9:number=244;break;
case 10:number=274;break;
case 11:number=305;break;
case 12:number=335;break;
}result=number+day;
}else{
switch(month)
{
case 1:number=0;break;
case 2:number=31;break;
case 3:number=59;break;
case 4:number=90;break;
case 5:number=120;break;
case 6:number=151;break;
case 7:number=181;break;
case 8:number=212;break;
case 9:number=243;break;
case 10:number=273;break;
case 11:number=304;break;
case 12:number=334;break;
}result=number+day;
}printf("%d",result);
return 0;
}
4.2 循环结构
1. while 循环
- 案例
数数几位数
对数的计算
算平均数(输入-1结束)
整数求逆
- 自己写的PTA代码
本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:
输入在一行中给出两个正整数M和N(≤1000)。
输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
#include<stdio.h>
int main()
{
int m, n, a, b, c;
scanf("%d %d", &a, &b);
m=a; n=b;
while(b!=0)
{ c=a%b; a=b; b=c;}
printf("%d %d\n",a,m*n/a);
return 0;
}
2. do-while 循环
数位数的算法
猜数游戏 每次rand()随机召唤一个数
3. for 循环
求阶乘
- 自己写的PTA代码
本题要求编写程序,计算表达式 1 + 2 + 3 + ... + 100 的值。
输入格式:
本题无输入。
输出格式:
按照以下格式输出:
sum = 累加和
#include <stdio.h>
int main(){
int i;
int sum;
for(i=1;i <= 100;i ++){
sum +=i;}
printf ("sum = %d",sum);
return 0;
}
本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
#include <stdio.h>
int main (){
int i,n;
double sum=0.0;
scanf("%d",&n);
for(i=1;i <= n;i++){
sum += 1.0/i;
}
printf("sum = %f",sum);
return 0;
}
本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。题目保证计算结果不超过双精度范围。
#include <stdio.h>
int main(){
int i,c;
int n;
scanf("%d",&n);
int sign=1;
double sum=0;
for(i=1;c < n;i += 3){
sum += sign*1.0/i;
c++;
sign=-sign;
}
printf("sum = %.3f\n",sum);
return 0;
}
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。
#include <stdio.h>
int main()
{
int n;
int i=1;
int sum;
scanf("%d",&n);
for(i=1;i <= n;i++)
{
sum += pow(2,i);
}printf("result = %d\n",sum);
return 0;
}
4. 三种循环区别
while 循环:先满足条件再做大括号里的句子
do-while 循环:先做循环内的句子再判断条件
for 循环:包括初始动作,条件,每轮动作
5. 循环控制
break:跳出循环
continue:跳出循环这一轮剩下的语句进入下一轮;
- 案例
三者的选择
- 如果有固定次数,用for
- 如果必须执行一次,用do-while
- 其他情况用while