上周作业
1.判断给定目录下的文件属性 //file or directory!
#!/bin/bash
for i in *
do
if [ -d $i ]
then
echo "$i is directory!"
elif[ -f $i ]
then
echo "$i is file!"
else
echo "else!"
fi
done
2.用for或者while实现打印等腰三角形,行数由用户输入
提示:‘’ = 2 × 行号 - 1 ;‘ ’= 总行数 - 行号*
#!/bin/bash
echo -n "Input 行数row:"
read NUM
row =1
while [ $row -le $NUM ]
do
col=1
while [ $col -le `expr $NUM - $row` ]
do
printf " "
let col++
done
col=1
while [ $col -le `expr $row \* 2 - 1` ]
do
printf " "
let col++
done
done
今日
C语言基础
创始人:里奇,丹尼斯
优点:简洁,紧凑,使用方便,运算符丰富,数据结构丰富,结构化控制语句,程序自由度大
缺点:当代码量过大时,代码不可控性很严重
一、C基本变量及语法#
c的引入 文件后缀.c 可以无输入,但不能无输出。
编译.c:
gcc hello.c -o hello
注释:
hello.c 当前目录下的原文件
hello 生成的目标文件
-o 请不要省略
如果生成,说明程序无误。
或者:
gcc hello.c //自动生成a.out文件 也可运行 不建议这样操作
实例:
#include<stdio.h>
int main(int argc, char *argv)
{
printf("hello C!\n");
return 0;
}
程序解析:
-
:预处理命令
- include:头文件的包含
- <>:把括号里面的内容引入到源文件中 自定义头文件用“”
- stdio.h:头文件,式计算机自带的库,可直接使用。
- main:函数名,main()是主函数,C程序源文件有且只能有一个main()即主函数!!! C程序的入口,即所有的C程序都是从main()开始执行!!
- int arge:参数的个数
- char *argv[]:记录参数
- printf():是库函数,包含在<stdio.h>中
- return 0:返回,或者函数结束
注:此程序基本决定了C程序的基本框架
二、C语言的数据类型
1.基本数据类型
整数类型:
int 基本整形数据
short int 短整型(short)(保存的精度不同,或长度)
long int 长整型(long)
unsigned 无符号(如负号)
signed 有符号
字符型:
char //有‘’引起来的单个字母,数字或其他符号
‘e’ ‘l’ ‘!’ 等都是字符。单个!!!
getchar():获取单个字符
putchar():输出单个字符
实型(浮点型):
float:单精度 有效位:7位左右
double:多精度 有效位:15位左右
根据16位,32位,64位的不同。
枚举型: enum
构造数据类型:
数组类型,结构体(struct),联合体(union)
空类型:void
2.变量的定义
data:数据
type:类型
(1)DataType Name1,Name2, ... , Namen;
可以定义多个变量,中间用逗号隔开。结尾用分号结束!!!
(2)建议一行定义一个变量!!
DataType Name;
DataType Name1;
(3)建议一行定义一个变量并初始化!!
DataType Name = vale; //空格可有可无,条例清晰,分清代码。
int a=2; //定义整型变量
int b,c,d; //给整形变量赋值
b=12
c=13
d=15 //定义多个整型变量并初始化
int e=1,f=3,g=4;
3.标识符
包括变量名,函数名,及其他标号等
(1)标识符的命名要求
字母(A~Z,a~z),下划线(_),数字组成,
且第一个字符不能为数字!!
(2)命名规则
可读性要高,做到“见名知意”
驼峰命名法(德语名词命名法)尽量不要用汉语拼音!!
4.格式输入/输出: printf()/scanf()
(1)printf() 按一定格式输出:
printf("占位符",参数列表) //一一对应!
printf(“打印输出的内容”)
%m.nf(右对齐) m为总位数,n精度,小数保留位数
%-m.nf(左对齐)
(2)scanf() 按一定格式输入:
scanf("占位符",参数列表) //一一对应!
&:取地址符号,参数列表里每一个前都要加。
占位符:
printf() scanf()
int %d %d
char %c %c
long %ld %ld
float %f %f
double %lf %lf
字符串 %s %s
5.常量
数字常量:2323 314 2 -342
字符常量:'d' '$' '?' '4' 'A'
实型常量:1.4213 53425.54 -345.4
字符串常量:由双引号括起来的字符序列(由一个或多个字符组成的)"fgfdgfdsd" "fhdsoa@<?" "fg"
注意:字符串和字符的区别,单引号只能单个字符,双引号可引
'a':占一个字节
"a":占两个字节,默认 \0 为字符串的结束标志,不显示
6.变量和常量的区别:
变量:其值可以更改,先定义后使用!!
常量:其值不可以更改,随时可以使用,无需定义或声明!
变量的初始化:变量名 = 常量; //类型一定要一致!!
三、运算符
1.sizeof()
计算大写,得出对应变量或数据类型所占内存空间大小,单位:字节(byte),1字节 = 8bit
(1)sizeof DataType
64位机如下:
sizeof(char) = 1
sizeof(int) = 4
sizeof(short) = 2
sizeof(long) = 8
sizeof(float) = 4
sizeof(double)= 8
32位机如下:(同64位机,只long型不同)
sizeof(long) = 4
(2)对应变量的内存大小 sizeof DataType value
sizeof(ch) =1
sizeof(short_size) =2
sizeof(int_size) =4
sizeof(long_size) =8
sizeof(float_size) =4
sizeof(double_size)=8
注意(1)(2)的几个,对比数据类型所占大小,和其定义的变量所占内存的大小!
2.算术运算符
加: + 减: - 乘: × 除: / 取余: % a%b,a对b求余数
自增:++
++i:先自增,后取值,即 num = ++i,i =i+1;num = 1;
i++:先取值,后自增,即 num = i++,num = 1;i = i+1;
自减:--
--i:先自减,后取值
i--:先取值,后自减
3.关系运算符(英语输入法)
大于:> a>b:若成立,则结果为1;
若不成立,则结果为0;
小于:< a<b:若成立,则结果为1;
若不成立,则结果为0;
等于等于:== a==b:若成立,则结果为1;
若不成立,则结果为0;
大于等于:>= a>=b:若成立,则结果为1;
若不成立,则结果为0;
小于等于:<= a>=b:若成立,则结果为1;
若不成立,则结果为0;
不等于:!= a!=b:若成立,则结果为1;
若不成立,则结果为0;
4.逗号运算符(,)
表达式1,表达式2,表达式3 //其中每个表达式又可以是一个逗号表达式!
一次计算表达式1,表达式2,表达式3的值,
整个逗号表达式的值取决于最后一个表达式的值。
5.使用scanf()注意事项
(1)一定要严格按照scanf()中的格式输入变量的值!!
(2)使用scanf()时,取参数列表中参数的地址,scanf()是将输入的值保存到变量对应的地址中!
(3)缓存区问题
scanf()函数中不能使用换行符:'\n'!! ,因为只有把缓存填满了,才会停止。