计算机二级C语言考试笔记

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机考试笔记
二级C语言 - 思维导图-知识范围
二级C语言考点总结、快速掌握考试要点、复习抓住重点
C语言C程序初识计算机基本运行原理硬件系统运算器、控制器、输入、输出、存储器软件系统系统软
件、应用软件、辅助软件分层结构由下层向上层提供服务程序设计基本概念程序和程序设计程序:指令序列程序设计:解决问题的过程算法一般流程图由基本图形构成N-S流程图都在一个矩形里有穷性、可行性、确定性,>=0输入、>=1输出结构化和模块化设计c程序构成和格式标示符关键字预定义标示符用户自
定义标示符字母、数字、下划线不能以数字开头变量、常量数据类型表达式和语句、注释表达式表达计算的过程赋值表达式算数表达式关系表达式逗号表达式语句C语言执行的语法单位表达式语句、控制语句、复合语句、函数调用和空语句//和/* */运算符对数据做处理的一种符号优先级、结合性括号,单目的优先级高预处理命令includedefine函数
主函数只能有一个main(void)、main(int argc, char**argv)库函数C函数库提供的函数自定义函数VC++6.0基本使用编译、连接、运行和调试过程基本操作
C程序结构顺序结构概念语句的顺要按逻辑顺序出现去执行输入输出printf%d %f %e %g %s %c %g %x %o %p
宽度和小数点保留转义字符\n \b \t ,\\ ,\" %%scanf%d %c %f %lf %e %s %o %xlf(double) f(float)一定要区分输入要按格式控制里原样输入选择结构关系运算符和逻辑运算符>、<、>=、<=、==、!=&&、||、!
注意短路优先级逻辑值真为非零(1)假为零(0)if语句三种形式:if()、if...else...、if...else if...else...if 嵌套语句其后的语句替换为if语句,
或者复合语句中嵌入if语句注意点复合语句必须要{} 后不跟分号";"else总是与最近的if 匹配条件运算表达式?:优先级较低,注意使用括号由表达式一决定表达式的值为二还是三switchcase 只能在switch里要结束swith需要breakdefault
可以出现在任何位置goto语句需要一个跳转标签不能跨函数,一般不建议使用循环结构概念具有重复执行某段程序的功能循环变量、循环体和循环终止条件while、do...whiledo...while 之后有分号while有可能一次都不执行do...while先执行一次for语句三个表达式执行流程表达式可以省略但分号不能少第二个表示的值决定循环是否继续表示是任意表达式,不一定好和循环变量有关break、continuebreak终止循环continue 结束本次循环,不影响循环次数函数概念一段完成特定功能可重复使用的代码片段函数库C语言标准库系统库第三方库库函数pow、sqrt、abs、fabs、sin、cos、isalpha、isdigit、strlen、rand定义和返回值定义说明部分必须在前面return 返回值一个返回值或着没有返回值定义时的返回类型相同缺省的返回类型是intreturn 将结束函数调用定义不能嵌套定义类型函数名(类型参数名,。

){}调用void 类型只能单语句调用非void 可用作表达式和单语句调用返回值直接参加运算做函数参数形参实参函数的调用之前要声明函数首部加分号省略形参名省略参数列表参数的个数和数据类型要对应不匹配会自动转为形参的类型个数也相等实参只能是表达式不能有类型名传参式传值是一个非地址的值传址值是一个地址而已单向传递把实参值赋值给形参概念形参:定义时的参数
老柴爱整理20205/13
实参:调用时传入的实际参数,必须是一个值递归函数自身直接或间接地调用自己退出条件效率不高、
理解复杂、不建议使用main函数唯一,程序的开始两种形式int main(void)int main(int agrc,char
*agrv[])通过命令行传入参数argc参数个数、argv参数字符串列表数据类型概念数据类型(Data type)是
用来约束数据的解释决定了在内存中字节数和能对其做的操作基本类型整型int 、short int、unsigned、signed、long正负数、取值范围、进制特有操作位运算&、~、^、|、>>、<<%求余浮点型
float 、doublefloat 7位有效数字double 15位有效数字精度、科学计数、取值范围输入float%f、double%lf字符型char 'A'、65、'\101'、'\041'、\x61ASCII字符编码getchar、putchar操作加减乘除
+、-、*、/、++、--前++、--后++、--类型转换四舍五入混合运算低精度向高精度转化输出输入%d %p
%c %s %f %lf %X %o %g %e %u赋值操作=复合赋值%= += -=数据长度char<= short <= int<=2020/2/14
二级C语言思维导图
https:///template/36605
2/2
longchar=1,short =2、int=4,long=4类型转换强制类型转换(int)自动转换赋值、混合运算、函数
传参、输出转换char->short->int ->unsigned -> float -> double构造类型数组概念一组空间上连续
类型相同的变量一维数组定义:类型数组名[整型常量表达式]'A'、50、sizeof(int)、10+5二维数组数
组的数组一维数组中每个元素又是一个一维数组定义:类型组名[整型常量表达式][整型常量表达式]操
作初始化在花括号中逐个初始化部分初始化其余部分默认为零初始化确定定义数组元素个数引用取一组
元素中的某一个访问数组名[0<=x<N]做函数参数地址传给形参数组名是首元素地址元素地址int *p、int
p[]、int p[N]形参实质都是指针结构体共同体概念定义struct、union在花括号中定义成员变量结尾要
有分号typedef给类型声明一个新的名字成员(属性)可以是任何类型有一个指向自身类型的指针的叫自引
用用于构成链表操作初始化花括号中逐个初始化只初始化部分、其他默认为零成员变量.点成员运算符->
指针成员(*).取值再取成员变量变量之间直接赋值类型相同、成员变量对应赋值类型不同、不能转换则
错误链表用一个指向自身类型的指针将节点连接起来创建、删除、插入、遍历、销毁区别与联系结构体
所以成员都分配内存共同体只有一个存在、分配成员变量最大的空间做函数参数成员是指针,只是传入
地址值字符串概念字符数组中用0表示字符串结尾0 和'\0'是一样的字符串常量值是首元
素地址存放在
静态常量区使用字符数组存放gets、puts %s strcpy、strcmp、strcat、strlen等相关函数字符串数组
二维数组字符指针数组指针概念内存的地址叫指针保存指针的变量叫指针变量,一般也叫指针变量的第
一个字节作为变量的地址指针变量的值是其他变量的地址操作& 取址、*取值移位+、-移动一个类型的
字节两个指针只能相减和数组关系数组名和数组首元素地址数组名类似与一个指针常量数组名是一个值
不能改变指针变量是变量可以改变指针操作数组*(prt+n) <=> prt[n]二级指针不对应二维数组*(*
(a+m)+n)=a[m][n]**ptr = a[][]不正确数组指针与指针数组指针数组int *p[N]一组指针变量数组指针
int (*p)[N]指向数组的一个指针变量和函数关系参数传址数组名做参数通过参数返回数据返回指针不能
是指向函数内临时变量的地址函数指针函数名是函数的入口地址指向函数的指针main函数argv是一个字
符指针数组动态存储分配malloc、alloc、realloc、free在堆上分配,需要程序手动释放无值类型void
函数无返回值函数无参数指针无类型作用域和存储类型作用域标示符起作用的区域局部、全局生存周期
变量在程序中占据内存是时期动态、静态静态变量只初始化一次,默认为零常用限定符static、
register、const、auto、externextern声明变量、扩大作用域static、缩小作用域预处理概念宏替换
#define带参、不带参简单替换()保证替换后不会错误文件包含#include宏编译#if...#endif文件操作概
念外部介质上的数据集合直接存取、顺序存取文本文件、二进制文件读写操作操作标示r、w、a、t、b、
+SEEK_SET、SEEK_END、SEEK_END相关函数fopen、fclose、feof、fread、fwrite、ftell、fseek、rewindgetc(fgetc)、putc(fputc)、fgets、fputs、fprintf、fscanf步骤文件指针、打开文件、读写文件、文件定位、关闭文件要注意文件判断文件是否打开成功
第一章节运算符
转义字符常量‘\x41’'101' '\n',以\开头的属于转义字符,‘\ddd'是三位八进制数,'\xhh'
""是字符串包含\0,是结束标志符
字符'3'是51,常量3是3
预定义的标识符不是C语言的关键字
可以用一个标志符来代表一个常量
十进制的小数形式由数字和小数组成,必须有小数点小数点的位置不受限制
指数形式的十进制加价码e后面只能是整数可以带符号,.2e0
e13价码标志前缺少十进制数
老柴爱整理20205/13
C语言整数包括正整数,负整数,无符号整数
scanf属于库函数名,属于预定义标识符,可以用户定义
'\0xab'不合法,\0x不合法
整型变量可以存放实数
\b退格符
\r回车符
\t横向跳若干格
逗号运算符结合性从左到右,逗号表达式优先级最低
逗号表达式中间不能为空,如a=a+b ,,c=b-a;
c(a,b)逗号表达式的最后一个值赋值给c
(z=A,B)合法AB是常量时
[]里面只能时char int
逻辑运算结果只有0和1
结构体
结构体和共用体
Typedef说明一种类型21个
结构体数据类型9个
结构体类型的变量21个
结构体类型的引用20个
结构体数组22个
指向结构体类型的指针34个
链表6个
结构体数据类型
不可以用结构体类型名来定义变量,属于非法使用关键字
结构内的变量赋值使用{ }
函数在使用调用后实参不变,形参发生变化
结构体变量不可以当结构体的类型使用
结构体类型的大小等于所有成员所占的内存之和
用typedef来描述一种的类型
Typedef可以为各类型名取别名,不可以为变量取别名,为变量取别名用#define 新定义的类型名和原有的类型名一样有效
函数内部定义也可以是全局变量,static可以定义静态局部变量
结构体类型的变量
Strcpy是结构体变量的赋值
考察实参和形参的函数传递,看清楚是形参还是实参
函数作用下形参发生变化
注意发f(); 和b=a;
注意strcpy( );
注意函数的返回类型。

链表
注意*p运算p->next =s 是将S的指赋值给*p
*(*p)=p->next->next//访问的成员变量的地址
*p.(dt)=p->next//指针变量名->成员名;(*指针变量名).成员名
(int)*p=2;//p->next=2;//赋值表示
*(*p)=a; (*p)&a; //指针指向地址
链表是个循环结构,有链表的首结点和尾结点,尾结点是NULL//\0
[if !supportLists]S-[endif]>next =NULL
结构体数组
注意++p->x先给取值后加一
数组名为首地址,地址常量不可以相互赋值
数组名为地址
常量不可以作为成员变量
常用结构体
Typedef struct student {
Char name [10];
Int Age;
Char sex;
}stu
F(t)将实参给函数提供值,调用完之后T的值不会发生变化
Void f(stu t ){
Strcpy( ,”dong”);
T.age++;
}
Fun(a);//a的值不会发生改变将a的值传递给结构体成员stu .t
结构体指针
冒泡排序指针
Int i,j,k;
For (i=0;i<p->n-1;i++)
For(j=i+1;j<p->n;j++)
If(*pa[i]>*pa[j])
{t=*pa[i];*pa[i]==*pa[j];*pa[j]==t;}
第三章预处理命令
#表示这是一条预处理命令,所有的预处理命令都以# 开头。

宏名是标识符的一种,命名规则和变量相同。

字符串可以是数字、表达式、if 语句、函数等。

1) 宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单粗暴的替换。

字符串中可以含任何字符,它可以是常数、表达式、if 语句、函数等,预处理程序对它不作任何检查,如有错误,只能在编译已被宏展开后的源程序时发现。

2) 宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起替换。

#预处理
c语言中预处理命令前都有#
预处理是在编译之前进行的
预处理文件中可以包含其他的文件
预处理命令可以写在源文件的开头,也可以写在函数和函数之间
老柴爱整理20205/13
动态存储
Malloc(sizeof(int ))
动态存储只会保留最后一组数据
Strcpy(p1,‘’name’’);//p1分配name\0 5个内存单元
注意行列示a[2][3]={1,2,3,4,5,6};//两行三列
1 2 3
4 5 6
a[1]+1=a[2][2];//两种表示方法等价
静态参数会保留上一次运算的值
Static s =5;
For(i=0;i<3i++)
[if !supportLists]S- [endif]-;
Printf(%d,&s,\n) 2
宏定义
C语言编译过程分成四个步骤:
1,由.c文件到.i文件,这个过程叫预处理
2,由.i文件到.s文件,这个过程叫编译
3,由.s文件到.o文件,这个过程叫汇编
4,由.o文件到可执行文件,这个过程叫链接
用gcc查看预处理过程(假设源文件叫hello.c)
gcc -o hello.i hello.c -E
然后用vi hello.i 即可查看生成的预处理文件
按ESC 输入:$ 跳到预处理文件可看到hello.c源码
宏的本质:预处理阶段的单纯的字符串替换
预处理阶段,不考虑C语法
宏的使用:
1,用于常量,数组的大小
第四章文件操作
文件基础
选择一共64道题(必考3道)(3分)做一遍考前看看题文件的打开关闭11个
文件的概念7个
文件的指针2个
文件的读写30个
文件的定位14个
大题程序填空和程序修改必考题型(36分)
几个函数
FILE *fopen(char *filename, char *mode);
fgets(str, N, fp) != NULL
size_t fread ( void *ptr, size_t size, size_t count, FILE *fp ); fclose(fp);
文件的概念
文件是由数据顺序组成的二进制文件或文本文件
把文件操作后不一定全部覆盖,还可以进行追加
文件指针指向文件,不是文件位置指针
一个指针同一时间只能指向一个变量
文件指针的值是地址是一个十六进制数,不一定小于文件字节数
所谓打开文件,就是获取文件的有关信息,例如文件名、文件状态、当前读写位置等,这些信息会被保存到一个FILE类型的结构体变量中。

关闭文件就是断开与文件之间的联系,释放结构体变量,同时禁止再对该文件进行操作。

FILE 是<stdio.h> 头文件中的一个结构体,它专门用来保存文件信息。

我们不用关心FILE 的具体结构,只需要知道它的用法就行。

在C语言中,文件有多种读写方式,可以一个字符一个字符地读取,也可以读取一整行,还可以读取若干个字节。

文件的读写位置也非常灵活,可以从文件开头读取,也可以从中间位置读取。

在C语言中,操作文件之前必须先打开文件;所谓“打开文件”,就是让程序和文件建立连接的过程。

打开文件之后,程序可以得到文件的相关信息,例如大小、类型、权限、创建者、更新时间等。

在后续读写文件的过程中,程序还可以记录当前读写到了哪个位置,下次可以在此基础上继续操作。

文件的打开和关闭
整体来说,文件打开方式由r、w、a、t、b、+ 六个字符拼成,各字符的含义是:
r(read):读
w(write):写
a(append):追加
t(text):文本文件
b(banary):二进制文件
+:读和写
操作文件的正确流程为:打开文件-->读写文件--> 关闭文件。

文件在进行读写操作之前要先打开,使用完毕要关闭。

使用头文件中的fopen() 函数即可打开文件,它的用法为:
FILE *fopen(char *filename, char *mode);
filename为文件名(包括文件路径),mode为打开方式,它们都是字符串。

fopen() 会获取文件信息,包括文件名、文件状态、当前读写位置等,并将这些信息保存到一个FILE 类型的结构体变量中,然后将该变量的地址返回。

文件一旦使用完毕,应该用fclose() 函数把文件关闭,以释放相关资源,避免数据丢失。

int fclose(FILE *fp);
fclose(fp);
实例代码:
#include <stdio.h>
#include <stdlib.h>
#define N 100
int main() {
FILE *fp;//定义文件指针
char str[N + 1];
老柴爱整理20205/13
//判断文件是否打开失败
if ( (fp = fopen("d:\\demo.txt", "rt")) == NULL ) {
puts("Fail to open file!");
exit(0);
}//如果打开文件是物理空(没有地址)否则输出Fail to open file!
//循环读取文件的每一行数据
while( fgets(str, N, fp) != NULL ) {
printf("%s", str);
}//将文件的每一行按照同样的判断(遍历)进行输出
//操作结束后关闭文件
fclose(fp);
return 0;
}
文件的读写“+”
fread() 函数用来从指定文件中读取块数据。

所谓块数据,也就是若干个字节的数据,可以是一个字符,可以是一个字符串,可以是多行数据,并没有什么限制。

fread() 的原型为:size_t fread ( void *ptr, size_t size, size_t count, FILE *fp );
fwrite() 函数用来向文件中写入块数据,它的原型为:
size_t fwrite ( void * ptr, size_t size, size_t count, FILE *fp );
对参数的说明:
ptr为内存区块的指针,它可以是数组、变量、结构体等。

fread() 中的ptr 用来存放读取到的数据,fwrite() 中的ptr 用来存放要写入的数据。

size:表示每个数据块的字节数。

count:表示要读写的数据块的块数。

fp:表示文件指针。

理论上,每次读写size*count个字节的数据。

size_t是在stdio.h 和stdlib.h 头文件中使用typedef 定义的数据类型,表示无符号整数,也即非负数,常用来表示数量。

返回值:返回成功读写的块数,也即count。

如果返回值小于count:
对于fwrite()来说,肯定发生了写入错误,可以用ferror() 函数检测。

对于fread()来说,可能读到了文件末尾,可能发生了错误,可以用ferror() 或feof() 检测。

数据写入完毕后,位置指针在文件的末尾,要想读取数据,必须将文件指针移动到文件开头,这就是rewind(fp);的作用
实例代码
#include<stdio.h>
#define N 2
struct stu{
char name[10]; //姓名
int num; //学号
int age; //年龄
float score; //成绩
}boya[N], boyb[N], *pa, *pb;
int main(){
FILE *fp;
int i;
pa = boya;
pb = boyb;
if( (fp=fopen("d:\\demo.txt", "wb+")) == NULL ){
puts("Fail to open file!");
exit(0);
}
//从键盘输入数据
printf("Input data:\n");
for(i=0; i<N; i++,pa++){
scanf("%s %d %d %f",pa->name, &pa->num,&pa->age, &pa->score);
}
//将数组boya 的数据写入文件
fwrite(boya, sizeof(struct stu), N, fp);//将文件指针重置到文件开头
rewind(fp);//从文件读取数据并保存到数据boyb
fread(boyb, sizeof(struct stu), N, fp);//输出数组boyb 中的数据
for(i=0; i<N; i++,pb++){
printf("%s %d %d %f\n", pb->name, pb->num, pb->age, pb->score);
}
fclose(fp);
return 0;
}
文件的定位
Feof函数的用法是输入流读取数据,遇到文件结束符,feof函数值为非零,否则为0 Fseek(fp,0L,0)将文件指针重新指向一个数据流的开头
EOF end of file文件结束符,其值为-1
例如,把位置指针移动到离文件开头100个字节处:
fseek(fp, 100, 0);
值得说明的是,fseek()一般用于二进制文件,在文本文件中由于要进行转换,计算的位置有时会出错。

#include<stdio.h>
#define N 3
struct stu{
char name[10]; //姓名
int num; //学号
int age; //年龄
float score; //成绩
}boys[N], boy, *pboys;
int main(){
FILE *fp;
int i;
pboys = boys;
if( (fp=fopen("d:\\demo.txt", "wb+")) == NULL ){
printf("Cannot open file, press any key to exit!\n");
老柴爱整理20205/13
getch();
exit(1);
}
printf("Input data:\n");
for(i=0; i<N; i++,pboys++){
scanf("%s %d %d %f", pboys->name, &pboys->num, &pboys->age, &pboys->score);
}
fwrite(boys, sizeof(struct stu), N, fp); //写入三条学生信息
fseek(fp, sizeof(struct stu), SEEK_SET); //移动位置指针
fread(&boy, sizeof(struct stu), 1, fp); //读取一条学生信息
printf("%s %d %d %f\n", , boy.num, boy.age, boy.score);
fclose(fp);
return 0;
}
公共基础
C语言中的非执行语句不会被编译,不会生成二进制机器指令
C源程序经过C语言编译器程序编译之后会生成.obj的目标文件
OBJ文件与C语言提供的库函数连接形成可执行文件.exe
C语言中八进制整数常量的开头数字是0,十六进制0x
实行常量有两种表示形式,小数形式,指数形式以e或者E后跟一个整数,e之前也要有数字表示以a为底b的指数
数字组合不能含有其他的符号
合法的标识符字母数字下划线,字母下划线开头
C语言的整形常量可以用八进制、十进制、十六进制,不能用二进制
程序中不能乱用goto语言,会打乱流程
函数会在main函数执行,不一定会在main函数结束
变量命名必须符合标识符的命名规则
算法的特征,有穷性、确定性、可行性、输入、输出
一个算法可以有零个或多个输入
一个算法有一个或者多个输出
包含不同类型变量应该用结构体
C语言的数值常量中不能夹杂空格
C语言中的变量都必须先定义后使用
变量的定义语句double a;double a =1,b=2;
函数中不能定义其他函数,不一定每个c程序文件都要有main函数
一个c语句经过编译后产生若干条机器指令,声明不产生指令,有关数据的声明而且固定类型和格式的C语句被转换成机器指令条数固定
用标识符来代替常量,称之为宏定义#define uchar unsigned char
变量实质是代表了内存中的储存单元
C语言的模块化通过函数实现
常量不是C语言的标识符
算法的描述伪代码,流程图,n-s结构图
字符常量“\”‘X’'a'“sss”
预定义的表示符不是关键字
变量在函数的内外分为全局变量和局部变量
实型常量只有十进制,浮点只有十进制
流程图椭圆是起止框,长方形是处理框,输入输出是平行四边形,菱形判断框,圆连接点
对象有什么特点标志唯一性、分类性、多态性、封装性、模块的独立性好
继承是面向对象的一个特征,是类之间共享和操作机制
面向对象的基本方法是对象、消息、继承、多态、实例、抽象
对象之间的通信靠消息
封装性指在外面能看到对象的特征
类是关于对象性质的描述,对象是对应类的一个实例
软件设计的基本准则低内聚高耦合
将数据和操作置于对象统一体的是封装
算法(2分)
算法的有穷性运行时间是有限的
时间复杂度执行算法所需要的计算工作量,算法执行过程中的基本运算次数
空间复杂度执行过程中所占用的内存
时间复杂度和空间复杂度没有必然联系
算法的效率与存储结构有关,算法的优劣与算法的运行环境无关,只与算法的复杂度有关算法的特征,有穷性、确定性、可行性、输入、输出
一个算法可以有零个或多个输入;一个算法有一个或者多个输出
数据结构的基本概念(1)
数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。

线性表和顺序存储结构(1)
顺序查找的最差情况是(n+1)/2
冒泡排序n(n-1)/2
比冒泡排序还小的是堆排序nlog2n
软件的生命周期等
链式存储双向链表属于线性存储
有多个指针域的链表可能是线性结构
二叉链表是非线性结构
结点中具有两个指针域的链表既可以是线性的也可以是非线性的
线性表的链式存储比顺序存储插入和删除的效率高
在线性单链表中可以从一个结点遍历到所有结点
操作题
NO 1、循环遍历数组或者字符串
程序中编写FUN函数,函数的功能是,统计一行字符串中单词的个数,作为函数的返回值,字符串在主函数中输入,规定所有的单词由小写字母组成,单词之间有若干个空格隔开,一
老柴爱整理20205/13
行的开始没有空格。

Int fun(char*s){
Int i,j;
For(i=0;s[i]!=’\0’;i++)
If(s[i]!=’’&&(s[i+1]!==’’||s[i+1]==’\0’))
//如果一个字母的下一个字符为空格或者结束标志,则表示一个单词的结束
J++;
Return j;
}
NO 2、降序排序
程序中,已知学生的记录是由学号和学习成绩构成的,N名学生的数据已存入a结构体数组中,请编写函数FUN,该函数的功能是找出最低的学生成绩的学生记录,通过形参返回主函数(规定只有一个最低分)
Fun(STU a[],STU *s){
Int i;
*s=a[0];//认为第一个最小
For(i=0;i
If(s->s>a[i].s])//s指针取s的值,大于s取a[]的值
*s=a[i];//s取a[i]值为最小值
}
NO 3、多维数组取值
程序中,定义了N *N的二维数组,并在主函数中自动赋值,请编写函数fun(int a[N],int m),该函数的功能是使数组右上半三角元素中的值乘以m
例如,若m的值为2 ,a数组中的值为
A= 1 9 7
2 3 8
4 5 6
则返回主程序后的a数组中的值应为
2 18 14
2 6 16
4 5 12
Void fun(int a[][N],int m)
{
Int i,j;
For(j=0;j<N;j++)
For(i=0;i<=j;i++)
a[i][j]=a[i][j]*m
/*右上半角元素中的值乘以m*/
}
//两个循环遍历,第一个遍历行,第二个遍历列
NO 4、数组中遍历找值,并输出
程序中定义了N *N的二维数组,并在主函数中赋值,请编写函数fun,函数的功能是,求出数组周边元素的平均值,并作为函数值返回给主函数中的s,例如若a数组中的值为
0 1 2 7 9
1 9 7 4 5
2 3 8 3 1
4 5 6 8 2
5 9 1 4 1
则返回主程序后的值为3.375
本题要求计算二维数组的周边元素的均值,for循环语句控制循环的过程,if条件语句根据数组的下标判断是否是周边元素,周边元素的规律是下标中有一个是0或者N-1 ,所以平均值是sum/k
Double fun (int w[][N])
{
Int i,j,k;
Double sum=0.0;
For (j<0;j
If (i==0||i==N-1||j==0||j==N-1)//只要下标有一个为0或者N-1,则它一定是周边元素{sum=sum+w[i][j];//周边元素求和
K++;
Return sum /k;//周边元素求平均值
}
}
NO 5、对浮点型变量进行四舍五入
程序中编写一个函数float fun (double b),该函数的功能是使变量h保留2位小数,并对第三位进行四舍五入(规定h的值为正数)
例如若h的值为1234567
则返回值为12345670000;若h值为1234 564 则返回值为1234 560000
Float fun(int ){
//单精度*1000+5 相当与对第三位小数进行四舍五入,除以10后将其赋给一个长整型数时,就把第三位小数后的数全部截去
//除以100保留两位小数
}
解题注意
进行四舍五入的运算并不是为了输出,所以不能用printf(“%7.2f”&h)
四舍五入的计算方法是:如果要求精确到小数点后第n位,则需要对第n+1 位进行运算,方法是将小数乘以10的n+1次方后加5然后除以10 强制转换变量类型为长整型,再将该数除以10的n次方,同时强制转换类型为浮点型
Int t ;//定义为整形变量
t =(int )(h*10^(n+1)+5)/10;//对h进行操作,t取值时取整数部分。

10^(n+1)为扩大的倍数
h =(float)t /10^n; //将t缩小10^n倍,并转换为浮点型。

相关文档
最新文档