c除法向上取整函数(c语言除法取整规则)

c除法向上取整函数(c语言除法取整规则)

考前段段清—C语言知识总结

突然提前的考期

是否让你手足无措?

不要慌张,

快来跟随我们的脚步,

一起复习下面的知识点吧!

为进一步加强我院学风建设,营造浓厚的学习氛围,帮助同学们开展高效的考前复习,缓解考前压力,电子工程学院学生会特此推出段段清系列知识总结。

本片推送是针对C语言的知识点总结,快来学习一下吧!

一、题型分布

1、程序填空

2、阅读程序

3、程序设计

二、知识点总结

第三章 最简单的C程序设计——顺序程序设计

1、常量:

(1)定义:在程序运行过程中,其值不变。

(2)分类:整型、实型、字符、字符串、符号常量。

2、变量:

(1)定义:变量的值可以改变。

(2)先定义,后使用注意区分变量名和变量值

例:a=3,a 是变量名,3是变量的值。

3、常变量:变量前加一个关键词 const

例:

const int a = 3 定义a为整形变量,定指为3,在变量存在期间不能改变。

4、区分常量和常变量:

常变量具有变量的基本性质:有类型, 占存储单元,只是不允许改变其值。常变量是有名字的不变量,常量是没有名字的不变量。

5、标识符:

(1)定义:用来对变量、符号常量名、数组、类型等命名的有效字符序列统称为标识符。

(2)命名规则:只能由字母、下划线和数字三种字符组成,且 第一个字符必须为字母或下划线。(注意:翻译系统认为大写字母和小写字母是两个不同的字符。因此,SUM和sum是两个不同的变量名。(一般变量名用小写字母表示。)

6、自增( )、自减(–)运算符

i,–i(在使用i之前,先使i的值加(减)1)

i ,i–(在使用i之后,再使i的值加(减)1)

例:

i=3;

printf(“%d”, i);

输出4。

i=3;

printf(“%d”,i );

输出3。

7、数据的输入输出

(1)用printf函数输出数据

一般格式 printf(格式控制,输出表列)

格式控制:是用双撇号括起来的一个字符串,称为格式控 制字符串,简称格式字符串。它包括格式声明(由“%”和格式字符组成,如%d等。)和普通字符(需要在输出时原样输出的字符)。

输出表列:程序需要输出的一些数据,可以是常量、变或表达式。

(2)用scanf函数输入数据

例:scanf(“%f%f%f”,a,b,c);是错误的,

scanf(“%f%f%f”,&a,&b,&c);是正确的。

(3)格式字符:

①d格式符。用来输出(输入)一个有符号的十进制整数。

②c格式符。用来输出(输入)一个字符。

③s格式符。用来输出(输入)一个字符串。

④f格式符。用来输出(输入)实数(包括单、双精度、长双精度),以小数形式输出(输入)。

用法:基本型,用%f。(输出时:整数部分全部输出,小数部分输出6位。)

指定数据宽度和小数位数,用%m.nf。(m(域宽):所占列数,n:小数位数。向右对齐)%-m.nf(向左对齐)

例:

#include<stdio.h>

Int main()

{ double a=1.0;

printf(“%8.3f,%-8.3f”,a,a);

return 0;

}

输出结果: 1.000,1.000 (后有三个空格)

⑤e格式符。用于以指数形式输出(输入)实数。(小数位数为六位,指数部分占五列)

例:printf(“%s”,123.456)

输出结果:1.234560e 002

(4)字符输入输出函数

①用putchar函数输出一个字符

一般形式putchar(a)

②用getchar函数输入一个字符

一般形式getchar()

例:a=getchar(); = putchar(getchar());

putchar(a);

第四章 选择结构程序设计

1、if语句 (用来实现两个分支的选择结构)

一般形式:

(1)if(表达式) 语句1例:if(a>b){t=a;a=b;b=t;}

“表达式”可以是关系表达式、逻辑表达式、数值表达式。

(2)if(表达式)

语句1

else

语句2

例:if(a>b)

printf(“max=%d”,a);

else printf(“max=%d”,b);

(3)if(表达式1) 语句1

else if(表达式2) 语句2

else if(表达式3) 语句3

… …

例:if (number>500) cost=0.15;

else if(number>300) cost=0.10;

else if(number>100) cost=0.075;

else if(number>50) cost=0.05;

else cost=0;

2、switch语句 (用来实现多分支的选择结构)

一般形式:

switch(表达式)

{

case 常量1 :语句1

case 常量2 :语句2

… … …

case 常量n :语句n

default :语句n 1

}

例:switch(grade)

{

case ‘A’:printf(“85~100\n”);break;

case ‘B’:printf(“70~84\n”);break;

case ‘C’:printf(“60~69\n”);break;

case ‘D’:printf(“<60\n”);break;

default:printf(“enter data error!\n”);

}

第五章 循环结构程序设计

1、while语句

一般形式:

while(表达式) 语句

先判断,后循环:只有当前循环条件为真(即给定的条件成立),就执行循环语句。

例:

#include<stdio.h>

int main()

{

int i=1,sum=0;

while(i<=100)

{

sum=sum i;

i ;

}

printf (“sum=%d\n”,sum);

return 0;

}

2、用do…while语句实现循环

一般形式:

do

语句

while(表达式);

先执行,后判断:先执行循环体,然后再检查条件是否成立, 若成立,再执行循环体。(循环体至少被执行一次。)

例:

#include<stdio.h>

Int main()

{

Int i=1,sum=0;

do

{

sum=sum i;

i ;

}while(i<=100);

printf(“sum=%d\n”,sum);

return 0;

}

3、用for语句实现循环

一般形式:

for(表达式1;表达式2;表达式3)

语句

表达式1:设置初始条件,只执行一次。

表达式2:是循环条件表达式,用来判断是否继续循环。

表达式3:循环调整。

最常用的for语句形式:

for(循环变量赋初值;循环条件;循环变量增值)

语句

例:

for(i=1;i<=100;i )

sum=sum i;

区分:(1)用break语句提前终止循环

break语句可以从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。

例:

for(i=1;i<=100;i ) //第一出口(当i>100时,循环结束)

{

sum=sum i;

if(sum==66) break; //第二出口(当sum=66时,循环结束)

}

(2)用continue语句提前结束本次循环

continue语句只结束本次循环。

例:

for(=100;n<=200;n )

{if(n%3==0) //当n可被3整除时,结束本次循环

continue;

printf(“%d”,n); //输出100-200间不可以被3整除的整数

}

(3)总结:

continue语句只结束本次循环,而不是终止整个循环的执行。而break语句则是结束整个循环,不再判断循环条件是否成立。

第六章 利用数组处理批量数据

1、字符数组的输入输出

(1)逐个字符输入输出。用格式符%c输入或输出一个字符,例:

a=‘A’;

printf(“%c”,a);

(2)将整个字符串一次输入或输出。用%s格式符,对字符串 进行输入输出。

例:

char c[]={“China”};

printf(“%s”,c);

char str1[5],str2[5],str3[];

②用scanf函数整体输入字符数组(%s)时,系统会把空格当作字符串的结束标志’\0’。)

2、字符串处理函数

(1)puts函数——输出字符串的函数

一般形式:puts(字符数组)

(2)gets函数——输入字符串的函数

一般形式:gets(字符数组)

(区分:gets函数不会将空格当作’\0’,scanf(“%s”)会将空格当作’\0’)

注意:puts和gets函数只能输出或输入一个字符串。

(3)strcat函数——字符串连接函数

一般形式:strcat(字符数组1,字符数组2)(将1和2连接起来组成新的字符串,1足够大)

(4)strcpy和strncpy函数——字符串复制函数

一般形式:strcpy(字符数组1,字符串2)(将2复制到1中,1 足够大)可以用strncpy函数将字符串2中的前n个字符复制到字符数组1 中。

例:

strncpy(str1,str2,2); 将字符串2前两个字符复制到字符数组1中。

(5)strcmp函数——字符串比较函数

一般形式:strcmp(字符串1,字符串2)

比较规则:

①如果全部字符相同,则认为两个字符串相等。

②若出现不相同的字符,则以第一对不相同的字符比较结果为准。

③在英文字典中位置在后面的为“大”。

函数值带回:

①字符串1与字符串2相同,函数值为0。

②字符串1>字符串2,函数值为任意一个正整数。

③字符串1<字符串2,函数值为任意一个负整数。

(6)strlen函数——测字符串长度的函数

一般形式:strlen(字符数组)

(函数的值为字符串中的实际长度(不包括’\0’在内))

*(7)strlwr函数——转换为小写的函数

一般形式:strlwr(字符串)

(字符串中字母大写变小写)

*(8)strupr函数——转换为大写的函数

一般形式:strupr(字符串)

(字符串中字母小写变大写)

第七章 用函数实现模块化程序设计

1、函数

(1)从用户使用角度看:

①库函数,它是由系统提供的,可以直接使用。

②用户自己定义的函数。

(2)从函数的形式看:

①无参函数:在调用无参函数时,主调函数不向被调用函数传递数据。无参函数一般用来执行指定的一组操作。(无参函数可以带回或不带回函数值,大多不带回。)

②有参函数:在调用有参函数时,主调函数通过参数向被调函数传递数据,一般情况下,执行被调函数时会得到一个函数值,供主调函数使用。

2、函数的调用过程

(1)在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。在发生函数调用时,被调函数的形参才被临时分配内存单元。

(2)将实参的值传递给相应的形参。

(3)在执行被调函数期间,由于形参已经有值,就可以进行有关的运算。

(4)通过return语句将函数值带回主调函数。

(5)调用结束,形参单元被释放。

3、函数的返回值

(1)函数的返回值是通过函数中的return语句获得的。

(2)函数值的类型。在定义函数时指定函数值的类型,限制函数返回值的类型。

(3)在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致。(不一致时,以函数类型为准。)

(4)对于不带回值的函数,应当用定义函数为“void类型”(或称“空类型”)。此时在函数体中不得出现return语句。

4、数组作为函数参数

(1)数组元素作函数实参:数组元素可以作为函数实参,但不能作形参。

(2)一维数组名作函数参数:数组名既可以作实参又可以作形参。

(3)区别:

②数值元素(或变量)作实参,向形参是单向传递,形参 改变不影响数组元素(或变量)。数组名作实参,与形参数组之间是双向传递,形参数组改变,实参数组元素也随之改变。分

三、例题分析

1、计算总分和平均分。

某生本学期共有5门课程,分别是高数、英语、大物、思修和体育。5科的期中考试成绩分别是86分、74分、92分、77分、82分,期末考试成绩分别是81分、87分、90分、62分、88分。已知期中和期末考试成绩分别占总成绩的30%和70%。定义相应的变量存放各科成绩,并计算出该生5门课程的总分和平均分。

??要求平均分(average)输出两种形式:

(1)带2位小数的浮点数形式和(2)不带小数的整数形式。

??要求总分(total)输出带2位小数的浮点数形式。

程序中浮点数的数据类型均为float类型。

提示:输出不带小数的平均分的整数形式可以使用强制类型转换。

以下为输出示例:

total=408.90

average=81.78

average=81

程序代码:

#include<stdio.h>

int main()

{

float average; //定义平均数

int i;//循环变量

int a[10];//定义一个整型数组

for(i=0;i<10;i )

scanf(“%d”,&a[i]);//运用循环给数组赋值

float total=((a[0] a[1] a[2] a[3] a[4])*0.3 (a[5] a[6] a[7] a[8] a[9])*0.7);

printf(“total=%.2f\n”,total);//输出总分total,保留两位小数

printf(“average=%.2f\n”,total/5);//输出平均数average,保留两位小数

printf(“average=%d\n”,(int)total/5);//强制取整后输出平均数average

return 0;

}

输出结果:

2、请用户输入一个4位数的正整数n,编写程序将其拆分为两个2位数的正整数a和b,计算并输出拆分后的两个数的加、减、乘、除和求余的结果。

例如:n=4321,设拆分后的两个整数a,b为a=43,b=21。除法运算结果要求精确到小数点后2位, 数据类型为float。

以下为程序的运行结果示例:

请输入一个4位的正整数n:4321↙

数位拆分结果为:a=43, b=21

拆分数计算结果为:

a b=64

a-b=22

a*b=903

a/b=2.05

a%b=1

程序代码:

#include<stdio.h>

int main()

{

int a,b,n; //定义三个整型变量

printf(“请输入一个4位的正整数n:”); //提示行

scanf(“%d”,&n); //输入一个4位正整数

a=n/100; //n除100得前两位整数

b=n0; //n对100取余得后两位整数

printf(“数位拆分结果为:”);

printf(“a=%d,b=%d\n”,a,b); //输出a,b

printf(“拆分数计算结果为:\n”);

printf(“a b=%d\na-b=%d\na*b=%d\na/b=%.2f\na%%b=%d”,a b,a-b,a*b,(float)a/b,a%b); //输出a与b加、减、乘、除和取余的值

return 0;

}

输出结果:

3、从键盘输入你的出生年和今年的年份,编程判断并输出从你的出生年到今年之间中有多少个闰年。

程序的运行结果示例1

Input your birth year:2000↙

Input this year:2020↙

2000

2004

2008

2012

2016

2020

count=6

程序代码:

#include<stdio.h>

int main()

{

int n,m,i=0;//定义3个整型变量

printf(“Input your birth year:”);

scanf(“%d”,&n);//输入你的出生年

printf(“Input this year:”);

scanf(“%d”,&m);//输入今年的年份

for(;n<=m;n )

{if((n%4==0&&n0!=0)||(n@0==0))//判断是否为闰年

{printf(“%d\n”,n);//输出闰年

i ;//闰年个数加一

}

}

printf(“count=%d”,i);//输出闰年个数

return 0;

}

输出结果:

4、马克思手稿中的趣味数学题

题目内容:

编程求解马克思手稿中的趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,请编程计算男人、女人和小孩各有几人?

程序代码:

#include<stdio.h>

int main()

{

int x, y, z;//定义男人x个,女人y个,小孩z个

for (x = 1; x < 30; x )

{

for (y = 1; y < 30; y )

{

for (z = 1; z < 30; z )

{

if ( x y z== 30 && 3 * x 2 * y z * 1== 50)//利用循环和判断求解x,y,z

printf(“%d,%d,%d\n”,x,y,z); //输出x,y,z

}

}

}

return 0;

}

输出结果:

知识点整理丨学生会学习部干事 王要领

文字丨学生会学习部部长 李 珅

排版丨学生会宣传部干事 李玲玉

审核丨学生会宣传部部长 谷骁宣

监制丨学院团委副书记 肖萌老师

发表评论

登录后才能评论