第三章

本文详细介绍了C语言的基本语法,包括变量声明、表达式、分支语句、循环语句、函数定义和调用,以及输入输出操作。重点讲解了printf和scanf函数的使用,包括格式控制字符串、数据类型匹配、输入输出修饰符等,并通过实例展示了整型、浮点型和字符型数据的处理。此外,还提到了数学库函数的使用,如指数、对数和平方根等。
摘要由CSDN通过智能技术生成

2 C语言的语句
1.说明语句
定义程序所使用的变量

int a,b; /定义两个整型变量/
char ch; /定义一个字符型变量/
2.表达式语句
赋值表达式:

c=a+b
表达式语句:

c=a+b;
3.分支语句
双分支if—else语句:

if(x>y)
z=x;
else
z=y;
#include <stdio.h>
int main()
{
int a;
printf(“Input integer number:”);
scanf("%d",&a);
if(a1){
printf(“Monday\n”);
}else if(a
2){
printf(“Tuesday\n”);
}else if(a3){
printf(“Wednesday\n”);
}else if(a
4){
printf(“Thursday\n”);
}else if(a5){
printf(“Friday\n”);
}else if(a
6){
printf(“Saturday\n”);
}else if(a==7){
printf(“Sunday\n”);
}else{
printf(“error\n”);
}
return 0;
}
多分支switch语句:

#include <stdio.h>
int main()
{
int a;
printf(“Input integer number:”);
scanf("%d",&a);
switch(a){
case 1: printf(“Monday\n”); break;
case 2: printf(“Tuesday\n”); break;
case 3: printf(“Wednesday\n”); break;
case 4: printf(“Thursday\n”); break;
case 5: printf(“Friday\n”); break;
case 6: printf(“Saturday\n”); break;
case 7: printf(“Sunday\n”); break;
default:printf(“error\n”); break;
}
return 0;
}
4. 循环语句
求一百以内的奇数和:

#include<stdio.h>
int main()
{
int sum = 0, i = 1;
while (i <= 99)
{
sum = sum + i;
i = i + 2;
}
printf(“sum=%d\n”, sum);
return 0;
}

5.转向语句
转向语句有 break语句、goat语句、continue语句、return语句。

6.复合语句
用用一对{}将若干语句顺序组合在一起所形成的语句叫复合语句。C语言出复合语句外其他所有语句都以分号结束。如:

{ sum=sum+i;
i=i+2;
}
即为复合语句。

7.空语句
空语句只由一个分号构成。如


8.函数定义域调用
函数是完成特定功能的小模块,是C语言中唯一的种子程序,常常在一个C语言程序中包含若干个函数,复杂的任务通过调用这些函数来完成。如函数:

int main(int x,int y) /求最大值的函数/
{ int z; /定义临时变量z/
if(x>y)
z=x; /x>y时,z的值等于x/
else
z=y; /x<y时,z的返回值等于x/
return z; /结束函数,返回z/
}
9.输入和输出
C语言没有提供用于数据输入及输出的语句,所有的输入输出都是通过系统提供的有关函数(如scanf()和printf()函数)来实现。

3.3 数据的输入和输出
3.3.1 输出函数(printf())和输入函数(scanf())
1.printf()函数
一般调用格式为:printf(“格式控制字符串”,输出项表列)

格式控制字符串用双引号括起来,表示输出的格式;而输出项表列则是要输出的数据,这些数据可以是常量、变量或表达式。

格式字符串中包含两种信息,格式控制说明和普通字符。

格式控制说明:按指定的格式输出数据,其格式为以%开头的格式控制符,不同类整型的数据采用不同格式控制字符,已说明输出数据的类型、形式、长度、小数位数等。

int型数据采用%d,float型和double型数据都采用%f。

普通字符:在输出数据时,需要原样输出字符。

【例3.3】按指定格式输出整型数据示例

#include<stdio.h>
int main()
{
int a = 1, b = 2, c = 3;
printf(“a=%d,b=%d,c=%d\n”, a, b, c);
return 0;
}

使用printf()函数进行数据输出时需注意:

1.格式字符与输出项的类型要一一对应,不同类型的数据所使用的的格式字符不同。

2.一般情况下,格式字符与输出项的个数应相同。如果格式字符的个数多于输出项的个数,则多余的格式将输出不确定的值;如果格式字符的个数少于输出项的个数,则多余的输出项将不能输出。

3.printf()函数中可以没有输出项,此时printf()函数只是来输出一个字符串;也可以有多个输出项,多个输出型之间用逗号进行分隔。若输出型是表达式时printf()函数将按从右到左的顺序计算出其值后输出。

4如果要输出“%”那么要在printf()函数中打“%%”

2.scanf()函数
一般调用格式:scanf(“格式控制字符串”,输入项表列)

格式控制符说明:int型数据采用%d,float型数据采用%f,而double型数据采用%lf(其中的l是long的首字母,不是数字1)

普通字符:在输入数据时需要原样输入的字符

注意:格式字符要和输入项的类型、个数要一一对应;输入项必须是地址,不能是变量名。

3.3.2 整型数据的输入和输出
printf()、scanf()函数中的格式字符(整型数据)
格式字符 含义
d 以十进制形式输入/输出带符号整数
o 以八进制形式输入/输出无符号整型
x,X 以十六进制形式输入/输出无符号整数
u 以十进制形式输入/输出无符号整数
printf()函数中的格式修饰符
格式字符 含义
l 用于输出长整型

  • 输出结果左对齐,右边补空格
  • 输出符号(正号或负号)

对d、u格式字符无符号无影响;对o格式字符,在输出时加前缀0;对x格式字

符,在输出时加前缀0x

m
指定数据的输出宽度。当数据的实际位数大于m时,则按实际位数输出;当数

据的实际位小于m时,若输出宽度前有“-”则左对齐右补空格,否则右对齐左补

空格

【例3.4】整型数据的输出示例

#include<stdio.h>
int main()
{
int a = 123;
long int b = 32770;
printf(“a=%d,b=%ld\n”, a, b);
printf(“a=%o,b=%lo\n”, a, b);
printf(“a=%#x,b=%#lx\n”, a, b);
printf(“a=%d,b=%ld\n”, a);
printf(“a+b=%ld\n”, a + b, b);
printf(“输出结束!\n”);
return 0;
}

【例3.5】整型数据的输入示数

#include<stdio.h>
int main()
{
int a, b;
long int c;
scanf_s("%d%d%ld", &a, &b, &c);
printf(“a=%d,b=%d,c=%ld\n”,a,b,c);
return 0;
}
若程序运行时输入:12□23□34 结果如下

若输入12,23□34 结果如下

将语句改为“scanf("%d,%d,%ld",&a,&b,&c);”程序运行时输入:12□23□34 结果如下

【例3.6】带有修饰符的整型数据的输入输出示例

#include<stdio.h>
int main()
{
int a, b, c, d;
scanf_s("%2d%3d%*d,%d%d", &a, &b, &c, &d);
printf(“a=%d,b=%d,c=%d,d=%d\n”, a, b, c, d);
printf(“a=%4d,b=%-4d,c=%-4d,d=%4d\n”, a, b, c, d);
printf(“a=%+4d,b=%+4d,c=%+4d,d=%+4d\n”, a, b, c, d);
return 0;
}

根据程序中scanf()函数的格式控制字符串“%2d%3d%*d,%d%d”,编译系统会从输入的内容中先取2列宽度的数字,使a=12,然后取3列数字,使b=345,接下来跳过后面的数字6789,对于逗号后面的输入内容“123□456”,编译系统是从空格的位置进行分隔的,将123和456分别赋值给变量c和d,因此c=123,d=456。

程序中的printf()函数在输出变量a、b、c、d的值时指明了输出的宽度,则当变量值的实际宽度大于输出宽度时按实际数据输出,当变量值的宽度小于输出宽度时,若输出宽度前有“-”则左对齐右补空格,否则右对齐左补空格。在“%”和格式符之间的修饰符“+”,表明要输出数据的符号(正号或负号)。

3.3.3 实型数据的输入和输出
格式字符(实型数据)
函数 格式字符 含义
f 以小数形式输出单精度或双精度数(保留6位小数)
printf E,e 以指数形式输出单精度或双精度数
g

以%f,%e中较短的输出宽度输出单精度或双精度数
f 以小数形式输入单精度数
scanf E,e 以小数形式输入单精度数
lf 以小数形式输入双精度数
le 以指数形式输入双精度数
说明:

1.在格式字符串的“%”和格式字符之间也可以有一些修饰符。printf()函数中的修饰符“#”对于f、e、g格式字符当结果有小数时才给出小数点。

2.在输出实型数据时,还可以指定输出的精度,即在格式字符串的“%”和格式字符之间加入“m.n”,其中m指明输出的总位数,n指明小数点后的位数,若实际输出位数大于n,则超过的部分四舍五入;若实际输出位数小于n则不足的部分后补0。

3.使用scanf()函数输入实型数据时不能指明精度,即使用“%.nf”的格式是错误的。

【例3.7】实型数据的输入输出示例

#include<stdio.h>
int main()
{
float f;
double d;
scanf_s("%f%lf", &f, &d);
printf(“f=%f,d=%f\n”, f, d);
printf(“f=%e,d=%e\n”, f, d);
printf(“f=%4.2f,d=%.3f\n”, f, d);
return 0;
}

3.3.4 字符型数据的输入和输出
1.scanf()函数和printf()函数对字符型数据进行输入输出
【例3.8】字符型数据的输入输出示例

#include<stdio.h>
int main()
{
char a, b, c;
scanf_s("%c%c%c", &a,1, &b,1, &c,1);
printf(“a=%3c,b=%c,c=%c\n”, a, b, c);
return 0;
}
若程序运行输入:x□y□z 则输出结果如下

这是由于在格式输入字符数据(%c)时,若格式控制字符串中没有非格式字符,则认为所有输入的字符均为有效字符。因此对于输入的“x□y□z ”,编译系统将字符’x’赋值给变量a,'□’赋值给变量b,‘y’赋值给变量c。只有当输入为“xyz”时,才能把’x’、‘y’、'z’分别赋值给变量a,b,c。

若将语句改为“scanf("%c%c%c",&a,&b,&c);” ,程序运行时输入:x□y□z 则输出结果如下:

这是由于在格式控制串字符中加入了空格,非格式字符需要原样输入,则输入数据时可以使用空格作为间隔,编译系统会将’x’、‘y’、'z’分别赋值给变量a,b,c。

若将语句改为“scanf("%3c%3c%*3c%c",&a,&b,&c);” 程序运行时输入“HowAreYou?” 则输出结果如下

格式控制字符串中的“%3c”说明从输入的数据中截取3列赋值给相应的变量,但是字符数据只能保存一个字符,因此编译系统将字符’H’赋值给变量a。同理,字符’A’赋值给变量b。“%*3c”表示要跳过3列数据,最后将字符’?'赋值给变量c。

2.使用getchar()函数和putchar()函数对字符型数据进行输入输出
getchar()函数

一般调用格式:ch=getchar(); 从键盘缓存区中读取一个字符,并赋值给ch

putchar()

一般调用格式:putchar(输出参数);只输出一个字符,输出参数是字符型变量或字符型常量

【例3.9】由键盘输入一个字符,将其输出到屏幕

1.用getchar()函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋值给任何变量,而直接作为putchar()函数的参数。本例可以改写如下:

2.可以在printf()函数输出刚接收的字符。如:

3.4 数学库函数
常用的数学库函数:

①指数函数 exp(x):计算

②绝对值函数 fabs(x):计算|x|

③以为底的对数函数log(x):计算 lnx

④幂函数pow(x,y):计算

⑤平方根函数 sqrt(x):计算

在程序中调用数学库函数时,一定要在程序的开头使用 #include<math.h>

【例3.10】输入一个球的半径,根据公式计算并输出球的体积

#include<stdio.h>
#include<math.h>
#define PI 3.14
int main()
{
float r, v;
printf(“输入半径r:”);
scanf_s("%f", &r);
v = 4.0 / 3 * PI * pow(r, 3);
printf(“体积为:%2f\n”, v);
return 0;
}

【例3.11】求一元二次方程++=0的根,设。

#include<stdio.h>
#include<math.h>
#define PI 3.14
int main()
{
float a, b, c, x1, x2, p, q;
printf(“请输入三个系数:”);
scanf_s(“a=%f,b=%f,c=%f”, &a, &b, &c);
p = -b / (2 * a);
q = sqrt(b * b - 4 * a * c) / (2 * a);
x1 = p + q; x2 = p - q;
printf(“x1=%5.2f\nx2=%5.2f\n”, a, b, c);
return 0;
}![

![在这里插入图片描述](https://img-blog.csdnimg.cn/a2496d537f2c40838fe384b6137be7c8.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAUHVuY2hsaW5lODMx,size_20,color_FFFFFF,t_70,g_se,x_16)

](https://img-blog.csdnimg.cn/b55418422c004214966c70b8d669cf05.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAUHVuY2hsaW5lODMx,size_20,color_FFFFFF,t_70,g_se,x_16)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值