C语言程序设计四次形考任务 第一次形考任务样例: 一、目的: 了解和熟悉VC++6.0集成开发环境,能够调试和运行具有多文件结构的C语言程序。 二、内容和步骤: 1、在一个逻辑盘(如D盘)或给定的目录下,使用VC++6.0环境中的“文件→“新建” 命令,利用打开的“工作区”选项卡界面,建立名为“C语言形成性考核”的工作区(文件 夹): 2、在上述工作区下建立一个内容为空的项目(目录),假定项目名用“xkzy1”表示: 3、在上述项目内建立一个具有如下内容的、名称为“main.c”的程序主文件: #include #include "head.h" void main( int a,b,c; printf(请输入任意三个整数:"); scanf(“%d%d%d”,&a,&b,&c): printf(求和:%dn”,Sum(a,b,c): printf("乘积:%d八n",Product(a,b,c): 4、同时在上述项目内建立一个具有如下内容的、名称为“next.c”的程序次文件: int Sum(int a,int b,int c) { return a+b+c; } int Product(int a,int b,int c) return a*b*c; } 5、同时在上述项目内建立一个具有如下内容的、名称为“head.h”的用户头文件: int Sum(int,int,int); int Product(int,int,int); 6、分别编译上述程序主文件和次文件,均无误后再进行连接,自动生成与项目名相同 的可执行文件: 7、选择编译菜单中的“执行”命令运行程序,按要求输入三个整数后,得到运行结果。 三、提交内容 程序执行时,在输出屏幕上呈现的所有内容。 四、评分标准 本次任务占形成性考核成绩的25%
... ... C 语言程序设计四次形考任务 第一次形考任务样例: 一、 目的: 了解和熟悉 VC++6.0 集成开发环境,能够调试和运行具有多文件结构的 C 语言程序。 二、 内容和步骤: 1、在一个逻辑盘(如 D 盘)或给定的目录下,使用 VC++6.0 环境中的“文件→“新建” 命令,利用打开的“工作区”选项卡界面,建立名为“C 语言形成性考核”的工作区(文件 夹); 2、在上述工作区下建立一个内容为空的项目(目录),假定项目名用“xkzy1”表示; 3、在上述项目内建立一个具有如下内容的、名称为“main.c”的程序主文件; #include #include "head.h" void main() { int a,b,c; printf("请输入任意三个整数:"); scanf(“%d %d %d”,&a,&b,&c); printf("求和: %d\n",Sum(a,b,c)); printf("乘积: %d\n",Product(a,b,c)); } 4、同时在上述项目内建立一个具有如下内容的、名称为“next.c”的程序次文件; int Sum(int a,int b, int c) { return a+b+c; } int Product(int a,int b, int c) { return a*b*c; } 5、同时在上述项目内建立一个具有如下内容的、名称为“head.h”的用户头文件; int Sum(int, int, int); int Product(int, int, int); 6、分别编译上述程序主文件和次文件,均无误后再进行连接,自动生成与项目名相同 的可执行文件; 7、选择编译菜单中的“执行”命令运行程序,按要求输入三个整数后,得到运行结果。 三、提交内容 程序执行时,在输出屏幕上呈现的所有内容。 四、评分标准 本次任务占形成性考核成绩的 25%
由于在程序运行时,输入的三个整数是随意的,所以运行结果因输入数据的不同而异。 只要是第2和3行的数据分别是第1行3个整数的和与积,就是正确结果。 第二次形考任务样例: 一、目的: 会使用流程控制语句和数组,编写出进行数据处理的程序,并能够上机调试和运行。 二、内容和步骤: 1、利用第一次作业所建立的工作区,或另建一个新工作区: 2、在工作区下建立一个内容为空的项目,假定项目名用“xkzy2”表示: 3、编写一个C语言程序,要求实现的功能为:从键盘上输入一行包含数字的字符串, 假定该字符串的长度不超过50,试统计出该串中每一种十进制数字字符的个数并输出。 4、在上述项目内建立一个能够实现上述功能的、名称为“main.c”的程序文件,并输 入、编译、连接和运行此C语言程序文件。 三、提交内容 你所编写出的程序,以及在程序执行时,其输出屏幕上呈现的所有内容。 四、评分标准 本次任务占形成性考核成绩的25%。 由于在程序运行时,输入的一个字符串是随意的,所以运行结果因字符串不同而异。只 要程序的逻辑正确,即能够统计和输出字符串中每个数字字符出现的次数,就是正确的运行 结果。 参考程序(谨供老师参考): #include void main( char s[51]; int i,c[10]=(0); printf("输入一个包含数字的字符串:"): scanf("%s",s) for(i=0;s[i];i++) if(s[i]>='0'&s[i]
... ... 由于在程序运行时,输入的三个整数是随意的,所以运行结果因输入数据的不同而异。 只要是第 2 和 3 行的数据分别是第 1 行 3 个整数的和与积,就是正确结果。 第二次形考任务样例: 一、 目的: 会使用流程控制语句和数组,编写出进行数据处理的程序,并能够上机调试和运行。 二、 内容和步骤: 1、利用第一次作业所建立的工作区,或另建一个新工作区; 2、在工作区下建立一个内容为空的项目,假定项目名用“xkzy2”表示; 3、编写一个 C 语言程序,要求实现的功能为:从键盘上输入一行包含数字的字符串, 假定该字符串的长度不超过 50,试统计出该串中每一种十进制数字字符的个数并输出。 4、在上述项目内建立一个能够实现上述功能的、名称为“main.c”的程序文件,并输 入、编译、连接和运行此 C 语言程序文件。 三、 提交内容 你所编写出的程序,以及在程序执行时,其输出屏幕上呈现的所有内容。 四、 评分标准 本次任务占形成性考核成绩的 25%。 由于在程序运行时,输入的一个字符串是随意的,所以运行结果因字符串不同而异。只 要程序的逻辑正确,即能够统计和输出字符串中每个数字字符出现的次数,就是正确的运行 结果。 参考程序(谨供老师参考): #include void main() { char s[51]; int i,c[10]={0}; printf("输入一个包含数字的字符串:"); scanf("%s",s); for(i=0; s[i]; i++) if(s[i]>='0' && s[i]
#include int*contrary(int a[],int n); void main() { inta[8]={2,5,8,1,4,9,6,7}: int i,*b; for(i=0;i<8;i++)printf("%d "a[i]) printf("\n") b=contrary (a,8); for(i=0;i<8;i++)printf("%d "b[i]); printf("\n"); for(i=0;i<8;i++)printf("%d "a[i]); printf("\n") 4、根据程序中的函数声明,在其程序下面编写出该函数的定义,此函数的功能是:首 先利用calloc函数动态分配一块数组空间,数组长度为n,元素类型为int,接着把参数a 数组中的元素值按相反次序复制到新得到的动态数组空间中,最后返回这个动态数组空间的 首地址。 5、编译、连接和运行上述程序,得到的运行结果应当为: 25814967 76941852 25814967 三、提交内容 你所编写的contrary函数的定义模块。 四、评分标准 本次任务占形成性考试成绩的25%。 只要程序运行结果正确就可以给满分。 参考程序(只供老师参考) int*contrary(int a[],int n) int *b=calloc(n,sizeof(int)); int i; for(i=0;i<n;i++)b[i]=a[n-1-i]; return b; 第四次形考任务样例: 一、目的: 会利用数据文件存储数据,并学会分析带有文件处理功能的程序。 二、内容和步骤: 1、打开第一次作业所建立的工作区,或另建一个新工作区:
... ... #include int* contrary(int a[], int n); void main() { int a[8]={2,5,8,1,4,9,6,7}; int i, *b; for(i=0; i<8; i++) printf("%d ",a[i]); printf("\n"); b=contrary(a,8); for(i=0; i<8; i++) printf("%d ",b[i]); printf("\n"); for(i=0; i<8; i++) printf("%d ",a[i]); printf("\n"); } 4、根据程序中的函数声明,在其程序下面编写出该函数的定义,此函数的功能是:首 先利用 calloc 函数动态分配一块数组空间,数组长度为 n,元素类型为 int,接着把参数 a 数组中的元素值按相反次序复制到新得到的动态数组空间中,最后返回这个动态数组空间的 首地址。 5、编译、连接和运行上述程序,得到的运行结果应当为: 2 5 8 1 4 9 6 7 7 6 9 4 1 8 5 2 2 5 8 1 4 9 6 7 三、 提交内容 你所编写的 contrary 函数的定义模块。 四、 评分标准 本次任务占形成性考试成绩的 25%。 只要程序运行结果正确就可以给满分。 参考程序(只供老师参考) int* contrary(int a[], int n) { int *b=calloc(n,sizeof(int)); int i; for(i=0; i<n; i++) b[i]=a[n-1-i]; return b; } 第四次形考任务样例: 一、 目的: 会利用数据文件存储数据,并学会分析带有文件处理功能的程序。 二、 内容和步骤: 1、打开第一次作业所建立的工作区,或另建一个新工作区;
2、在工作区下建立一个内容为空的项目,假定项目名用“xkzy4”表示: 3、在上述项目内建立一个名称为“main.c”的程序文件,程序内容如下: #include #include void main(void) int x; FILE*f1; /定义一个文件指针 f1=fopen("data.txt”,"w"):/在程序所在目录内建立一个空文件 if(f1=NULL){/当f1对应的文件没有建立和打开时则退出运行 printf("不能够打开文件!\n"): exit(1); } printf("从键盘向数据文件输入一批整数,直到输入-1时结束!\n"): scanf("%d”,&x): /从键盘读入一个整数 while(x!=-1){ //对每个有效地整数进行处理 int i=0,d[6]; if(x=0) /依次把整数的后续每位数字写入文件中 fputc(48+d[i],fl); fputc(C’,f1):/每个整数后写入一个空格 scanf("%d”,&x)://再从键盘读入一个整数 } fclose(f1); /关闭f1所对应的data.txt文件 } 4、修改上述程序,使得从键盘输入到数据文件中的数据内容,每隔4个整数后增加一 个换行: 提示:在itx语句后,增加一条定义变量的语句,用该变量记录从键盘上输入的整数 个数:在fputc(C',f1)语句后,增加一条条件语句,用来记数和控制输出换行符。 5、编译、连接和运行上述经修改后的程序,要求从键盘上输入10个以上整数。 三、提交内容 经修改需要添加的两条语句,以及程序运行时所建立的数据文件的内容。 四、评分标准 本次任务占形成性考试成绩的25%。 程序应添加的两条语句为:
... ... 2、在工作区下建立一个内容为空的项目,假定项目名用“xkzy4”表示; 3、在上述项目内建立一个名称为“main.c”的程序文件,程序内容如下; #include #include void main(void) { int x; FILE* f1; //定义一个文件指针 f1=fopen("data.txt","w"); //在程序所在目录内建立一个空文件 if (f1==NULL) { //当 f1 对应的文件没有建立和打开时则退出运行 printf("不能够打开文件!\n"); exit(1); } printf("从键盘向数据文件输入一批整数,直到输入-1 时结束!\n"); scanf("%d",&x); //从键盘读入一个整数 while(x!=-1) { //对每个有效地整数进行处理 int i=0, d[6]; if(x=0) //依次把整数的后续每位数字写入文件中 fputc(48+d[i], f1); fputc(' ', f1); //每个整数后写入一个空格 scanf("%d",&x); //再从键盘读入一个整数 } fclose(f1); //关闭 f1 所对应的 data.txt 文件 } 4、修改上述程序,使得从键盘输入到数据文件中的数据内容,每隔 4 个整数后增加一 个换行; 提示:在 int x 语句后,增加一条定义变量的语句,用该变量记录从键盘上输入的整数 个数;在 fputc(' ', f1)语句后,增加一条条件语句,用来记数和控制输出换行符。 5、编译、连接和运行上述经修改后的程序,要求从键盘上输入 10 个以上整数。 三、 提交内容 经修改需要添加的两条语句,以及程序运行时所建立的数据文件的内容。 四、 评分标准 本次任务占形成性考试成绩的 25%。 程序应添加的两条语句为:
int j=0; /用来记录输入数据的个数 if(+j%4=0)fputc('\n',f1);/每输出4整数后输出一个换行符 在数据文件的内容中,整数之间有一个空格,每4个整数后有一个换行。这样就是正确 的结果。 请根据答题情况酌情给分。 参考程序(只供老师参考) #include #include void main(void) int x; int j=0; /用来记录输入数据的个数 FILE*fl; /定义一个文件指针 fl=fopen("data.txt","w"); //在程序所在目录内建立一个空文件 f(f1=NULL){/当f1对应的文件没有建立和打开时则退出运行 printf("不能够打开文件!\n"): exit(1); } printf("从键盘向数据文件输入一批整数,直到输入-1时结束!八n"): scanf("%d”,&x): /从键盘读入一个整数 while(x!=-1){ //对每个有效地整数进行处理 int i=0,d[6]; if(x=0) /依次把整数的后续每位数字写入文件中 fputc(48+d[i],fl); fputc('’,f1);/每个整数后写入一个空格 if(+j%4=0)fputc(\n',f1);/每4整数后写入一个换行符 scanf("%d”,&x);/再从键盘读入一个整数 } fclose(f1); /关闭f1所对应的data.txt文件 六、终结性考核说明 考核目的:考察学生掌握C语言语法规则的程度和进行程序分析的能力
... ... int j=0; //用来记录输入数据的个数 if(++j%4==0) fputc('\n', f1); //每输出 4 整数后输出一个换行符 在数据文件的内容中,整数之间有一个空格,每 4 个整数后有一个换行。这样就是正确 的结果。 请根据答题情况酌情给分。 参考程序(只供老师参考) #include #include void main(void) { int x; int j=0; //用来记录输入数据的个数 FILE* f1; //定义一个文件指针 f1=fopen("data.txt","w"); //在程序所在目录内建立一个空文件 if (f1==NULL) { //当 f1 对应的文件没有建立和打开时则退出运行 printf("不能够打开文件!\n"); exit(1); } printf("从键盘向数据文件输入一批整数,直到输入-1 时结束!\n"); scanf("%d",&x); //从键盘读入一个整数 while(x!=-1) { //对每个有效地整数进行处理 int i=0, d[6]; if(x=0) //依次把整数的后续每位数字写入文件中 fputc(48+d[i], f1); fputc(' ', f1); //每个整数后写入一个空格 if(++j%4==0) fputc('\n', f1); //每 4 整数后写入一个换行符 scanf("%d",&x); //再从键盘读入一个整数 } fclose(f1); //关闭 f1 所对应的 data.txt 文件 } 六、终结性考核说明 考核目的:考察学生掌握 C 语言语法规则的程度和进行程序分析的能力
考核方式:终结性考核仍安排在网络考核平台上进行,由国家开放大学统一编制试题, 地方电大组织考试。 成绩比重:占课程总成绩的40%。 考试时限:60分钟(闭卷),考试日期由国家开放大学考试中心统一安排(另行通知)。 考核题型:单项选择题、填空题和分析程序题。 考核题型样例: 单项选择题(每小题3分,共30分) 1,C语言程序中的基本功能模块为()。 A.表达式 B.标识符 C.语句 D.函数 2.逻辑表达式(x>0川y=5)的相反表达式为( )。 A.x01ly!=5 D.x>0&&y==5 3.循环体至少被执行一次的循环语句为()。 A.for B.while C.do-while D.任一种循环 4.假定n的值为5,则表达式n+的值为()。 A.6B.5 C.4 D.7 5.假定一个二维数组的定义为“inta[3][4]={3,4},{2,8,6}:”,则元素a[2][0]的 值为()。 A.0 B.2 C.4 D.6 6.假定一个函数原型为“char*func(intn)”,则该函数的返回类型为()。 A.int B.int*C.char D.char* 7.假定a为一个字符数组名,则元素a[i]的指针访问方式为()。 A.a+i B.*(a+i) C.&a+i D.*a+i 8.假定有语句为“intp=calloc(10+20,sizeof(int):”,则p所指向的动态数组中 所包含的元素个数为()。 A.10 B.20 C.30 D.40 9.十进制数50表示成符合C语言规定的八进制数为 A.20 B.32 C.62 D.062 10.若要以读和写两种操作方式打开一个二进制文件,当文件不存在时返回打开失败信 息,则选用的打开方式字符串为()。 A."r+" B."ab+" C."rb+" D."wb+" 填空题(每小题3分,共30分) 1.在一个C语言程序文件中,若要包含另外一个头文件或程序文件,则应使用的预处 理命令为 2.用于从键盘上为变量输入值的标准输入函数的函数名为 3.假定一个枚举类型的定义为“enum RA{ab,ac,ad,ae};”,则ac的值为 4.double类型的长度为 5.执行“intx=45,y=l3;printf("%d”,x/y);”语句序列后得到的输出结果为 6.把表达式x=x+y转换成复合赋值表达式为 7.假定x的值为5,则执行“a=(1x?10:20);”语句后a的值为 8.假定一维字符指针数组的定义为“char*a[8]:”,则该数组占用的存储空间的字节
... ... 考核方式:终结性考核仍安排在网络考核平台上进行,由国家开放大学统一编制试题, 地方电大组织考试。 成绩比重:占课程总成绩的 40%。 考试时限:60 分钟(闭卷),考试日期由国家开放大学考试中心统一安排(另行通知)。 考核题型:单项选择题、填空题和分析程序题。 考核题型样例: 单项选择题(每小题 3 分,共 30 分) 1. C 语言程序中的基本功能模块为( )。 A. 表达式 B. 标识符 C. 语句 D. 函数 2. 逻辑表达式(x>0 || y==5)的相反表达式为( )。 A. x0 || y!=5 D. x>0 && y==5 3. 循环体至少被执行一次的循环语句为( )。 A. for B. while C. do-while D. 任一种循环 4. 假定 n 的值为 5,则表达式 n++的值为( )。 A. 6 B. 5 C. 4 D. 7 5. 假定一个二维数组的定义为“int a[3][4]={{3,4},{2,8,6}};”,则元素 a[2][0]的 值为( )。 A. 0 B. 2 C. 4 D. 6 6. 假定一个函数原型为“char* func(int n)”,则该函数的返回类型为( )。 A. int B. int* C. char D. char* 7. 假定 a 为一个字符数组名,则元素 a[i]的指针访问方式为( )。 A. a+i B. *(a+i) C. &a+i D. *a+i 8. 假定有语句为“int *p=calloc(10+20,sizeof(int));”,则 p 所指向的动态数组中 所包含的元素个数为( )。 A. 10 B. 20 C. 30 D. 40 9.十进制数 50 表示成符合 C 语言规定的八进制数为________。 A. 20 B. 32 C. 62 D. 062 10. 若要以读和写两种操作方式打开一个二进制文件,当文件不存在时返回打开失败信 息,则选用的打开方式字符串为( )。 A. "r+" B. "ab+" C. "rb+" D. "wb+" 填空题(每小题 3 分,共 30 分) 1. 在一个 C 语言程序文件中,若要包含另外一个头文件或程序文件,则应使用的预处 理命令为__________。 2. 用于从键盘上为变量输入值的标准输入函数的函数名为________。 3. 假定一个枚举类型的定义为“enum RA{ab,ac,ad,ae};”,则 ac 的值为________。 4.double 类型的长度为________。 5. 执行“int x=45,y=13;printf("%d",x/y);”语句序列后得到的输出结果为________。 6. 把表达式 x=x+y 转换成复合赋值表达式为__________。 7. 假定 x 的值为 5,则执行“a=(!x? 10: 20);”语句后 a 的值为________。 8. 假定一维字符指针数组的定义为“char* a[8];”,则该数组占用的存储空间的字节
数为 9.假定二维数组的定义为“double a[M[N):”,则数组元素的行下标取值范围在 之间。 10.空字符串的长度为 写出程序运行结果(每小题10分,共40分) 1.#include void main(){ int i,j,k=0; for(i=0:i void main(){ int x=20; int i=2; while(i void main(){ inta[8]={76,63,54,95,40,75,90,66}: int i,s=0; for(i=0:i=70&a[i] int WF(int x,int y){ x=x+y; y+=x; return x+y; } void main(){ int x=3,y=8; printf("%d\n",WF(x,y))
... ... 数为________。 9. 假定二维数组的定义为“double a[M][N];”,则数组元素的行下标取值范围在 _________之间。 10. 空字符串的长度为________。 写出程序运行结果(每小题 10 分,共 40 分) 1. #include void main() { int i,j,k=0; for(i=0; i void main() { int x=20; int i=2; while(i void main() { int a[8]={76,63,54,95,40,75,90,66}; int i, s=0; for(i=0; i=70 && a[i] int WF(int x, int y) { x=x+y; y+=x; return x+y; } void main() { int x=3, y=8; printf("%d\n",WF(x,y)); }
参考答案: 单选题(每小题3分,共30分) 1.D2.B3.C4.B5.A 6.D7.B8.C9.D10.C 填空题(每小题3分,共30分) 1.#include 2.scanf 3.1 4.8 5.3 6.x+=y7.20 8.32 9.0M-110.0 三、写出下列每个程序运行后的输出结果(每小题10分,共40分) 评分标准:根据答案正确程度酌情给分。 1.152.253.s=241 4.30
... ... 参考答案: 单选题(每小题 3 分,共 30 分) 1. D 2. B 3. C 4. B 5. A 6. D 7. B 8. C 9. D 10. C 填空题(每小题 3 分,共 30 分) 1. #include 2. scanf 3. 1 4. 8 5. 3 6. x+=y 7. 20 8. 32 9. 0~M-1 10. 0 三、写出下列每个程序运行后的输出结果(每小题 10 分,共 40 分) 评分标准:根据答案正确程度酌情给分。 1. 15 2. 2 5 3. s=241 4. 30