2012年9月份考试C语言程序设计第三次作业.doc
2012秋C程序设计试卷+答案
{ int t,d;
float p;
scanf("%d,%f",&t,&p);
switch(04)){
case 0: d=0;break;
case 1: d=2;break;
case 2:
case 3:d=5;break;
case 4:
case 5:
case 6: d=8;break;
C)有逻辑类型,但没有构造类型D)没有逻辑类型也没有构造类型9;\"'B)'\031' C)'\b' D)'\0xa5'
24、已知梯形的上底为a,下底为b,高为h,用C语言写的正确的面积公式是()。
A)1/2*(a+b)*h B)1.0/2*(a+b)*h C)1.0/2.0(a+b)h D)1.0\2*a+b*h
B)main函数可以在任何地方出现。一个C程序必须有且仅有一个main函数
C)main函数必须出现在所有函数之后。一个C程序只能有一个main函数
D)main函数出现在固定位置。一个C程序可以有多个main函数
22、C语言中,下列叙述正确的是()。
A)没有逻辑类型,但有构造类型B)既有逻辑类型也有构造类型
34、若有int s[4]={1,2,3,4};,则s[s[0]+2*s[2]-s[3]]的值是()
A)1 B)2 C)3 D)4
35、C语言程序的三种基本结构是()
A)嵌套结构、递归结构、循环结构B)递归结构、循环机构、转移结构
C)顺序结构、选择结构、循环结构D)循环结构、转移结构、顺序结构
36、若函数的调用形式如下:
C语言程序设计2012春第三套作业
C语言程序设计2012春第三套作业C语言程序设计2012春第三套作业题号:1 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:2.94内容:设有以下结构体定义:struct emproyer{char name[8];int age;char sex;}staff;则下面的叙述不正确的是( )A、struct是结构体类型的关键字B、struct emproyer是用户定义的结构体类型C、staff是用户定义的结构体类型名D、nameage和sex都是结构体成员名标准答案:C学员答案:C说明:C语言程序设计/结构体与共同体/结构体变量定义本题得分:2.94题号:2 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:2.94内容:根据下面的定义,能打印出字母“M”的语句是( )struct person{char name[9];int age;};struct person class[10]={"John",17,"Paul",19,"Mary",18,"adam",16 };A、printf("%c\n",class[3].name)B、printf("%c\n",class[3].name[l])C、printf("%c\n",class[2].name[l])D、printf("%c\n",class[2].name[0])标准答案:D学员答案:D说明:C语言程序设计/结构体与共同体/结构体变量引用本题得分:2.94题号:3 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:2.94内容:以下程序的运行结果是( )typedef union {long a[2];int b[4];char c[8];}TY; TY our; main() {printf("%d\n",sizeof(our)); }A、32B、16C、8D、24标准答案:C学员答案:C说明:C语言程序设计/结构体与共同体/共用体变量存储本题得分:2.94题号:4 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:2.94内容:下面程序的输出是( )main(){ struct cmplx{int x;int y;}cnum[2]={1,3,2,7};printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x); }A、0B、1C、3D、6标准答案:D学员答案:D说明:C语言程序设计/结构体与共同体/结构体变量初始化本题得分:2.94题号:5 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:2.94内容:以下程序的运行结果为( )#include main(){struct date{int year,month,day;}today; printf("%d\n",sizeof(struct date));}A、6B、8C、10D、12标准答案:A学员答案:A说明:C语言程序设计/结构体与共同体/结构体变量初始化本题得分:2.94题号:6 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:2.94内容:下面程序的输出是( )main(){enum team {my, your=4,his,her=his+10};printf("%d%d%d%d\n",my,your,his,her);}A、0 1 2 3B、0 4 0 10C、0 4 5 15D、l 4 5 15标准答案:C学员答案:C说明:C语言程序设计/结构体与共同体/枚举类型本题得分:2.94题号:7 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5.88内容:下面哪个表达式的值为4:A、11/3B、11.0/3C、(float)11/3D、(int)(11.0/3+0.5)标准答案:D学员答案:D说明:C语言程序设计/数据类型及运算本题得分:5.88题号:8 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5.88 内容:判断char型变量c1是否小写字母的正确表达式为A、'a'<=c1<='z'B、(c1>='a')&&(c1<='z')C、(c1>=a)&&(c1<=z)D、('a'<=c1)||('z'>=c1)标准答案:B学员答案:B说明:C语言程序设计/数据类型及运算本题得分:5.88题号:9 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5.88 内容:以下选项中可作为C语言合法整数的是A、10110BB、0386C、0XffaD、x2a2标准答案:C学员答案:C说明:C语言程序设计/数据类型及运算本题得分:5.88题号:10 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5.88 内容:设char c[5]={‘a’,’b’,’\0’,’c’,’\0’};则printf(“%s”,c);的输出是A、a''b'B、abC、abcD、“ab\0c”标准答案:B学员答案:B说明:C语言程序设计/数据类型及运算本题得分:5.88题号:11 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5.88内容:以下程序的输出结果是? #include main() { int x=020,y=0x20,z=20; printf("%d,%d,%d\n",x,y,z); }A、20,20,20B、32,16,20C、16,32,20D、20,32,20标准答案:C学员答案:C说明:C语言程序设计/数据类型及运算本题得分:5.88题号:12 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5.88内容:执行语句”x=(a=3,b=a--)后,x,a,b的值依次是A、3,3,2B、3,2,2C、3,2,3D、2,3,2标准答案:C学员答案:C说明:C语言程序设计/数据类型及运算本题得分:5.88题号:13 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5.88内容:在以下的运算符中,优先级最高的运算符是A、>B、=C、%D、&&标准答案:C学员答案:C说明:C语言程序设计/数据类型及运算本题得分:5.88题号:14 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5.88内容:使用scanf(“x=%f,y=%f”,&x,&y)要使x,y的值均为3.14,正确的输入是A、3.14,3.14B、3.14 3.14C、x=3.14,y=3.14D、x=3.14 y=3.14标准答案:C学员答案:C说明:C语言程序设计/数据类型及运算本题得分:5.88题号:15 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5.88内容:如这程序所示,如果运行时,输入18,18 ,那么b的值为多少? void main() { int a,b; scanf("%d,%o",&a,&b); b+=a; printf("%d",b); }A、36B、19C、.输入错误,b的值不确定D、18标准答案:B学员答案:B说明:C语言程序设计/数据类型及运算本题得分:5.88题号:16 题型:是非题本题分数:5.88内容:表达式1/2和1.0/2.0的值相同1、错2、对标准答案:1学员答案:1说明:C语言程序设计/数据类型及运算本题得分:5.88题号:17 题型:是非题本题分数:5.88内容:若有说明int c; 则while(c=getchar());是错误的C语句.1、错2、对标准答案:1学员答案:1说明:C语言程序设计/数据类型及运算本题得分:5.88题号:18 题型:是非题本题分数:5.88内容:整型、实型、字符型数据可以混合运算1、错2、对标准答案:2学员答案:2说明:C语言程序设计/数据类型及运算本题得分:5.88题号:19 题型:是非题本题分数:5.88内容:在计算机内部,unsigned int 和int类型的数据所占存储空间大小是一样的.1、错2、对标准答案:2学员答案:2说明:C语言程序设计/数据类型及运算本题得分:5.88题号:20 题型:是非题本题分数:5.88内容:C语言中,整型变量在所有平台上都是两个字节1、错2、对标准答案:1学员答案:1说明:C语言程序设计/数据类型及运算本题得分:5.88。
2012年9月全国计算机的等级考试二级C语言笔试试卷答案详解及解析汇报汇报
(1)下列链表中,其逻辑结构属于非线性结构的是_________。
A)双向链表B) 带链的栈 C) 二叉链表D) 循环链表(1)C 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps 中第13张说明:链表存储结构是数据的存储结构;排除链表因素,从数据逻辑结构来看,线性结构包括线性表、栈和队;非线性结构包括树形结构和图形结构,所以二叉树是树形结构,即非线性结构。
(2)设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。
现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A) 20 B) 0或35 C) 15 D) 16(2)B 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps中第100-101张关于入队(Q.rear=Q.rear+1)与退队(Q.front=Qfront+1)运算规则,此外第一次入队为Q.rear=1;第一次退队为Q.front=1。
并假定循环队列最大个数为maxsize,其相应存储空间为1: maxsize,则循环队列的入队与退队图例和运算后元素个数的确定原则如下:循环队列中的元素个数或称队列长度通用计算公式:(Q.rear-Q.front+ maxsize)% maxsize 例如,Q.rear=20,Q.front=15,则循环队列中的元素个数=(20-15+35)%35=5;Q.rear=40,Q.front=15,则循环队列中的元素个数=(40-15+35)%35=25;本题根据Q.rear=Q.front=15,maxsize=35,则循环队列中元素个数=(15-15+35)%35=0或35;(3)下列关于栈的叙述中,正确的是A) 栈底元素一定是最后入栈的元素B) 栈操作遵循先进后出的原则C) 栈顶元素一定是最先入栈的元素D) 以上三种说法都不对(3)B 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps中第63张幻灯片说明:栈元素入、退原则:先进后出(FILO)或后进先出(LIFO)。
2012年9月份全国计算机等级考试三级c语言 三级网络技术题库
printf("%d ",xx[m]); printf("\n"); readwriteDat(); } void readwriteDat() { int m,n,xx[1000], i; FILE *rf,*wf;
rf=fopen("in.dat","r"); wf=fopen("out.dat","w"); for(i=0;i<10;i++){ fscanf(rf,"%d %d",&m,&n); num(m,n,xx); for(m=0;m<n;m++)fprintf(wf,"%d ",xx[m]); fprintf(wf,"\n"); } fclose(rf); fclose(wf); } ☆ 题目2 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把 这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位 数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存入数组b中。最后main( )函数调用 写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到 OUT.DAT文件中。 注意:部分源程序存在文件prog1.c中。 程序中已定义数组:a[200],b[200],已定义变量:cnt 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数 readDat()和写函数writeDat()的内容。 #include <stdio.h> #define MAX 200 int a[MAX], b[MAX], cnt = 0 ;
C语言第三次作业答案
3.4 switch语句
switch结构是多分支选择结构,根据表达式值的 不同,程序转入不同的模块执行 • switch 结构的语法形式 switch (表达式) { case 常量表达式 1: 语句 1; case 常量表达式 2: 语句 2; …… case 常量表达式 n: 语句 n ; default: 语句 n+1; }
第四章
语句、程序控制结构(顺序、选择、循环)
4.1 C语句总述
C语句一般以分号“;”为结束标志,可分为以下六 类: 1. 表达式语句 表达式语句由表达式加上分号“ ; ”组成。如: x*=8 ; /* 赋值表达式语句 */ a=5, b=7,c=16 ; /* 逗号表达式语句 */ x>y ? x : y ; /* 条件表达式语句 */ --a&&++b&&++c; /* 逻辑表达式语句 */ i++ ; /* 算术表达式语句 */
4.2 顺序结构
C语言中的顺序结构主要由说明语句、表达式语句、 空语句以及复合语句组成。在顺序结构程序中,各语 按照位置的先后次序顺序执行的,且 句(或命令)是按照位置的先后次序顺序执行的 按照位置的先后次序顺序执行的 每个语句都会被执行到。 例:输入两个整数,编程完成两数的交换。 main() { int a, b, t; scanf("%d %d", &a, &b); t=a; a=b; b=t; printf("%d %d", a, b); } main() { int a, b; scanf("%d %d", &a, &b); a=a+b; b=a-b; a=a-b; printf("%d %d\n", a, b); }
2013年9月份考试C语言程序设计第三次作业
2013年9月份考试C语言程序设计第三次作业一、填空题(本大题共40分,共 20 小题,每小题 2 分)1. 编写C语言程序四个步骤是: ______ , ______ , ______ , ______ .2. 源程序的基本单位是 ______3. 函数体一般包括 ______ 部分和 ______ 部分4. C语言提供的预处理功能有 ______ 、 ______ 、 ______ 等三种.5. 在C语言中(以16位PC为例),一个float类型的数据在内存中所占的字节数是 ______ ;一个double类型的数据在内存中所占的字节数是 ______ . 6. C语言中变量和函数的存储方式有四种,分别是: ______ , ______ ,______ , ______ .7. 写出下面表达式运算后Val 的值,假设Val = 10 ,Num = 5.Val 和 Num 都定义为整型变量. (1) ______ ,(2) ______ ,(3) ______ (1) Val += Val; (2) Val *= Num + Val; (3) Val += Val -= Val *= Val;8. 下面程序段的运行结果是 ______ .Char s[80],*sp="HELLO!";sp=strcpy(s,sp);s[0]=''h'';puts(sp);9. 下列程序的输出结果是 ______main(){int a=-1,b=4,k;k=(a++<0)&&(!(b--<=0));printf("%d%d%d\n",k,a,b) ;}10. 当a的值分别为:1,2,3时,程序的结果是 ______#include main(){int a;printf("Please enter a=");scanf("%d",&a); switch(a){case 1: printf("*");break;default: printf("#");case 2: printf("-") ;}}11. 下面程序段的运行结果是 ______char s[80],*sp="you";sp=strcpy(s,sp);s[0]=''Y'';puts(sp);12. 以下程序的执行结果是: ______ .#include main(){int a,b,c,d,x;a=c=0; b=1;d=20; if(a) d=d-10;else if(!b) if(!c) x=15;else x=25;printf("d=%d\n",d);}13. 写出下面表达式运算后Val 的值,假设Val = 12 ,Num = 7.Val 和 Num 都定义为整型变量. ______ Val += Val; ______ Val *= Val; ______ Val *= Num + Val; ______ Val %= (Num %= 4); ______ Val /= Val + Val; ______ Val += Val -= Val *= Val;14. 若a是 int型变量,则执行下面表达式后a的值是 ______ . a=25/3%315. 输入:teacher时,下列程序的输出结果是 ______#include main(){char c ;int v0=0,v1=0;do switch(c=getchar()){case ''a'': case ''b'': case ''c'':v0++;default: 2:v1++;}while(c!=''\n'');printf("v0=%d,v1=%d\n",v0,v1);}16. 下列程序的输出结果是 ______main(){int a=-1,b=4,k;k=(++a<0)&&(!(b--<=0));printf("%d%d%d\n",k,a,b) ;}17. 下列程序的输出结果是 ______main(){int x=1,a=0,b=0;switch(x){case 0: b++;case 1: a++;case 2: a++; b++ ;}printf("a=%d,b=%d\n",a,b);}18. 以下程序的运行结果是 ______int a=3,b=5;max(int a,int b){int c;c=a>b?a:b;return(c);}main(){int a=8;printf("%d",max(a,b)):}19. 当a的值分别为:1,2,3时,程序的结果是 ______ .#include main(){int a;printf("Please enter a=");scanf("%d",&a);switch(a){case 1: printf("a");break;default: printf("b");case 2: printf("c") ;}}20. 下列程序的输出结果是 ______ .#include main(){int a=-1,b=2,k;k=(++a<0)&&(!(b--<=0));printf("%d%d%d\n",k,a,b) ;}二、程序阅读题(本大题共60分,共 10 小题,每小题 6 分)1. 表示"整数x的绝对值大于5"时值为"真"的C语言表达式是().2. 已知字符A的ASCII码值为65,以下语句的输出结果是().char ch=''B'';printf("%c %d\n",ch,ch);3. 以下程序运行时,若从键盘输入:10 20 30<回车>,输出的结果是(). #include main(){int i=0,j=0,k=0;scanf("%d%*d%d",&i,&j,&k);printf("%d%d%d\n",i,j,k);}4. 以下程序运行后的输出结果是().void swap(int x,int y){int t;t=x;x=y;y=t;printf("%d %d ",x,y);}main(){int a=3,b=4;swap(a,b);printf("%d %d",a,b);}5. 以下程序运行后的输出结果是().main(){char m;m=''B''+32;printf("%c\n",m);}6. 以下程序运行后的输出结果是().main(){int a[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};int i=0,j=0,s=0;while(i++<4) { if(i==2||i==4) continue;j=0;do{ s+= a[i][j]; j++;}while(j<4);}printf("%d\n",s);}7. 有以下语句段int n1=10,n2=20;printf("()",n1,n2);要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空. n1=10 n2=208. 以下程序运行后的输出结果是()main (){char a[]="Language",b[]="Programe";char *p1,*p2; int k;p1=a;p2=b;for(k=0;k<=7;k++) if(*(p1+k)==*(p2+k)) printf("%c",*(p1+k));}9. 求ax*x+bx+c=0的方程的根.a,b,c由键盘输入,设b -4ac>0.10. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.答案:一、填空题(40分,共 20 题,每小题 2 分)1.参考答案:编辑编译连接运行解题方案:基本知识、记忆评分标准:每答对1空得2分2.参考答案:函数解题方案:基本知识点、记忆评分标准:每答对1空得2分3.参考答案:声明执行解题方案:函数体一般包括声明部分和执行部分评分标准:每答对1空得2分4.参考答案:宏定义文件包含条件编译解题方案:基本概念,记忆评分标准:每答对1空得2分5.参考答案:4 8解题方案:Float 4字节 Double 8字节评分标准:每答对1空得2分6.参考答案:自动(auto)静态(static)寄存器(register)外部的(extern)解题方案:4种存储方式是自动(auto)、静态(static)、寄存器(register)、外部的(extern)评分标准:每答对1空得2分7.参考答案:20 150 0解题方案:Val += Val, Val=20 等价于Val *= (Num + Val),Val=150 等价于Val *= Val, Val -= Val, Val += Val, Val=0评分标准:每答对1空得2分8.参考答案:hELLO!解题方案:"HELLO!"字符串常量自动添加结束符’\0’,所以sp=strcpy(s,sp); s="triz",且sp指向s所以输出hELLO!评分标准:每答对1空得2分9.参考答案:103解题方案:(a++<0)&&(!(b--<=0))等价于1&&(!0) 所以k=1,a=0,b=3评分标准:每答对1空得2分10.参考答案:*-#-解题方案:执行case 1,输出* 执行case 2,输出执行default,输出#-评分标准:每答对1空得2分11.参考答案:Y ou解题方案:"you "字符串常量自动添加结束符’\0’,所以sp=strcpy(s,sp); s="you ",且sp指向s所以输出Y ou评分标准:每答对1空得2分12.参考答案:d=20解题方案:Else和最近的if配对,所以 if(a)[假] d=d-10; else if(!b)[假] if(!c)x=15; else x=25; 从而,赋值语句都没有执行,所以d=20评分标准:每答对1空得2分13.参考答案:24 144 228 0 0 0解题方案:(1)Val+=Val, Val = 24 (2)val*=Val, Val = 144 (3) 等价Val*=(Num+Val), Val=12*(12+7)=228 (4) Val %= (Num %= 4); Val%=(Num%4)=12%(7%4)=12%3=0 (5 )等价Val /=( Val + Val) 12/=(12+12) Val=0 (6)等价Val *= Val,Val -= Val,Val *= Val+=Val,则Val=(144, 0, 0, 0)=0评分标准:每答对1空得2分14.参考答案:2解题方案:/优先即高于%,等价于(25/3)%3=8%3=2评分标准:每答对1空得2分15.参考答案:v0=2,v1=8解题方案:Case中没有break,因此?v0增加2次,v1增加8次,所以v0=2,v1=8评分标准:每答对1空得2分16.参考答案:004解题方案:++a<0 即 0<0为假,不执行&&的后的表达式,所以k=0,a=0,b=4评分标准:每答对1空得2分17.参考答案:a=2,b=1解题方案:执行case 1,case中没有break,执行完该switch语句,所以a=2,b=1评分标准:每答对1空得2分18.参考答案:8解题方案:对于全局变量和局部变量同名时,在程序局部变量作用域,局部变量覆盖全局变量,所以max(a,b)等价于max(8,5)评分标准:每答对1空得2分19.参考答案:acbc解题方案:Case 1 输出a Case 2 输出c Case 3 输出bc评分标准:每答对1空得2分20.参考答案:002解题方案:(++a<0)&&(!(b--<=0))即(0<0)&&( !(b--<=0)),即0&&( !(b--<=0)),所以( !(b--<=0))不执行.K=0,a=0,b=2评分标准:每答对1空得2分二、程序阅读题(60分,共 10 题,每小题 6 分)1.参考答案:x>5||x5 或 abs(x)>5 或 (x>5)||(x5)解题方案:要使整数x的绝对值大于5,则x大于5或x小于-5,用C语言表示即为:x>5||x<-或者(x>5)||(x<-5).评分标准:回答正确得5分,错误不得分2.参考答案:B 66解题方案:printf函数的一般格式为 printf(格式控制,输出表列) "格式控制"是用双引号括起来的字符串,也称"转换控制字符串". 1、d格式符,用来输出十进制整数.2、c格式符,用来输出一个字符. 已知字符A的ASCII码值为65,则字符B的ASCII码值为66,所以本题输出结果为:B 66评分标准:回答正确得5分,错误不得分3.参考答案:10300解题方案:在scanf格式控制符中,如果在%后有一个"*"附加说明符,表示跳过它指定的列数.本题中""%d%*d%d""表示将10赋给i,%*d表示读入整数但不赋给任何变量,然后再读入整数30赋给变量j,那么变量k并没有重新赋值,仍为初始值0.所以输出的结果为10300.评分标准:回答正确得5分,错误不得分4.参考答案:4 3 3 4解题方案:用变量作为函数的实参时,属单向传递,即"值传送"方式,此种函数参数的传递方式只能由实参传给形参,不能由形参传回来给实参.本题中,变量a,b的值传递给了函数swap的形参x,y,并在函数中对x,y的值进行了交换,所以函数swap中输出的x,y的值为4,3,但此时实参a,b的值并没有随形参x,y的改变而改变,所以在主函数中输出的a,b的值为3,4.评分标准:回答正确得5分,错误不得分5.参考答案:b解题方案:考察的主要知识点是不同类型数据间的转换与运算.本题所要实现的功能是把大写字母转换为小写字母,在C中,小写字母的ASCII码值比大写字母的ASCII码值大32.评分标准:回答正确得5分,错误不得分6.参考答案:92解题方案:本题考查的是循环的嵌套. 解题过程: (1)当i=0时执行while 1)i<4,i=1 2)因为i=1,所以不执行continue 3)j赋值0 4)执行do while①s=0+a[1][0]=5,j=1,因为j<4,所以继续循环②s=5+a[1][1]=5+6=11,j=2,因为j<4,所以继续循环③s=11+a[1][2]=11+7=18,j=3,因为j<4,所以继续循环④s=18+a[1][3]=18+8,j=26,因为j=4,所以终止循环(2)当i=1时,i<4执行while,i=2,因为i=2,所以执行continue,结束本次while循环(3)当i=2时,i<4执行while,i=3 1)因为i=3,所以不执行continue 2)j赋值0 3)执行do while ①s=26 ②s=26+a[3][0]=26+15=41,j=1,因为j<4,所以继续循环③s=41+a[3][1]=41+16=57,j=2,因为j<4,所以继续循环④s=57+a[3][2]=57+17=74,j=3,因为j<4,所以继续循环⑤s=74+a[3][3]=74+18=92,j=4,因为j=4,所以终止循环(4)i=3时,i<4执行while,i=4因为i=4,所以执行continue,结束本次循环(5)当i=4时,i=4结束while循环(6)结果输出s=92.评分标准:回答正确得5分,错误不得分7.参考答案:n1=%d\nn2=%d解题方案:printf函数的一般格式为 printf(格式控制,输出表列) "格式控制"是用双引号括起来的字符串,也称"转换控制字符串",它包括两种信息: 1、格式说明,由"%"和格式字符组成,如%d,%f等.它的作用是将输出的数据转换为指定的格式输出.格式说明总是由"%"字符开始的. 2、普通字符,即需要原样输出的字符. 结果要求输出为: n1=10 n2=20 所以格式控制中需含有"n1="部分,又因为要求按两行输出,需含有回车符:\n.评分标准:回答正确得5分,错误不得分8.参考答案:gae解题方案:解题过程: (1)当k=0时,*(p1+0)=''L'',*(p2+0)=''P'',L!=P,所以没有输出(2)当k=1时,*(p1+1)=''a'',*(p2+1)=''r'',a!=r,所以没有输出(3)当k=2时,*(p1+2)=''n'',*(p2+2)=''o'',n!=o,所以没有输出(4)当k=3时,*(p1+3)=''g'',*(p2+3)=''g'',g==g,所以输出g (5)当k=4时,*(p1+4)=''u'',*(p2+4)=''r'',u!=r,所以没有输出(6)当k=5时,*(p1+5)=''a'',*(p2+5)=''a'',a==a,所以输出a (7)当k=6时,*(p1+6)=''g'',*(p2+6)=''m'',g!=m,所以没有输出(8)当k=7时,*(p1+7)=''e'',*(p2+7)=''e'',e==e,所以输出e (9)当k=8时结束循环(10)输出结果为:gae.评分标准:回答正确得5分,错误不得分9.参考答案:#include main(){float a,b,c,disc,x1,x2,p,q;scanf("a=%f,b=%f,c=%f",&a,&b,&c);disc=b*b-4*a*c; p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q; x2=p-q;printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2);}解题方案:一元二次函数的球根公式是(-b+sqrt(b*b-4*a*c))/2a, (-b-sqrt(b*b-4*a*c))/2a评分标准:程序机构3,算法5,其他210.参考答案:main(){int n,t,number=20;float a=2,b=1,s=0;for(n=1;n<=number;n++){s=s+a/b;t=a;a=a+b;b=t;}printf("sum is %9.6f\n",s);}解题方案:分子的规律是2,3,5,8,13… 分母的规律是1,2,3,5,8,13… 可知第n项f[n]的值为f[n-1]+f[n-2]评分标准:程序机构3,算法5,其他2[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!]11 / 11。
2012年9月真题库
第一套1.程序填空程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。
函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
第一处struct student t;第二处for(i=0;i<n-1;i++)第三处if(strcmp(a[i].name,a[j].name)>0)2程序修改给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向上顺序移动。
/**found**/q=p+i;/**found**/while(q>p)3程序设计学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
int fun(STREC *a,STREC *b,int l,int h){int i,j=0;for(i=0;i<N;i++)if((a[i].s>=1&&a[i].s<=h)b[j++]=a[i];return j;}第二套1.程序填空给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。
函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。
第一处free(q);第二处q=p->next;第三处q=q->next;2. 程序修改给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。
/**found**/p=j;/**found**/p=i;3. 程序设计请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n 返回这些数的个数。
C语言第三次大作业
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★C语言第三次大作业班级:机电***姓名:*******学号:*********★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★题目一:利用数组编写一个简单的成绩管理系统,要求有效依据至少150条,利用程序设计模块化思想,自定义函数不少于5个。
其他要求:1、班级的人数由用户键盘输入;2、录入学生学号和考试成绩3、数据分析功能包括计算课程总分和平均分、按成绩由高到低排出成绩表、按学号由小到大排出成绩表、可按学号查询学生成绩及排名、按优秀(90~100),良好(80~89),中等(70~79),及格(60~69),不及格(<60)5个类别统计成绩并计算百分比和输出每个学生的学号、成绩及课程总分和平均分。
1、题意及算法分析根据题目要求,结合程序设计模块化思想,可自定义7~9个函数,分别实现相应的功能。
根据题目要求可定义学号数组为整形数组,平均分、成绩数组为float 类型;定义宏常量N,使得数组足够大;成绩和学号的排序可采用交换法、选择法、插入排序、冒泡法、快速排序法等,本题采用交换法排序,在采用交换法排序的时候可以通过定义一个标志变量(中间变量)实现;通过学号查找成绩可通过线性查找(顺序查找)或折半查找,本题采用的是顺序查找,采用顺序查找可以用for循环语句实现,查找次数最多为总人数n。
统计等级时,利用整数除法(区别于实数除法),结合switch语句和计数控制循环语句即可得到不同等级所占百分比。
菜单功能选择是可使用switch-case条件结构。
要注意的是数组的下标从0开始;只能逐个引用数组元素,不能一次引用整个数组;数组做函数形式参数时,数组的大小可以不出现在数组名后面的方括号内;被调用函数的实际参数用数组名或数组定义式。
2、NS流程图传统流程图:3、调试及改错&”1、缺少取地址运算符“后会情不自禁的执行程序,一执行便弹出如下对写好程序后,解决ERROR牰湩晴尨“long number[],float score[])函数中话框,回过头看程序,发现int read(缺的语句中出现一个明显的低级错误,:); ret=scanf(%d,n);”请输入学生总人数”。
2012 年9 月笔试真卷及答案详解
2012 年9 月笔试真卷及答案详解第1 页(共12 页)2012年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90 分钟,满分100 分)一、选择题((1)—(10)、(21)—(40)每题2 分,(11)—(20)每题1 分,共70 分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)下列链表中,其逻辑结构属于非线性结构的是A)双向链表B)带链的栈C)二叉链表D)循环链表(2)设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。
现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A)20 B)0 或35C)15 D)16(3)下列关于栈的叙述中,正确的是A)栈底元素一定是最后入栈的元素B)栈操作遵循先进后出的原则C)栈顶元素一定是最先入栈的元素D)以上三种说法都不对(4)在关系数据库中,用来表示实体间联系的是A)网状结构B)树状结构C)属性D)二维表(5)公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。
则实体部门和职员间的联系是A)1:m联系B)m:n 联系C)1:1 联系D)m:1 联系(6)有两个关系R和S如下:R SA B C A B Ca 1 2 c 3 1b 2 1c 3 1则由关系R得到关系S的操作是A)自然连接B)并C)选择D)投影(7)数据字典(DD)所定义的对象都包含于A)软件结构图B)方框图C)数据流图(DFD图)D)程序流程图(8)软件需求规格说明书的作用不包括A)软件设计的依据B)软件可行性研究的依据C)软件验收的依据D)用户与开发人员对软件要做什么的共同理解(9)下面属于黑盒测试方法的是A)边界值分析B)路径覆盖C)语句覆盖D)逻辑覆盖(10)下面不属于软件设计阶段任务的是A)制定软件确认测试计划B)数据库设计C)软件总体设计D)算法设计2012 年9 月笔试真卷及答案详解第2 页(共12 页)(11)以下叙述中正确的是A)在C语言程序中,main 函数必须放在其他函数的最前面B)每个后缀为.C的C语言源程序都可以单独进行编译C)在C语言程序中,只有main 函数才可单独进行编译D)每个后缀为.C的C语言源程序都应该包含一个main函数(12)C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是A)预定义标识符(如库函数中的函数名)可用作用户标识符,但失去原有含义B)用户标识符可以由字母和数字任意顺序组成C)在标识符中大写字母和小写字母被认为是相同的字符D)关键字可用作用户标识符,但失去原有含义(13)以下选项中表示一个合法的常量是(说明:符号□表示空格)A)9□9□9 B)0Xab C)123E0.2 D)2.7e(14)C语言主要是借助以下哪个功能来实现程序模块化A)定义函数B)定义常量和外部变量C)三种基本结构语句D)丰富的数据类型(15)以下叙述中错误的是A)非零的数值型常量有正值和负值的区分B)常量是在程序运行过程中值不能被改变的量C)定义符号常量必须用类型名来设定常量的类型D)用符号名表示的常量叫符号常量(16)若有定义和语句:int a,b; scanf("%d,%d",&a,&b); 以下选项中的输入数据,不能把值3 赋给变量a、5 赋给变量b 的是A)3,5, B)3,5,4 C)3 ,5 D)3,5(17)C语言中char 类型数据占字节数为A)3 B)4 C)1 D)2(18)下列关系表达式中,结果为“假”的是A)(3+4)>6 B)(3!=4)>2 C)3<=4||3 D)(3<4)==1(19)若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch 语句是A)switch(a+9) B)switch a*b{ case c1:y=a-b; { case 10:x=a+b;case c1:y=a+b; default :y=a-b;} }C)switch(a+b) D)switch (a*b+b*b){ case1 : case3:y=a+b;break; { default :break;case0 : case4:y=a-b; case 3:y=a+b; break;} case 2:y=a-b; break;}(20)有以下程序# include <stdio.h>main(){int a=-2,b=0;while(a++&&++b);printf("%d,%d\n",a,b);}程序运行后的输出结果是A)1,3 B)0,2 C)0,3 D)1,2(21)设有定义:int x=0,*p;,立即执行以下语句,正确的语句是A)p=x; B)*p=x; C)p=NULL; D)*p=NULL;2012 年9 月笔试真卷及答案详解第3 页(共12 页)(22)下列叙述中正确的是A)可以用关系运算符比较字符串的大小B)空字符串不占用内存,其内存空间大小是0C)两个连续的单引号是合法的字符常量D)两个连续的双引号是合法的字符串常量(23)有以下程序#include <stdio.h>main(){char a='H';a=(a>='A'&&a<='Z')?(a-'A'+'a'):a;printf("%c\n",a);}程序运行后的输出结果是A)A B)a C)H D)h(24)有以下程序#include <stdio.h>int f(int x);main(){ int a,b=0;for(a=0;a<3;a++){b=b+f(a);putchar('A'+b);}}int f(int x){return x*x+1;}程序运行后的输出结果是A)ABE B)BDI C)BCF D)BCD(25)设有定义:int x[2][3];,则以下关于二维数组x 的叙述错误的是A)x[0]可看作是由3 个整型元素组成的一维数组B)x[0]和x[1]是数组名,分别代表不同的地址常量C)数组x 包含6 个元素D)可以用语句x[0]=0;为数组所有元素赋初值0(26)设变量p 是指针变量,语句p=NULL;,是给指针变量赋NULL 值,它等价于A)p=""; B)p='0'; C)p=0; D)p='';(27)有以下程序#include <stdio.h>main(){ int a[]={10,20,30,40},*p=a,i;for(i=0;i<=3;i++){a[i]=*p;p++;}printf("%d\n",a[2]);}A)30 B)40 C)10 D)20(28)有以下程序#include <stdio.h>#define N 3void fun(int a[][N],int b[]){ int i,j;for(i=0;i<N;i++)2012 年9 月笔试真卷及答案详解第4 页(共12 页){ b[i]=a[i][0];for(j=1;j<N;j++)if(b[i]<a[i][j]) b[i]=a[i][j];}}main(){ int x[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;fun(x,y);for(i=0;i<N;i++) printf("%d,",y[i]);printf("\n");}A)2,4,8 B)3,6,9 C)3,5,7 D)1,3,5(29)有以下程序(strcpy 为字符串复制函数,strcat 为字符串连接函数)#include <stdio.h>#include <string.h>main(){ char a[10]="abc",b[10]="012",c[10]="xyz";strcpy(a+1,b+2);puts(strcat(a,c+1));}程序运行后的输出结果是A)a12xyz B)12yz C)a2yz D)bc2yz(30)以下选项中,合法的是A)char str3[]={'d', 'e', 'b', 'u', 'g', '\0'};B)char str4; str4="hello world";C)char name[10]; name="china";D)char str1[5]= "pass",str2[6]; str2=str1;(31)有以下程序#include <stdio.h>main(){ char *s="12134";int k=0,a=0;while(s[k+1]!='\0'){ k++;if(k%2==0){a=a+(s[k]-'0'+1);continue;}a=a+(s[k]-'0');}printf("k=%d a=%d\n",k,a);}程序运行后的输出结果是A)k=6 a=11 B)k=3 a=14 C)k=4 a=12 D)k=5 a=15 (32)有以下程序#include <stdio.h>main(){ char a[5][10]={"one","two","three","four","five"};int i,j;char t;for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(a[i][0]>a[j][0])2012 年9 月笔试真卷及答案详解第5 页(共12 页){ t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}puts(a[1]);}程序运行后的输出结果是A)fwo B)fix C)two D)owo(33)有以下程序#include <stdio.h>int a=1,b=2;void fun1(int a, int b){ printf(“%d%d”,a,b); }void fun2( ){ a=3; b=4; }main(){ fun1(5,6); fun2();printf("%d%d\n",a,b);}程序运行后的输出结果是A)1 2 5 6 B)5 6 3 4 C)5 6 1 2 D)3 4 5 6(34)有以下程序#include <stdio.h>func(int n){ static int num=1;num=num+n;printf("%d",num);}void main(){ func(3);func(4);printf("\n"); }程序运行后的输出结果是A)4 8 B)3 4 C)3 5 D)4 5(35)有以下程序#include <stdio.h>#include <stdlib.h>fun(int *p1,int *p2,int *s){ s=(int*)malloc(sizeof(int));*s=*p1+*p2;free(s);}void main(){ int a=1,b=40,*q=&a;fun(&a,&b,q);printf("%d\n",*q);}程序运行后的输出结果是A)42 B)0 C)1 D)41(36)有以下程序#include <stdio.h>struct STU{char name[9];char sex;int score[2];};void f(struct STU a[]){ struct STU b={"zhao",'m',85,90};a[1]=b;2012 年9 月笔试真卷及答案详解第6 页(共12 页)}main(){ struct STU c[2]={{"Qian",'f',95,92},{"Sun",'m',98,99}};f(c);printf("%s,%c,%d,%d,",c[0].name,c[0].sex,c[0].score[0],c[0].score[1]); printf("%s,%c,%d,%d\n,",c[1].name,c[1].sex,c[1].score[0],c[1].score[1]); }程序运行后的输出结果是A)Zhao,m,85,90,Sun,m,98,99 B)Zhao,m,85,90, Qian,f,95,92C)Qian,f,95,92,Sun,m,98,99 D)Qian,f,95,92,Zhao,m,85,90(37)以下叙述中错误的是A)可以用trpedef 说明的新类型名来定义变量B)trpedef 说明的新类型名必须使用大写字母,否则会出编译错误C)用trpedef 可以为基本数据类型说明一个新名称D)用trpedef 说明新类型的作用是用一个新的标识符来代表已存在的类型名(38)以下叙述中错误的是A)函数的返回值类型不能是结构体类型,只能是简单类型B)函数可以返回指向结构体变量的指针C)可以通过指向结构体变量的指针访问所指结构体变量的任何成员D)只要类型相同,结构体变量之间可以整体赋值(39)若有定义语句int b=2; 则表达式(b<<2)/(3||b)的值是A)4 B)8 C)0 D)2(40)有以下程序#include <stdio.h>main(){ FILE *fp;int i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w+");for(i=0;i<6;i++) fprintf(fp,"%d\n",a[i]);rewind(fp);for(i=0;i<6;i++) fscanf(fp,"%d",&a[5-i]);fclose(fp);for(i=0;i<6;i++) printf("%d",a[i]);}程序运行后的输出结果是A)4,5,6,1,2,3 B)1,2,3,3,2,1 C)1,2,3,4,5,6 D)6,5,4,3,2,1二、填空题(每空2 分,共30 分)请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。
C语言程序设计-第三次作业的部分答案及分析
三、写出下列每个程序运行后的输出结果1. #include<stdio.h>void SB(char ch) {switch(ch) {case 'A': case 'a'://相当于if(ch==’A’||ch==’a’)printf("WW "); break;case 'B': case 'b':printf("GG "); break;case 'C': case 'c':printf("PP "); break;default:printf("BB "); break;}}void main() {char a1='b',a2='C',a3='f';SB(a1);SB(a2);SB(a3);SB('A');//4次调用SB,实际参数分别为b、C、f和Aprintf("\n");}GG PP BB WW2. #include<stdio.h>#include<stdlib.h>double SD(int a, int b, char op) {double x;switch(op) {case '+': x=a+b; break;case '-': x=a-b; break;case '*': x=a*b; break;case '/': if(b) x=(double)a/b;else exit(1);break;default: {printf("运算符错!\n");exit(1);}}return x;}void main() {int x=20,y=8;printf("%3.2lf ",SD(x,y,'-'));//以浮点形式输出x和y 的差printf("%3.2lf ",SD(x,y,'*'));//以浮点形式输出x和y 的积printf("%3.2lf\n",SD(x+y,y,'/')); //以浮点形式输出x+y和y 的商}//小数点后保留2位。
Visual Basic程序设计本科网上第三次作业答案
Visual Basic程序设计_0003试卷总分:100测试时间:100单项选择题判断题阅读理解一、单项选择题(共10 道试题,共40 分。
)1、Visual Basic6、0中提供了3种不同得调试窗口,在以下可选项中,不属于该范围得就是( )。
A、代码窗口B、立即窗口C、本地窗口D、监视窗口2、打开二进制文件得正确语句就是()。
A、 Open<文件名>For BinaryAs [#]<文件>B、 Put #<文件号>,[位置],变量名C、Get #<文件号>,[位置],变量名D、 Close[[[#]<文件号>],[[#]<文件号>]]3、Dim I As Integer,则运行时变量I得初始值就是()。
A、 1B、 0C、 1D、空值4、使用ADO数据模型时,使Recordset与 Connection对象建立连接得属性就是( )。
A、 mandTypeB、OpenC、 ActiveConnectionD、 Execute5、下列( )对象在运行时一定就是不可见得。
A、 LineB、 TimerC、ShapeD、 Frame6、当一个工程中含有多个窗体时,其中得启动窗体就是()。
A、设计时创建得第一个窗体B、资源管理器中得第一个窗体C、最后一个添加得窗体D、在“工程属性”对话框中指定得窗体7、下列关于变量得说法不正确得就是( )。
A、局部变量在声明它得过程执行完毕后就被释放了B、局部变量得作用域仅限于声明它得过程C、静态局部变量就是在过程中用Static语句声明得D、局部变量就是指那些在过程中用Dim语句或Static语句声明得变量8、VB集成开发环境中用于编写程序代码得窗口就是( )。
A、工程资源管理器B、属性窗口D、代码编辑器窗口9、形状控件所显示得图形不可能就是( )。
A、圆B、椭圆C、等边三角形D、圆角正方形10、在设计应用程序时,可以查瞧到应用程序工程中所有组成部分得窗口就是()。
2012级C语言程序设计(专科)试卷A及答案
2012级C语言程序设计(专科)试卷A及答案2012—2013学年度第二学期期末考试《C语言程序设计》试题A参考答案及评分标准2012级非计算机专业专科(理论和上机各26学时) 90分钟2013年6月一、单项选择题(每题2分,共40分)01~10 ABCDD AABCD 11~20 ABBCD ABCCD二、程序阅读填空题(共 10空,每空2分,共20分)(注意:解答本题时请一定注意输出的格式和符号,格式或符号、空格数错则在空不得分)1、8,162、1,00,13、34、15、16、137、i=00000008,j=(7个空格) 98、x=(4个空格)123.46,x=(3个空格)1.2e+029、97\b 10、x=’61’,’141’三、程序改错题(本大题共2小题,每小题5分,共10分)1、第一处:去掉while(r=m%n);后面的分号(2分)第二处:将printf("最大公约数是%d\n",m);中的m改为n(2分)找对二个错处加1分。
2、第一处:int fib(NUM)=(1,1);改为int fib[NUM]={1,1}; (2分)第二处:fib[3]=fib[2]+fib[1];改为fib[i]=fib[i-2]+fib[i-1]; (2分)找对二个错处1分四、编程题(第1小题每题12分,第2小题18分,共30分)1、程序如下:#include "stdio.h"main()int i;unsigned int n;printf("请输入想序输出的整数(负数会按无符号数转换):");scanf("%d",&n);printf("数%u的序数为:",n);while(n>0){printf("%d",n%10);n/=10;}printf("\n");}2、程序如下:#include "stdio.h"#include "math.h"main(){float x1,x2,x0;float f(float x);do{printf("请输入求值区间的上、下界(用空格分隔):");scanf("%f%f",&x1,&x2);if(f(x1)*f(x2)>0)printf("在【%f,%f】此区间内无奇数个解,请重新输入:\n",x1,x2);}while(f(x1)*f(x2)>0);dox0=(x1+x2)/2;if(f(x1)*f(x0)>0)x1=x0;elsex2=x0;}while(fabs(x1-x2)>1e-5);printf("一元方程的一个解是%f",(x1+x2)/2);}2012—2013学年度第二学期期末考试《C语言程序设计》试题(A卷)2012级非计算机专业专科(理论和上机各26学时) 90分钟2013年6月一、选择题(每空2分,共40分)1、对任何C语句必须以结束。
C语言程序设计第三次作业
C语⾔程序设计第三次作业C语⾔程序设计第三次作业(⼀)改错题计算f(x)的值:输⼊实数x,计算并输出下列分段函数f(x)的值,输出时保留1位⼩数。
1.源程序:2.错误及改正。
错误信息1:错误原因:中括号内内容未加分号。
改正⽅法:在x后加分号。
错误信息2:错误原因:if语句后的括号后不应该有分号。
改正⽅法:将括号后分号去掉。
错误信息3:错误原因:else后不应加括号。
改正⽅法:将括号及以内内容去掉。
错误信息4:错误原因: x,y前没有逗号。
改正⽅法:在下x,y前加上逗号。
错误信息5:同错误信息4反映情况⼀。
错误原因:经检查xy之间仍旧差⼀个逗号。
改正⽅法:xy之间加⼀个逗号。
错误信息6:经检查,输⼊语句中未加⼊地址符&。
错误原因:x未取地址符。
改正⽅法:在x前加⼀个&。
错误信息7:经继续检查,发现输⼊语句存在问题。
错误原因:输⼊语句中“%f”不能直接输⼊,应改为“%lf”。
改正⽅法: 将%f改为%lf。
3.改正后正确程序。
(⼆)1.if(a)if(b) x=x+1;else y=y+1;的确切含义是什么?这个else应该和哪个if配对?如何明确表达这种配对⽅法?将该段代码按照规范化的格式进⾏书写。
1.如果输⼊的语句符合括号内的条件就执⾏x=x+1;否则就执⾏y=y+12.与第⼆个配对3.在else后加{}改正后的代码:2.C语⾔的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?为什么?如果不能,正确的表达式应该怎么写?1.不能。
2.这样的话先会⽐较-10和x的⼤⼩,然后再⽐较后者,这样不会输出正确结果。
3.只能⽤x>-10 && x<10;来表⽰。
3.C语⾔中输⼊数据时,如果遇到⾮法字符,如果遇到⾮法字符,则认为输⼊结束。
运⾏程序(1),输⼊123a,看看输出结果是什么?你能解释是为什么吗?1.输出结果:2.原因:⾮法字符⽆法输出,所以就输出了⼀个随机数。
国家开放大学C语言程序设计A第三次形考任务及答案
一、选择题(共30分,每小题2分)在下面的函数声明语句中,存在着语法错误的是(??? )。
a. AA(int a, int b)b. AA(int, int)c. AA(int a; int b)d. AA(int a, int)题目2在下面的保留字中,不能作为函数的返回值类型的是(??? )。
a. voidb. intc. enumd. long题目3假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址增加的字节数为(??? )。
a. 1b. 2c. 4d. 8题目4假定a为一个数组名,在下面的表达式中,存在语法错误的是(??? )。
a. a[i]b. *a++c. *ad. *(a+1)题目5用calloc函数创建具有10个整型元素的一维数组的正确语句是(??? )。
a. int *p=calloc(10,2);b. int *p=calloc(10);c. int *p=calloc(10,4);d. int *p=malloc(10)题目6假定变量m定义为“int m=7;”,则下面正确的语句为(? ??)。
a. int p=&m;b. int *p=&m;c. int &p=*m;d. int *p=m;题目7假定k是一个double类型的变量,则定义变量p的正确语句为(? ??)。
a. double p=&k;b. int *p=&k;c. double &p=*k;d. char *p="Thank you!";题目8若有语句为“int a[10], x, *pa=a;”,要把数组a中下标为3的元素值赋给x,则不正确的语句为(? ??)。
a. x=pa[3];b. x=*(a+3);c. x=a[3];d. x=*pa+3;题目9假定有语句为“int b[10]; int *pb;”,则下面不正确的赋值语句为(? ??)。
C++程序设计语言第三次作业题及答案.doc
第3次作业一、填空题(本大题共20分,共5小题,每小题4分)1.类型兼容原则指的是:任何在需要_______ 对象的地方,都可以用 ________ 的对象去替代。
2.重新抛出异常的表达式为:_______ o3.STL中算法大致分为四类,分别是_________ 、 _____ 、______ 、______ o4.以下程序的执行结果是____________________ o#inelude <iostream>using namespace std;class A{int x;public:A(int x) {this->x二x;}A &operator--(){x--;return *this;}A operator--int){A a(x-=2);return a;}void show() { cout<< x;}};void main () {A a(3),b(3);(a--). show();(一一b)・ show();5.以下方阵类CSquare完成查找n行n列的二维int数组中两对角线上最大元素的值•请你填空完成此功能.# include class CSquare { int //arr 为矩阵首地址int num; //表示行数与列数_______ // CSquare(int *p, int n){______ // num = n;}______ //};int CSquare::FindMax() const { int max; int i 二0;int r, c, tmp;max = arr[0];for (; i < num ; i++){r = arr[i^num + i] ; //r为第i行对角线上的一个元素值_________ // c为第i行另一个对角线上的一个元素值if( r > c ) tmp 二r;else tmp = c;if ( max < tmp) max = tmp;}return max;}void main() { static int a[5][5]二{{20, -5, 21, 1& 156},{3, ~6, -& 26, ~3},{10, 7, 74, 200, 011, 94, 3, 239, 11-7, 23, 8& 2& 83}};CSquare s ((int*)a, 5);int max = s. FindMax(); cout<<,,max=/,<<=/z/z应输岀:max二〃239〃> 二、程序阅读题(本大题共40分,共5小题,每小题8分) 1.#include<stdio.h>int main(){int k=2, i=2, m;m二(k+二i*二k);printf (z,m=%d\ti=%d\n", m, i);return 0;}2.#inelude <iostream>using namespace std;int main(){int a[] = {l, 2, 3, 4, 5, 6, 7, 8, 9, 10}, s=0, i;for(i=0; i<10; i++)if(a[i]%2)s=s+a[i];cout〈〈〃s二〃〈〈s〈〈endl;;return 0;3.ttinclude <iostream>#include <cstring>using namespace std;void mycat(char *s, char *t, int p);int main(){char si [20]=/z abcdefg,z, s2[200]=〃12345〃;mycat (si, s2, 3);puts (si);return 0;)void mycat (char *s,char *t, int p){strcat (t, s+p);strepy (s+p, t);!4.ttincludc <iostrcam> using namespace std; int avere (int x, int y, int z); double aver (double x,double y, double z);int main(){int ai=l, bi二2, ci=3;double ad=l. 5, bd二5. 5, cd=7. 5;cout<<,z ai+bi+ci=,,<<aver (ai, bi, ci) <<endl; cout<<,,ad+bd+cd=/,<<avcr (ad, bd, cd) <<cndl;return 0;}int aver (int x, int y, int z){return x+y+z;idouble aver (double x, double y, double z){return x+y+z;}5.★include <iostream>using namespace std;int a, b, c, d;int main()void p(int a, int b);cout«a«,/, 〃<<b<<:,,«d«endl;p(a, b);cout«a«,/, 〃«b«〃,〃«c«〃,,,«d«endl ; return 0;)void p(int a, int b){static int c;a++, b++;c-二1, d+二1;if(a<3){p(a, b);cout<<a<<,z,,,<<b<<,,>,,<<c<</,,,,<<d<<cndl;三、程序设计题(本大题共40分,共8小题,每小题5分)1.编程序实现功能:从键盘上输入一个字符串和一个字符,统计该字符在字符串中出现的次数。
C语言第三次作业
实验3 循环结构程序设计一、实验目的(1) 掌握while、do~while、for语句的使用。
(2) 掌握循环体内使用break、continue语句的作用。
(3) 掌握循环及嵌套循环结构的程序设计方法。
二、实验内容及步骤(一)实验准备(1) C语言实现循环的方法①while循环:实现“当型”循环,首先判断循环条件,当条件为真,执行循环体,再判断循环条件……此种循环有可能一次也不执行循环体。
②do~while循环:实现“直到型”循环,与while循环的区别是先执行循环体,再判断循环条件,当循环条件为真,再执行循环体……此种循环至少执行一次循环体。
③for循环:与while循环类似,一般用于知道循环变量初值、终值及步长值的循环。
(2) break 和continue 语句①break 语句:可用在循环体或switch语句中,作用是跳出其所在的控制结构。
若是在循环体中,则是跳出其所在的循环,使得循环不止一个出口。
②continue语句:只能用在循环体中,其作用是结束本层本次循环,注意不是退出循环。
(3) 阅读以下程序,并分析其功能,调试运行程序后再分析其运行结果。
①掌握三种方法求数列求和。
文件名为ex6-1-1.c,内容如下:# include <stdio.h>main(){ int sum=0,i=1;while(i<=100)sum+=i++;printf("sum is %d\n",sum);}文件名为ex6-1-2.c,内容如下:# include <stdio.h>main(){ int sum=0,i=1;dosum+=i++;while(i<=100);printf("sum is %d\n",sum);}文件名为ex6-1-3.c,内容如下:# include <stdio.h>main(){ int sum=0,i;for(i=1;i<=100;i++)sum+=i;printf("sum is %d\n",sum);}②程序二,程序文件名为ex6-2.c。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2012年9月份考试C语言程序设计第三次作业一、填空题(本大题共20分,共 10 小题,每小题 2 分)1. 输入:triz时,下列程序的输出结果是 ______ .#include main(){char c ;int v0=0,v1=0;do switch(c=getchar()){case ''a'': case ''b'': case ''c'':v0++;default: v1++;}while(c!=''\n'');printf("v0=%d,v1=%d\n",v0,v1);}2. 一个C程序总是从 ______ 函数开始执行的.3. 函数体一般包括 ______ 部分和 ______ 部分4. 定义一个3行4列的二维数组arr的代码是 ______ .5. 如果被调用函数中没有return语句,则函数是否返回一个数值? ______ (填“是”或“否”).6. 若a=5,b=2,c=1,则表达式 a-b7. 以下程序的执行结果是: ______ .#include main(){int a,b,c,d,x;a=c=0; b=1;d=20; if(a) d=d-10;else if(!b) if(!c) x=15;else x=25;printf("d=%d\n",d);}8. 输入:teacher时,下列程序的输出结果是 ______#include main(){char c ;int v0=0,v1=0;do switch(c=getchar()){case ''a'': case ''b'': case ''c'':v0++;default: 2:v1++;}while(c!=''\n'');printf("v0=%d,v1=%d\n",v0,v1);}9. 以下程序的执行结果是: ______ .#include main(){int a=2,b=7,c=5;switch (a>0){case 1: switch(b<0){case 1:printf("@");break;case 2:printf("!");break;}case 0: switch(c==5){case 0:printf("*");break;case 1:printf("#");break;default:printf("$");break;}default:printf("&");}printf("\n");}10. 当a的值分别为:1,2,3时,程序的结果是 ______ .#include main(){int a;printf("Please enter a=");scanf("%d",&a);switch(a){case 1: printf("a");break;default: printf("b");case 2: printf("c") ;}}二、程序阅读题(本大题共64分,共 8 小题,每小题 8 分)1. 表示"整数x的绝对值大于5"时值为"真"的C语言表达式是().2. 以下程序运行后的输出结果是().main(){int i,m=0,n=0,k=0;for(i=9;i<=11;i++) switch(i/10) {case 0: m++;n++;break;case 10: n++;break;default: k++;n++;}printf("%d %d %d\n",m,n,k);}3. 以下程序运行后的输出结果是().main(){int p[7]={11,13,14,15,16,17,18};int i=0,j=0;while(i<7 && p[i]%2==1) j+=p[i++];printf("%d\n",j);}4. 有以下程序main(){int t=1,i=5;for(;i>=0;i--)t*=i;printf("%d\n",t);}执行后输出结果是().5. 请在以下程序第一行的下划线处填写适当内容,使程序能正常运行. ()( double,double);main(){double x,y;scanf("%1f%1f",&x,&y);printf(%1f\n",max(x,y));}double max(double a,double b){return(a>b ? a:b);}6. 以下程序运行后的输出结果是().main(){int a=3,b=4,c=5,t=99;if(b7. 以下程序的输出结果是().main(){unsigned short a=65536;int b;printf("%d\n\",b=a);}8. 执行下列程序段后,x和i的值分别是()和().int x,i;for (i=1,x=1;i<=50;i++){if(x>=10) break;if(x%2==1){x+=5;continue;}x-=3;}三、程序设计题(本大题共16分,共 2 小题,每小题 8 分)1. 当a的值分别为:1,2,3时,分析程序的运行结果.#include main(){int a;printf("Please enter a=");scanf("%d",&a);switch(a){case 1: printf("a");break;default: printf("b");case 2: printf("c");}2. 写一个程序,提示用户输入年、月、日,程序计算并输出该日是该年的第几天.(提示:如果用户输入2006,3,11,程序则输出70)答案:一、填空题(20分,共 10 题,每小题 2 分)1.参考答案:v0=0,v1=5解题方案:没有执行一次case语句,所以v0=0,v1=5 评分标准:每答对1空得2分2.参考答案:main解题方案:一个C程序总是从main 函数开始执行的. 评分标准:每答对1空得2分3.参考答案:声明执行解题方案:函数体一般包括声明部分和执行部分评分标准:每答对1空得2分4.参考答案:arr[3][4]解题方案:2维数组第一维对应行数、第二维对应列数评分标准:每答对1空得2分5.参考答案:否解题方案:该情况下不返回数值评分标准:每答对1空得2分6.参考答案:解题方案:a-b评分标准:每答对1空得2分7.参考答案:d=20解题方案:Else和最近的if配对,所以 if(a)[假] d=d-10; else if(!b)[假] if(!c)x=15; else x=25; 从而,赋值语句都没有执行,所以d=20评分标准:每答对1空得2分8.参考答案:v0=2,v1=8解题方案:Case中没有break,因此?v0增加2次,v1增加8次,所以v0=2,v1=8评分标准:每答对1空得2分9.参考答案:#&解题方案:Switch嵌套,a>0 的值为1,所以执行case 1;b<0 的值为0;执行case0;c==5的值为1,执行case1,输出#,单上层case语句没有break,所以,继续,default,输出—评分标准:每答对1空得2分10.参考答案:acbc解题方案:Case 1 输出a Case 2 输出c Case 3 输出bc评分标准:每答对1空得2分二、程序阅读题(64分,共 8 题,每小题 8 分)1.参考答案:x>5||x5 或 abs(x)>5 或 (x>5)||(x5)解题方案:要使整数x的绝对值大于5,则x大于5或x小于-5,用C语言表示即为:x>5||x<-或者(x>5)||(x<-5).评分标准:回答正确得5分,错误不得分2.参考答案:1 3 2解题方案:本题的考查点是C程序设计.根据程序写出运行结果. 该程序用的是switch多分支语句.它的一般形式为: switch(表达式) {case 常量表达式1:语句1 case 常量表达式2:语句2 …… case 常量表达式n:语句n default :语句n+1 }在执行过程中break语句的作用是跳出switch结构,即终止 switch语句的执行. 本题中,i从9开始判断循环,当i=9时,执行第一个case后的语句m++;n++;此时m=1,n=1,然后执行break,跳出循环;继续判断i=10时,执行default后的语句,k++;n++,此时k=1,n=2;再回去判断i=11时,仍然执行一次default后的语句,k=2,n=3,综上所述,m=1,n=3,k=2.注意输出函数中%d后有空格.评分标准:回答正确得5分,错误不得分3.参考答案:24解题方案:本题考查的是while循环. (1)当i=0时,满足条件:i<7,p[0]=11,11%2=1则j=0+11=11,i=1 (2)当i=1时,满足条件:i<7, p[1]=13,13%2=1则,j=11+13=24,i=2 (3)当i=2时,循环结束:p[2]=14,14%2=0则循环结束(4)循环结束后,d格式的printf输出j,则最后的输出结果为24.评分标准:回答正确得5分,错误不得分4.参考答案:解题方案:本题实际上是计算5*4*3*2*1*0的值,结果为0.评分标准:回答正确得5分,错误不得分5.参考答案:double max 或 extern double max解题方案:调试程序,把不完善的程序进行修改和补充,使之能得到正确的结果. 主函数里可以看到调用了一个max函数,函数在被调用之前需要先定义,所以要求填空的内容应该是对函数进行定义的语句.由题目内容也可以看出此函数是double型的.评分标准:回答正确得5分,错误不得分6.参考答案:4 5 99解题方案:本题需特别注意的是";"的问题,不能把"t=a;a=c;c=t;"误认为是第一个if的语句,实际上,只有"t=a;"才是第一个if的语句.所以判断第一个if语句的表达式不成立后,执行的是"a=c;c=t;",此时a=5,c=99.然后判断第二个if语句的条件表达式,表达式成立,执行后面的三个语句,让a,b的值进行交换,最后输出a、b、c分别为4、5和 99.评分标准:回答正确得5分,错误不得分7.参考答案:解题方案:对于一个unsigned short来说,它能取的最大值是65535.这里给a赋值65536,已经超出了它的取值范围,这样它的高位将被截掉,只把低位赋给它(全零).所以a的值实际为0.评分标准:回答正确得5分,错误不得分8.参考答案:10和6解题方案:在for循环中,当x>=10时,循环便会终止;当x<10时,如果x整除2的余数为1,则x等于x+5,否则x等于x-3.将实际的值带入程序中进行运算即可得到正确答案,当循环结束的时候,x和i的值分别是10和6.评分标准:回答正确得5分,错误不得分三、程序设计题(16分,共 2 题,每小题 8 分)1.参考答案:答案:输入1,输出a;输入2,输出c;输入3,输出bc解题方案:输入1,输出a;输入2,输出c;输入3,输出bc评分标准:回答正确得5分,否则不的分2.参考答案:无标准答案解题方案:区别闰年,闰年的2月是29天,非闰年是28天.不闰年的条件是,年数n,n/4余数不为0,或n/100余数不为,或n/400的余数不为年内.所以该日是该年的第几天又两部分组成:1、该月以前的整月天数和;2、在该月的天数评分标准:程序基本结构:2;闰年判断4;天数求和2;其他2。