一,C语言程序的组成
一,C语言的基本结构
1,C语言程序由函数组成,即函数为程序的主要组成部分。
程序由若干个函数组成,每一个函数都离不开主函数(main),每个函数有且只能有一个main函数,且每个程序都是从main函数开始执行。
2,基本结构:
函数类型 函数名(形参表){
函数体(函数结构语句)
return(返回值);
}
3.新手必知
3.1每个程序都要引头文件,最经典的就是stdio.h(即standard input output)。
当然头文件并不止这个,还有例如stdlib.h,string.h,这些都是比较常见的头文件。
引用方式:#include<文件名>
3.2系统函数
例如printf,scanf等都是系统函数,主要是一些常用功能。
3.3printf(格式化输出函数),scanf(格式化输入函数);
一般使用格式
printf(“格式控制字符串”,表达式表);//后面会解释什么叫格式控制字符串。
scanf使用方法同上,但是也有不同。
scanf("格式控制字符串",变量地址表);
#include
int main(){
int n;
scanf("%d",&n);
return 0;
}
**1.字符串与表达式表的顺序相同,且一一对应。
2.C语言中每条语句后都要加分号;代表语句结束。
#include
int main(){
printf("%d",123);//整型
printf("%f",3.14);//浮点型
printf("%c",abc);//字符型
return 0;
}
如图,新手会遇到的几种数据类型就是这些,这也是printf和scanf的基础使用方法。
4.格式控制字符串
4.1转义字符
4.2格式控制符
以%开头,控制数据的类型。
4.3普通字符
除上述两种字符之外,在格式控制字符表中,其他的都为普通字符,按原样输出。
5,数据类型
C语言中数据类型一共有九种,后面会慢慢学到。
下面对常见的几种进行介绍
整型:没有小数的整数。
浮点型(实型):有小数的数,例如3.14等等。浮点数无法在计算机中精确存放,数据容易丢失。
字符型:可以是英文字母,也可以是键盘上的各种符号,同时,字符型也是一种特殊的整型,0~2^8-1的整数储存方式与字符型相同。
字符又要分字符与字符串,字符是由‘’组成,只占一个字节,而字符串由“”组成,它的长度由其中有多少个字符决定,如“abc”这个字符串的长度为4,为什么呢,因为abc每个字母便占了三个字节,但在计算机内部,系统会自动给字符串结尾加上结束标识符‘/0’这个字符也占了一个字节,故,总长度为4。
6.常量与变量
变量:变量名是该变量对应的内存存储空间。
常量:上述的几种数据类型都是常量。
6.1变量的输出
由上可得,变量的输入输出都需要用格式控制符控制,我们这里主要讲一下输出,如果需要输出一个整数,则%d(见上表),这个很简单吧。让我们来看看下面的这个例子
由上我们看到,他的输出部分和我写的居然不一样,是不是这个博主太蠢了,这都不会,哈哈哈,当然不是啦。想什么呢。
%-6d:代表数据的宽度为6,-号代表右对齐,+代表左对齐。那么问题来了,如果数据的宽度大于6怎么办?不怎么办,正常输出。
%8.3f:经过上面的解释,现在大家可能已经知道了这个8是什么意思了,那么这个.3是什么意思呢?小数点后面的数字其实代表精度,即3.141,小数点后面保留三
那么问题又来了,如果我只输入%.3f怎么办?
这个时候就是宽度由系统默认,精度还是三位小数.
7.C语言的常用运算符及表达式
7.1算术运算符
+ — * / %
加 减 乘 除 取余(模运算)
前三个没啥好讲的,自己理解吧,我们先来看看除法,
#include
int main(){
printf("%d",6/2);
printf("%d",6/4);
return 0;
}
先来看看这个代码,答案是多少呢?
你答对了吗?
第一个还能理解,那么第二个呢?
6除4不是等于1.5吗?怎么又成了1?
这是因为整数除整数时,系统默认是取整操作,即小数部分全部去掉,只留下整数部分。那么我们应该怎么办呢?
第一种方法就是强制类型转
换,什么叫做强制类型转换呢?
(类型名)变量名;就是把不是这个类型的转换成这个类型的,强迫别人。咳咳,这个以后也是会用的,还是留个心眼,后面再详细讲。
第二种方式就是,给他加小数点
记住,既然要输出1.5,一个浮点数,格式控制符也要变。
再来看看取余运算,首先,取余运算只能对整型数据执行,其他的都不行,也有人问了,其他的运算符差不多都学过,但是这个却一点都不认识,好吧,深一点讲一下。
.1,正数取余,我们来看几个例子;
5%3==2;
3%5==?要搞清楚这个,就要知道取余运算的本质,即先进行除法在取余数。
3%5==3/5==0.。。。3,余数为3;
.2,负数取余
其实本质还是一样,为了便于大家记忆,做出以下总结。
***运算结果正负号与被除数符号一致。
***被除数小于除数时,结果等于被除数。(别告诉我你不知道被除数,好吧,其实我也忘了,被除数/除数)现在懂了吧,哈哈哈。
7.2 自增自减运算符
就是加1减1;
有两种情况;
++i;
i++;这两种的区别在哪呢?话不多说,上代码。
n==3,而m==6,这是为什么?
因为n中i是先使用,后加1;而m中是i先加1,再乘3,你在想想看。
7.3最后在说一下逗号运算符和括号运算符,括号运算符优先级最高,逗号运算符优先级最低。就这,最简单的东西,一定要牢记。
**其他运算符就比较简单了,看看书上都有,也都能看懂
*****优先级的概念一定要搞清楚,到底谁的优先级高,这到了后面是很重要的内容。
补充一个内容:scanf的getchar问题
getchar();是啥?
它的作用是调用一个字符,通常用在scanf后面,因为scanf输入完了以后会人为的按一个回车符,回车符也作为了一个字符存到了scanf输入的内容最后,但是有一些情况中,这个回车符会影响题目时,我们则需要把他提取出来;
#include
int main(){
int digit,i,letter,n,other;
char ch;
digit=letter=other=0;
printf("请输入n:");
scanf("%d",&n);
getchar();
printf("请输入%d个字符:",n);
for(i=1;i<=n;i++)
{
ch=getchar();
if(ch>=48 && ch<=57)
digit++;
else if((ch>=65 && ch<=80)||(ch>=97 && ch<=122))
letter++;
else
other++;}
printf("digit=%d,letter=%d,other=%d",digit,letter,other);
return 0;
}
可以参考一下这个程序。
还有其他的作用,getchar字面意思就是输入一个字符,用法差不多就是下面这个样子,以后再深入讲讲吧。
谢谢大家观看学习,祝大家学习越来越好哦。