第二次C语言作业
- 格式:doc
- 大小:181.50 KB
- 文档页数:1
1 .C语言中规定函数的返回值的类型是由()。
A.return语句中的表达式类型所决定B.调用该函数时系统临时决定C.调用该函数时的主调用函数类型所决定D.在定义该函数时所指定的函数类型所决定参考答案:D2 .以下不能正确进行字符串赋初值的语句是____。
A.char str[5]="good“B.! char str[]=goodC.! char *str=goodD.! char str[5]={'g','o','o','d'}!参考答案:A3 .C语言中_______。
A.能使用do-while语句构成的循环B.do-while语句构成的循环必须用break语句才能退出C.do-while语句构成的循环,当while语句中的表达式为非零时结束循环D.do-while语句构成的循环,当while语句中的表达式值小于零时结束循环参考答案:A4 .以下选项中,与k=n++完全等价的表达式是_____。
A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1参考答案:A5 .有定义语句:int b;char c[10]; ,则正确的输入语句是_____。
A.scanf("%d%s",&b,&c);B.scanf("%d%s",&b,c);C.scanf("%d%s",b,c);D.scanf("%d%s",b,&c);参考答案:B6 .若有定义:int aa[8];则以下表达式中不能代表数组元aa[1]的地址的是_____。
A.&aa[0]+1B.&aa[1]C.&aa[0]++D.aa+1参考答案:D7 .若i 、j 已定义为int 型,则以下程序段中语句printf( “%d ”,i*j); 的执行次数是_____。
第一章 C 语言概述1.1 单项选择题1.二进制语言是属于()①面向机器语言②面向问题语言③面向过程语言④面向汇编语言「解」人们研制了许许多多计算机程序设计语言,其中二进制语言直接来自计算机的指令系统,与具体计算机紧密相关,所以是一种面向机器语言。
面向问题语言是为了易于描述和求解某类特定领域的问题而专门设计的一种非过程语言。
面向过程语言是一种能方便描述算法过程的计算机程序设计语言。
有汇编语言,但没有面向汇编语言。
汇编语言也是一种面向机器的语言,与机器语言比较,汇编语言用有助于记忆的符号来代表二进制代码。
所以解答是①。
2.下列语言中不属于面向过程的语言是()①高级语言②低级语言③C 语言④PASCAL 语言「解」C 语言和PASCAL 等程序设计语言都是高级语言,它们用于描述复杂加工的处理过程,所以也称它们是面向过程语言。
低级语言是指机器语言和汇编语言,低级语言是面向机器的语言,而不是面向问题的语言。
所以解答是②。
3.下列字符中属于键盘符号的是()①\ ②\n ③\t ④\b「解」键盘符号是指键盘上有标记,并能在显示器上直接以其标记字样显示的字符。
有许多键盘上有标记的符号,它们不是用于直接显示的,键入这种字符用于表示特定的意义,如常用的回车符。
为了能让C 程序标记这种符号,程序采用转义字符的方式书写这种字符。
如'\n'、'\t' 、'\b'都不是键盘字符,在C 语言中,它们都得用转义字符来表达。
只有字符\才是键盘字符。
所以解答是①。
但在C程序中,反斜杠字符\已特别用作转义字符的引导符,它也得用转义字符的表达形式书写,将它写成‘\\’。
4.下列字符列中,不是用来表达转义字符是()①\\ ②\' ③074 ④\0「解」转义字符有三种书写形式:反斜杠字符后接上某个规定的字符;反斜杠字符后接上13 个八进制数字符;反斜社字符和字符X 之后接上1 至2 个十六进制数字符。
C语言作业题【输出形式】用户在下一行显示输出结果【样例输入】3.47【样例输出】3【样例说明】与输入值3.47接近的整数为3和4,3.47比3.5小,舍掉小数部分,结果为3。
【评分标准】结果完全正确得20分,每个测试点4分。
提交程序名为:c0104.c。
当前编程题:第一次作业--- 计算空格换行个数5. 【问题描述】编写一程序,分别计算所输入的字符串中空格,换行符的个数。
【输入形式】输入可以是键盘上的任意字符。
【输出形式】分别输出空格,换行符的个数,输出的结果一行显示,数字之间以空格格开。
【输入样例】bb ss pp=fz【输出样例】2 1【样例说明】字符b与s之间有一个空格,s与p之间有一个空格,p与f之间有一个换行。
【评分标准】结果完全正确得20分,每个测试点4分。
提交程序名为:c0105.c。
当前编程题:第一次作业--- 整数组合(选做题)6. 【问题描述】假设unsigned short类型占16位,x、y、z都是short类型。
编写一程序,从键盘输入x,y 的值(十进制形式),然后将x的高8位作为z的高8位,y的高8位作为z的低8位,最后输出z的值(十进制形式)。
【输入形式】以十进制形式输入x和y的值,以空格隔开。
【输出形式】以十进制形式在新的一行上输出z值。
【输入样例】840 2177【输出样例】776【样例说明】840的二进制形式为:0000 0011 0100 10002177的二进制形式为:0000 1000 1000 0001将840的高8位作为结果的高8位,2177的高8位作为结果的低8位,所以结果为:0000 0011 0000 1000,即十进制形式为:776【评分标准】结果完全正确得20分,每个测试点4分。
提交程序名为:c0106.c。
当前编程题:第二次作业--- 数字排序1. 【问题描述】编写一个程序,将输入的三个数从小到大排列出来。
【输入形式】用户在第一行输入三个数字,每个数字用空格分开。
一、选择题共20分,每小题2分当处理特定问题时的循环次数已知时,通常采用的语句是;a. forb. whilec. do-whiled. switch题目2在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写成的语句是;a. forb. ifc. dod. while题目3for语句能够被改写成的语句是;a. 复合b. ifc. switchd. while题目4下面循环语句执行结束后输出的i值为;forint i=0; i<n; i++ ifi>n/2 {cout<<i<<endl; break;}a. n/2b. n/2+1c. n/2-1d. n-1题目5在下面循环语句中,内层循环体S语句的执行总次数为; forint i=0; i<n; i++forint j=i; j<n; j++ S;a. n2b. n+1/2c. nn-1/2d. nn+1/2题目6在下面的do循环语句中,其循环体被执行的次数为; int i=0; do i++; whileii<10;a. 4b. 3c. 5d. 2题目7在下面的一维数组定义中,有语法错误的选项是;a. int a={1,2,3};b. int a10={0};c. int a;d. int a5;题目8在下面的二维数组定义中,语法正确的选项是;a. int a5;b. int a5;c. int a3={{1,3,5},{2}};d. int a10;题目9假定一个二维数组的定义语句为“int a34={{3,4},{2,8,6}};”,则元素a11的值为;a. 2b. 4c. 6d. 8题目10假定一个二维数组的定义语句为“int a34={{3,4},{2,8,6}};”,则元素a21的值为;a. 0b. 4c. 8d. 6二、判断题共20分,每小题1分;叙述正确则回答“是”,否则回答“否”题目11在执行“typedef int DataType;”语句后,标识符DataType与保留字int具有完全相同的含义和作用; 对题目12在switch语句中,每个case和冒号之间的表达式只能是常量; 对题目13为了结束本层循环类语句或switch语句的执行过程,在语句体中需要使用break语句; 对题目14在程序中执行到break语句时,将结束所在函数的执行过程,返回到调用该函数的位置;错题目15在程序执行完成任一个函数调用后,将结束整个程序的执行过程,返回到操作系统或C语言集成开发环境界面窗口; 错题目16假定一维数组的定义为“char a8;”,则该数组所含元素的个数大于8; 错题目17假定二维数组的定义为“int a35;”,则该数组所占存储空间的字节数为60; 对题目18假定二维数组的定义为“char aMN;”,则该数组所含元素的个数为M+N;错题目19假定二维数组的定义为“double aMN;”,则每个数组元素的行下标取值范围在0~M-1之间; 对题目20假定二维数组的定义为“double aMN;”,则每个数组元素的列下标取值范围在0~N之间;错题目21存储一个空字符串需要占用0个字节的存储空间; 错题目22使用“typedef char BB1050;”语句定义标识符BB为含有10行50列的二维字符数组类型; 对题目23存储字符'a'需要占用1个字节的存储空间; 对题目24空字符串的长度为1; 错题目25字符串"a:\\xxk\\数据"的长度为13; 错题目26为了存储一个长度为n的字符串,所使用的字符数组的长度至少为n+1; 对题目27strcmp函数用于进行两个字符串之间的比较; 对题目28strcpy函数用于把一个字符串拷贝到另一个字符数组空间中; 对题目29一个二维字符数组a1020能够最多存储9个字符串; 错题目30一个二维字符数组a1020能够存储的每个字符串的长度不超过20; 错三、填空题:写出下列每个程序运行后的输出结果共40分,每小题4分题目31include<stdio.h>void main{int x=5;switch2x-3 {case 4: printf"%d ",x;case 7: printf"%d ",2x+1;case 10: printf"%d ",3x-1; break;default: printf"%s","default\n";}}11 14题目32include<stdio.h>void main {int i,s=0;fori=1;i<=5;i++ s+=ii;printf"s=%d\n",s;}s=55题目33include<stdio.h>void main {int i, s1=0, s2=0;fori=0;i<10;i++ifi%2 s1+=i; else s2+=i;printf"%d %d\n",s1,s2;}25 20题目34include<stdio.h>void main {int n=6,y=1;whilen y=n--;printf"y=%d\n",y;}y=720题目35include<stdio.h>const int M=20;void main{int i,c2,c3,c5;c2=c3=c5=0;fori=1; i<=M; i++ {ifi%2==0 c2++;ifi%3==0 c3++;ifi%5==0 c5++;}printf"%d %d %d\n",c2,c3,c5;}10 6 4题目36include<stdio.h>void main{int i,s;fori=1,s=0;i<10;i++ {ifi%3==0 continue;s+=i;}printf"%d\n",s;}27题目37include<stdio.h>void main {int a8={12,39,26,41,55,63,72,40};int i, i1=0, i2=0;fori=0;i<8;i++ifai%2==1 i1++; else i2++;printf"%d %d\n",i1,i2;}4 4题目38include<stdio.h>int a10={4,5,6,15,20,13,12,7,8,9};void main{int i,s4=0;fori=0; i<10; i++ {switchai%4 {case 0: s0+=ai;break;case 1: s1+=ai;break;case 2: s2+=ai;break;default: s3+=ai;break;}}fori=0; i<4; i++ printf"%d ",si;}44 27 6 22题目39include<stdio.h>void main {char a="abcdbfbgacd";int i1=0, i2=0, i=0;whileai {ifai=='a' i1++;ifai=='b' i2++;i++;}printf"%d %d %d\n",i1,i2,i;}2 3 11题目40include<stdio.h>void main {int a34={{1,2,7,8},{5,6,10,6},{9,12,3,4}};int m=a00;int i,j;fori=0; i<3; i++forj=0; j<4; j++ifaij>m m=aij;printf"%d\n",m;}12四、简答题:根据下列每个题目要求编写程序共20分,每小题4分题目41编写一个函数,函数头格式为“double Meandouble aMN,int m,int n”,要求返回二维数组amn 中所有元素的平均值,假定在计算过程中采用变量v存放平均值;double Meandouble aMN,int m,int n{int i,j;double v=0.0;fori=0; i<m; i++forj=0; j<n; j++ v+=aij;v/=mn;return v;}题目42编写一个递归函数“int FFint a, int n”,求出数组a中所有n个元素之积并返回;include<stdio.h>int FFint a , int n{int mul=1;ifn==1mul=a0;else mul=an-1FFa,n-1;return mul;}/void main{int a6={1,2,3,4,5,6};printf"%d\n",FFa,6;}/题目43编写一个主函数,利用while循环,求出并显示满足不等式1+1/2+1/3+……+1/n>5的最小n 值;include<stdio.h>void main{int i=0; double s=0; //或int i=1; double s=1;whiles<5 s+=double1/++i;printf"n=%d\n",i;}题目44编写一个主函数,求出满足不等式22+42+...+n2<1000的最大n值,假定分别用i和s作为取偶数值和累加值的变量,并限定使用do循环编程;include<stdio.h>void main{int i=0; //用i作为依次取值偶数的变量int s=0; //用s作为累加变量do {i+=2;s+=ii;}whiles<1000;printf"n=%d\n",i-2;}题目45编写一个主函数,计算并输出12+22+...+n2值,其中n值由键盘输入;include<stdio.h>void main{int i; //用i作为计数循环变量int s=0; //用s作为累加变量int n;printf"输入一个自然数: ";scanf"%d",&n;fori=1; i<=n; i++ s+=ii;printf"s=%d\n",s;}。
第一次上机作业(2021):要求:独立完成,上机调试通事后上交作业提交邮件主题命名:班级学号姓名(第1次作业),例如:电1301班2王鹏(第1次作业)以附件形式将每次作业的所有程序源程序紧缩打包后提交,紧缩文件命名格式同上。
程序必需采用缩进格式1.大写字母转换成小写字母从键盘输入一个大写英文字母,输出相应的小写字母。
例:输入G输出g2.求平方根输入一个实数x,计算并输出其平方根(保留1 位小数)。
例:输入17输出The square root of is3.温度转换设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32)a)输入华氏温度(实型)b)输出的摄氏温度结果保留两位小数例:Please input Fahrenheit temperature:The corresponding Celsius temperature is4. 计算旅途时刻输入二个整数time1 和time2,表示火车的起身时刻和抵达时刻,计算并输出旅途时刻。
(输入的有效的时刻范围是0000 到2359,不需要考虑起身时刻晚于抵达时刻的情形。
)例:输入712 1411 (起身时刻是7:12,抵达时刻是14:11)输出The train journey time is 6 hours 59 minutes.5. 数字加密输入一个四位数,将其加密后输出。
方式是将该数每一名上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。
例:输入1257输出The encrypted number is 4601试探题:你可否编程找出谁做的好事?有四位同窗中的一名做了好事,不留名,夸奖信来了以后,校长问这四位是谁做的好事。
⏹A说:不是我。
⏹B说:是C。
⏹C说:是D。
⏹D说:他乱说。
已知三个人说的是实话,一个人说的是谎话。
此刻要依照这些信息,找出做了好事的人。
第1次客观题作业一、单选题(共30题,每题3分)1 .下面表示正确的是__A___。
A.C语言中的逗号是一种运算符B.在C语言中,一行只能有一个语句C.C中的变量不区分大小写D.c中的关键字可以做为变量名2 .字符型常量在内存中存放的是__A____代码值。
A.ASCII B.二进制C.十进制D.八进制3 .以下不正确的C语言标识符是(C )。
A.AB1 B._ab3 C.4ab D.a2_b4 .以下运算符中优先级最低的运算符是_D____。
A.&& B.& C.|| D.=5 .在C语言中,要求运算数必须是整型的运算符是___A___。
A.% B./ C.< D.!6 . C语言程序的基本单位是__C_____。
A.程序行B.语句C.函数D.字符7 .将高级语言编写的程序翻译成目标程序的是___B____程序。
A.解释程序B.编译程序C.汇编程序D.源程序8 .以下选项中,与k=n++完全等价的表达式是__A___。
A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n+19 .下列(A )不属于结构化程序设计的循环结构。
A.For B.While C.if-else D.do-while10 .以下叙述中错误的是__A___。
A.用户所定义的标识符允许使用关键字B.用户所定义的标识符应尽量做到“见名知意C.用户所定义的标识符必须以字母或下划线开头D.用户定义的标识符中,大、小写字母代表不同标识11 .若有输入语句scanf( %d%d%d,&x,&y,&z);则不能使x值为5,y值为6,z值为7的输入是__A____。
A.5,6 ,7 B.5回车换行 6 7 C.5 6 7 D.5,6,712 .若i,j已定义为int类型,则下程序段中内循环体的总的执行次数是( B )。
for (i=3;i>0;i--) for (j=0;j<=4;j++){...}A.12 B.15 C.16 D.2013 .下列选项中,合法的C语言关键字是_D___。
中国石油大学北京网络学院
C语言程序设计-第二次在线作业
参考答案
1.(
2.5分)以下关于数组的描述正确的是()。
A、A. 数组的大小是固定的,但可以有不同的类型的数组元素。
B、B. 数组的大小是可变的,但所有数组元素的类型必须相同。
C、C. 数组的大小是固定的,但所有数组元素的类型必须相同。
D、D. 数组的大小是可变的,但可以有不同的类型的数组元素。
我的答案:C 此题得分:2.5分
2.(2.5分)在定义int a[10];之后,对a的引用正确的是()。
A、A.a[10]
B、B.a[6.3]
C、C.a(6)
D、D.a[10-10]
我的答案:D 此题得分:2.5分
3.(2.5分)以下能正确定义数组并正确赋初值的语句是()。
A、A. int n=5,b[n][n];
B、B. int a[1][2]={{1},{3}};
C、C. int c[2][]={{1,2},{3,4}}
D、D. int a[3][2]={{1,2},{3,4}}。
c语言二级考试题及答案一、单项选择题(本大题共40小题,每小题2分,共80分)1. 在C语言中,下列哪个选项是正确的整型常量?A. 0.5B. 0x12C. 0x12.0D. 0x12L答案:B2. C语言中,下列哪个选项是正确的字符串字面量?A. "hello"B. 'hello'C. "hello'"D. 'hello"答案:A3. 在C语言中,下列哪个选项是合法的标识符?A. 2variableB. variable2C. _variableD. variable-2答案:C4. 下列哪个选项是C语言中的关键字?A. intB. integerC. realD. double答案:A5. 在C语言中,下列哪个选项是正确的二进制常量表示?A. 0x1BB. 0b1101C. 0B1101D. 0x1101答案:B6. C语言中,下列哪个选项是正确的浮点型常量表示?A. 3.14B. 3.14e2C. 3.14E-2D. 3.14f答案:C7. 在C语言中,下列哪个选项是正确的字符常量表示?A. 'a'B. "a"C. 'ab'D. '0x61'答案:A8. 下列哪个选项是C语言中合法的数组声明?A. int a[5] = {1, 2, 3, 4, 5};B. int a[] = {1, 2, 3, 4, 5};C. int a[5] = {1, 2, 3};D. int a = {1, 2, 3, 4, 5};答案:A9. 在C语言中,下列哪个选项是正确的函数声明?A. int add(int a, int b);B. int add();C. int add(int, int);D. int add(int a, b);答案:A10. 下列哪个选项是C语言中合法的指针声明?A. int *p;B. int *p[];C. int *p[5];D. int (*p)();答案:A11. 在C语言中,下列哪个选项是正确的结构体声明?A. struct Point { int x, y; };B. struct { int x, y; } Point;C. struct Point { int x; int y; };D. struct { int x; int y; };答案:C12. 下列哪个选项是C语言中合法的枚举声明?A. enum {RED, GREEN, BLUE} color;B. enum color {RED, GREEN, BLUE};C. enum {RED, GREEN, BLUE};D. enum color {0, 1, 2};答案:B13. 在C语言中,下列哪个选项是正确的宏定义?A. #define PI 3.14159B. #define PI = 3.14159C. #define PI(3.14159)D. #define PI 3.14159;答案:A14. 下列哪个选项是C语言中合法的文件包含指令?A. #include <stdio.h>B. #include "stdio.h"C. #include <stdio.h>D. #include "stdio.h"答案:A15. 在C语言中,下列哪个选项是正确的条件语句?A. if (a > b) { ... }B. if a > b { ... }C. if (a > b) then { ... }D. if a > b then { ... }答案:A16. 下列哪个选项是C语言中合法的循环语句?A. for (i = 0; i < n; i++) { ... }B. for i = 0; i < n; i++ { ... }C. for (i = 0; i < n; i++) { ... }D. for i = 0 to n { ... }答案:A17. 在C语言中,下列哪个选项是正确的switch语句?A. switch (a) { case 1: ...; case 2: ...; }B. switch (a) { case 1: ...; case 2: ...; default: ...; }C. switch (a) { case 1: ...; case 2: ...; break; }D. switch (a) { case 1: ...; case 2: ...; default: ...; }答案:D18. 下列哪个选项是C语言中合法的goto语句?A. goto label;B. goto 10;C. label: ...D. goto;答案:C19. 在C语言中,下列哪个选项是正确的函数调用?A. printf("%d", 10);B. scanf("%d", &a);C. printf("%d", a);D. scanf("%d", a);答案:B20. 下列哪个选项是C语言中合法的函数定义?A. int add(int a, int b) { return a + b; }B. int add(int a, b) { return a + b; }C. int add(int a, int b) { return a + b; }D. int add(a, b) { return a + b; }答案:A21. 在C语言中,下列哪个选项是正确的递归函数调用?A. int factorial(int n) { return n * factorial(n - 1); }B. int factorial(int n) { if (n == 0) return 1; else return n * factorial(n - 1); }C. int factorial(int n) { return n * factorial(n + 1); }D. int factorial(int n) { if (n == 1) return 1; else return n * factorial(n - 1); }答案:B22. 下列哪个选项是C语言中合法的数组初始化?A. int a[5] = {1, 2, 3, 4, 5};B. int a[5] = {1, 2, 3, 4};C. int a[5] = {1, 2, 3};D. int a[5] = {1, 2, 3, 4, 5, 6};答案:A23. 在C语言中,下列哪个选项是正确的字符串复制?A. strcpy(a, b);B. strcopy(a, b);C. copy(a, b);D. strcp(a, b);24. 下列哪个选项是C语言中合法的内存分配?A. int *p = (int *)malloc(sizeof(int) * 10);B. int *p = malloc(10 * sizeof(int));C. int *p = (int *)malloc(10);D. int *p = malloc(sizeof(int) * 10);答案:A25. 在C语言中,下列哪个选项是正确的内存释放?A. free(p);B. delete p;C. deallocate p;D. dispose p;答案:A26. 下列哪个选项是C语言中合法的指针运算?B. p--;C. p += 2;D. p = 2;答案:A27. 在C语言中,下列哪个选项是正确的结构体赋值?A. Point p1 = {1, 2};B. Point p1 = p2;C. Point p1 = {1, 2};D. Point p1 = {1, 2, 3};答案:B28. 下列哪个选项是C语言中合法的枚举值使用?A. color = RED;B. color = 0;C. color = "RED";D. color = 1;答案:A29. 在C语言中,下列哪个选项是正确的宏替换?A. #define SQUARE(x) x * xB. #define SQUARE(x) (x) * (x)C. #define SQUARE(x) x * xD. #define SQUARE(x) (x) * (x)答案:D30. 下列哪个选项是C语言中合法的文件操作?A. FILE *fp = fopen("file.txt", "r");B. FILE *fp = open("file.txt", "r");C. FILE *fp = fopen("file.txt", "w");D. FILE *fp = open("file.txt", "w");答案:A31. 在C语言中,下列哪个选项是正确的文件读取?A. fscanf(fp, "%d", &a);B. scanf(fp, "%d", &a);C. fscanf(fp, "%d", a);D. scanf(fp, "%d", a);答案:A32. 下列哪个选项是C语言中合法的文件写入?A. fprintf(fp, "%d", a);B. printf(fp, "%d", a);C. fprintf(fp, "%d", &a);D. printf(fp, "%d", &a);答案:A33. 在C语言中,下列哪个选项是正确的文件关闭?A. close(fp);B. fclose(fp);C. fclose(fp);D. close(fp);答案:B34. 下列哪个选项是C语言中合法的错误处理?A. if (fp == NULL) { perror("Error opening file"); exit(1); }B. if (fp == NULL) { printf("Error opening file"); exit(1); }C. if (fp == NULL) { perror("Error opening file"); return 1; }D. if (fp == NULL) { printf("Error opening file"); return 1; }答案:A35. 在C语言中,下列哪个选项是正确的位运算?A. a & b;B. a && b;D. a || b;答案:A36. 下列哪个选项是C语言中合法的逻辑运算?A. a && b;B. a || b;C. a & b;D. a | b;答案:A37. 在C语言中,下列哪个选项是正确的自增运算?A. a++;B. ++a;C. a += 1;D. a = a + 1;38. 下列哪个选项是C语言中合法的自减运算?A. a--;B. --a;C. a -= 1;D. a = a - 1;答案:A39. 在C语言中,下列哪个选项是正确的类型转换?A. (int)a;B. int(a);C. (int)(a);D. int a;答案:C40. 下列哪个选项是C语言中合法的sizeof运算?A. sizeof(a);B. sizeof int;C. sizeof(int);D. sizeof "string";答案:C二、程序填空题(本大题共2小题,每小题10分,共20分)1. 给定以下代码片段,请填写缺失的部分以实现计算并打印两个整数的和。
1.计算机能直接执行的程序是______。
A)源程序 B)机器语言程序 C)高级语言程序 D)汇编语言程序2.以下选项中,不属于C语言结构化程序设计三种基本结构的是_______。
A)选择结构 B)顺序结构 C)递归结构 D)循环结构3.以下选项中,可以作为C语言用户标识符的一组是_______-。
A) void、define、WORO B)a3_b3、_123、xyzC)For、_abc、case D)2a、Do、sizeof4.已知:char a=’\70’;,则变量a________。
A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明非法5.已知:float x=2,y;,则表达式y=x+3/2的值是________。
A)3.5 B)3.0 C)2.0 D)1.06.C语言中,运算对象必须是整型数值的运算符是________。
A)% B)/ C)< D)!_________√(a²+b²)7.以下选项中,数学式1/2sin ( _________ )| c |A)1/2sin(sqrt(a^2+b^2)/fabs(c)) B)0.5sin(sqrt(a^2+b^2)/fabs(c))C) 1/2*sin(sqrt(a*a+b*b)/fabs(c))D)1.0/2*sin(sqrt(a*a+b*b)/fabs(c))8、已知:int i=10,j=1;,则执行语句print(“%d,%d”,i--,++j);后,输出结果是______。
A)9,2 B)10,2 C)9,1 D)10,19、已知:int a=5;,执行语句a=3*5,a*4,a+5;后,变量a的值是_________。
A)45 B)20 C)15 D)1010、已知:int x,y,t;,则语句:t=x,x=y,y=z;的功能是________。
A)将x和y按从大到小排列 B)将x和y按从小到大排列C)交换x和y的值 D)语法错误11.以下选项中叙述正确的是____________。
第一次作业一、写出下列每个程序运行后的输出结果1. #include<stdio.h>void main(){int x=5;switch(2*x-3){case 4:printf("%d ",x);case 7:printf("%d ",2*x+1);case 10:printf("%d ",3*x-1);break;default:printf("%s ","default\n");}printf("%s\n","switch end.");}2. #include<stdio.h>void main(){int i,s=0;for(i=1;i<=6;i++)s+=i*i;printf("s=%d\n",s);}3. #include<stdio.h>void main(){int i,s1=0,s2=0;for(i=0;i<10;i++)if(i%2)s1+=i;else s2+=i;printf("%d %d\n",s1,s2);}4. #include<stdio.h>void main(){int n=10,y=1;while(n--){y++;y++;}printf("y=%d\n",y);}5. #include<stdio.h>void main(){int f,f1,f2,i;f1=f2=1;printf("%d %d ",f1,f2);for(i=3;i<=10;i++){f=f1+f2;printf("%d ",f);if(i%5==0)printf("\n");f1=f2;f2=f;}printf("\n");}6. #include<stdio.h>#include<math.h>void main(){int i,n;for(n=2;n<=20;n++){int temp=(int)sqrt(n);//sqrt(n)求出n的平方根并取整for(i=2;i<=temp;i++)if(n%i==0)break;if(i>temp)printf("%d ",n);}printf("\n");}7. #include<stdio.h>#include<math.h>const int M=20;void main(){int i,c2,c3,c5;c2=c3=c5=0;for(i=1;i<=M;i++){if(i%2==0)c2++;if(i%3==0)c3++;if(i%5==0)c5++;}printf("%d %d %d\n",c2,c3,c5);}8. #include<stdio.h>#include<math.h>const int M=20;void main(){int i,s;for(i=1,s=0;i<15;i++){if(i%2==0 || i%3==0)continue;printf("%d ",i);s+=i;}printf("%d\n",s);}参考答案:1、答案:11 14 switch end.2、答案:s=91.3、答案:25 20.4、答案:y=21.5、答案:1 1 2 3 58 13 21 34 556、答案:2 3 5 7 11 13 17 197、答案:10 6 48、答案:1 5 7 11 13 37第二次作业一、根据下列每个题目要求编写程序1.编写一个函数,函数头格式为“void fun4(char *a , int b[])”,分别求出由字符指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素。
2014年9月份考试C语言程序设计第二次作业一、单项选择题(本大题共100分,共 40 小题,每小题 2.5 分)1. 下面程序fun3(int x){static int a=3;a +=x; return(a);}main(){int k=2, m=1, n;n=fun3(k);m=fun3(m);printf("%d\n",n);}的输出是().A. 3B. 4C. 5D. 92. 下面的程序main(){int x=3;do{printf("%d\n",x-=2);}while(!(--x) );}().A. 输出的是1B. 输出的是1和-2C. 输出的是3和0D. 是死循环3. 以下叙述中正确的是().A. 预处理命令行必须位于源文件的开头B. 在源文件的一行上可以有多条预处理命令C. 宏名必须用大写字母表示D. 宏替换不占用程序的运行时间4. 以下叙述中正确的是().A. 局部变量说明为static存储类,其生存期将得到延长B. 全局变量说明为static存储类,其作用域将被扩大C. 任何存储类的变量在未赋初值时,其值都是不确定的D. 形参可以使用的存储类说明符与局部变量完全相同5. 下列语句中,符合C语言语法的赋值语句是().A. a=7+b+c=a+7B. a=7+b++=a+7C. a=7+b,b++,a+7D. a=7+b,c=a+76. 下面程序main(){int y=9;for(;y>0;y--){if(y%3==0){printf("%d",--y);continue;}}} 的输出是().A. 741B. 852C. 963D.7. 下面程序main(){int x=32;printf("%d\n",x=x<<1);}的输出是().A. 100B. 160C. 120D. 648. 以下程序的输出结果是(). #include main() { printf("%d\n",NULL); }A. 不确定的(因变量无定义)B. 0C. -1D. 19. 若k是int型变量,且有下面的程序片段k=-3;if(k<=0) printf("####") else printf("&&&&");上面程序片段的输出结果是().A. ####B. &&&&C. ####&&&&D. 有语法错误,无输出结果10. 下面的程序main(){int x=3,y=0,z=0;if(x=y+z)printf("* * * *");else printf("####");}().A. 有语法错误不能通过编译B. 输出* * * *C. 可以通过编译, 但是不能通过连接, 因而不能运行D. 输出####11. +以下定义语句中正确的是().A. char a=''''A''''b=''''B''''B. float a=b=10.0C. int a=10,*b=&aD. float *a,b=&a12. 设有如下一段程序int *var,ab;ab=100;var=&ab;ab=*var+10;执行下面的程序段后,ab的值为().A. 120B. 110C. 100D. 9013. 若x和y都是int型变量,x=100、y=200,且有下面的程序片段 printf("%d",(x,y) ); 上面程序片段的输出结果是().A. 200B. 100C. 100 200D. 输入格式符不够,输出不确定的值14. 若有以下说明和定义union dt{int a;char b;double c;}data;以下叙述中错误的是().A. data的每个成员起始地址都相同B. 变量data所占的内存字节数与成员c所占字节数相等C. 程序段:data.a=5;printf("%f\n",data.c);输出结果为5.D. data可以作为函数的实参15. 设有如下枚举类型定义enum language{Basic=3,Assembly=6,Ada=100,COBOL,Fortran}枚举量Fortran的值为().A. 4B. 7C. 102D. 10316. 以下叙述中正确的是().A. C语言的源程序不必通过编译就可以直接运行B. C语言中的每条可执行语句最终都将被转换成二进制的机器指令C. C语言程序经编译形成的二进制代码可以直接运行D. C语言中的函数不可以单独进行编译17. 在一个C程序中()A. main函数必须出现在所有函数之前B. main函数可以在任何地方出现C. main函数必须出现在所有函数之后D. main函数必须出现在固定位置18. 以下叙述中错误的是().A. 对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B. 数组名代表的是数组所占存储区的首地址,其值不可改变C. 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出"下标越界"的出错信息D. 可以通过赋初值的方式确定数组元素的个数19. 有以下程序main(){char s[]="Yes\n/No",*ps=s; puts(ps+4);*(ps+4)=0; puts(s);}3 / 6程序运行后的输出结果是().A. n/NO Yes /NOB. /NO YesC. /NO Yes /NOD. /NO Yes20. 以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是().A. char s[10]="abcdefg"B. char t[]="abcdefg",*s=tC. char s[10];s="abcdefg"D. char s[10];strcpy(s,"abcdefg")21. C语言中的标示符只能由字母、数字和下划线三种字符组成,且第一个字符()A. 必须是字母B. 必须是下划线C. 必须是字母或下划线D. 可以是字母或数字或下划线中的任意一种22. 以下程序段给数组所有的元素输入数据,请选择正确答案填入:#include main(){int a[10],i=0;while(i<10)scanf("%d",());}A. a+(i++)B. &a[i+1]C. a+ID. &a[++i]23. C语言中while和do-while循环的主要区别是()A. do-while的循环体至少无条件执行一次B. while的循环控制条件比do-while的循环控制条件严格C. do-while 允许从外部转到循环体内D. do-while 的循环体不能是复合语句24. 下面四个选项当中,均是关键字的是()A. auto,enum,includeB. switch,typedef,continueC. signed,union,scanfD. if,struct,type25. 设ch是char型变量,其值为A,且有下面的表达式 ch=(ch>=''A''&&ch<=''Z'')?(ch+32):ch 上面表达式的值是().A. B. a C. Z D. z26. 以下叙述中正确的是().A. 用C程序实现的算法必须要有输入和输出操作B. 用C程序实现的算法可以没有输出但必须要输入C. 用C程序实现的算法可以没有输入但必须要有输出D. 用C程序实现的算法可以既没有输入也没有输出27. 有以下程序:main(){int s=0,a=1,n;scanf("%d",&n);do {s+=1; a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的输出值为2,则应该从键盘给n输入的值是().A. -1B. -3C. -5D. 028. 有以下程序main(){int c=35;printf("%d\n",c&c);}程序运行后的输出结果是().A. 0B. 70C. 35D. 129. 有以下程序main(){int a[]={1,2,3,4,5,6,7,8,9,0},*p;for(p=a;p<="" 程序运行后的输出结果是(="" }="" printf(?%d,?,*p);="">A. 1,2,3,4,5,6,7,8,9,0B. 2,3,4,5,6,7,8,9,10,1C. 0,1,2,3,4,5,6,7,8,9D. 1,1,1,1,1,1,1,1,1,130. 正确的自定义标识符是()A. a=2B. a+bC. nameD. default31. 有以下程序:#define f(x) x*x main(){int i;i=f(4+4)/f(2+2);printf("%d\n",i);}执行后输出的结果是().A. 28B. 22C. 16D. 432. 下面函数int fun1(char*x){char *y=x;while(*y++);return(y-x-1);}的功能是().A. 求字符串的长度B. 比较两个字符串的大小C. 将字符串x复制到字符串yD. 将字符串x连接到字符串y后面33. 以下程序运行后的输出结果是()fun(int a, int b){if(a>b) return a;5 / 6else return b;}main(){int x=3, y=8, z=6, r;r=fun(fun(x,y), 2*z);printf("%d\n", r);}A. 3B. 6C. 8D. 1234. 已定义c为字符型变量,则下列语句中正确的是().A. c=''97B. c="97";C. c=97;D. c="a";''35. 若变量已正确定义并赋值,下面符合C语言的表达式是().A. a:=b+1B. a=b=c+2C. int 18.5%3D. a=a+7=c+b36. s1和s2已正确定义并分别指向两个字符串.若要求:当s1所指串大于s2所指串时,执行语句S;,则以下选项中正确的是().A. if(s1>s2) SB. if(strcmp(s1,s2)) SC. if(strcmp(s2,s1)>0) SD. if(strcmp(s1,s2)>0) S37. 以下选项中属于C语言的数据类型是()A. 复数型B. 逻辑型C. 集合型D. 双精度型38. C语言中,long类型的数据占字节数为() A. 1 B. 2 C. 4 D. 839. 有以下程序main(){int a=1,b;for(b=1;b<=10;b++){if(a>=8) break;if(a%2==1){a+=5;continue;}a-=3;}printf("%d\n",b);}程序运行后的输出结果是().A. 3B. 4C. 5D. 640. 编辑程序的功能是()A. 建立并修改程序B. 将C源程序编译成目标程序C. 调试程序D. 命令计算机执行指定的操作答案:一、单项选择题(100分,共 40 题,每小题 2.5 分)1. C2. B3. D4. A5. D6. B7. D8. B9. D 10. D 11. C 12. B 13. A 14. C 15. C 16. B17. B 18. C 19. B 20. C 21. C 22. A 23. A 24. B 25. B 26. C 27. B 28. C 29. A 30. C 31.A 32. A 33. D 34. C 35.B 36. D 37. D 38.C 39. B 40. A。
书面作业2(数组、函数、指针、系统函数、结构体、文件读写)一、判断题:在正确的说法前面填写T,在错误的说法前面填写F(每题1分)[得分: ] (F )1.每一个C语言函数,都必须用return语句结束。
(T )2.如果函数有返回值,则该函数的表达式可以作为数据对象使用。
(F )3. 函数表达式中,实参类型必须与对应的形参类型一样。
(T )4.函数调用时,实参与形参必须类型兼容,且一一对应。
(T )5.C语言实参与形参结合的唯一方式是将实参的值复制到形参中。
(F )6.C语言实参与形参结合的一种方式是将实参的地址复制给形参。
(T )7.在函数体中申明的变量,仅在该函数范围内有效。
(T )8.在所有函数外申明且位于所有函数定义之前的变量,可以在所有函数中使用。
(F )9. C 语言程序中,main 函数必须放在所有其他函数之前。
(F )10.数组名相当于一个变量名,可以作为变量使用。
(T )11.数组元素表达式相当于一个变量名,可以作为变量使用。
(F )12.数组元素在内存中如何排列,并没有严格的要求。
(T )13.数组元素在内存中必须一个紧挨一个存放,因此数组是一种数据结构。
(T )14.字符串实际上是一个1维字符数组,其最后一个元素必须是字符‟\0‟。
(F )15.任何一个一维字符数组都可以当成字符串使用。
(T )16.字符串数组相当于最末一个元素为字符‟\0‟的一维数组的数组。
(F )17.将字符串字面值”hello!”赋值给一维字符数组str的写法是:str = “hello!”;(F )18. 指针表示变量的地址,因此没有类型之分别。
(T )19. 指向不同数组的两个指针不能进行有意义的比较。
(F )20. 数组名相当于一个指针变量。
(T )21. 数组名相当于一个指针常数。
(T )22. 数组名可进行取值运算,指针变量可进行下标运算。
(T )23. 数组名是指向数组第一个元素的指针常数。
《二级C语言》练习题库与参考答案一、单选题(共100题,每题1分,共100分)1、软件生命周期中,确定软件系统要做什么的阶段是()。
A、软件测试B、软件设计C、需求分析D、系统维护正确答案:C2、软件生命周期是指()。
A、软件的开发与管理B、软件产品从提出、实现、使用、维护到停止使用退役的过程C、软件的实现和维护D、软件的需求分析、设计与实现正确答案:B3、某二叉树中有n个叶子结点,则该二叉树中度为2的结点数为()。
A、n+1B、n/2C、2nD、n-1正确答案:D4、若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是()。
A、main() { float fun(int i,int j); ……x=fun(i,j);…… } float fun(inta,int b){……}B、float fun(int,int); main() {……x=fun(2,10);……} float fun(inta,int b){……}C、float fun(inta,int b){……} main() {……x=fun(i,j);……}D、main() {……x=fun(2,10);……} float fun(inta,int b){……}正确答案:D5、以下关于指针的叙述,错误的是()。
A、两个基类型相同的指针变量不能指向同一个对象B、可以通过对指针变量自增、自减来移动指针C、只有两个类型相同的指针才能进行减运算D、一个指针变量可以通过不同的方式获得一个确定的地址值正确答案:A6、结构化程序设计的基本原则不包括()。
A、模块化B、逐步求精C、自顶向下D、多态性正确答案:D7、下面描述不属于软件特点的是()。
A、软件复杂性高B、软件使用不涉及知识产权C、软件在使用中不存在磨损、老化问题D、软件是一种逻辑实体,具有抽象性正确答案:B8、关系表中的每一行记录称为一个()。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★C语言第二次大作业班级:机电***学号:*******姓名:*******★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★一、题目1、基于VC6编写一个简易菜单驱动(简易的闪烁菜单)的程序,实现求解三角形面积、一元二次方程根、判断素数、退出四个功能。
要求界面友好,光标控制(光标所在行对应文字闪烁显示),按回车键进入相应的功能,其中求解三角形面积功能中有一个子菜单以实现三种不同解法并可以返回主菜单。
至少定义5个函数,可适当加入一些趣味函数提高趣味性。
2、基于KEIL编写一个控制单片机实验系统V2数码管动态显示本人学号的程序。
应用设想:某些店面门口可以动态显示订餐、订货电话,为消费者提供便利。
当然,点阵显示效果更好,不仅可以显示数字还可以显示字母、文字。
二、题目分析及算法1、该题要求实现光标控制的闪烁菜单,并且有一个子菜单。
该题主要是对模块化程序设计进行训练。
菜单实现四种不同的功能可使用switch-case函数实现(本程序的选择分支结构均可使用该函数),为使界面友好可定义一个光标定位函数使得光标先到相应行和列再执行程序语句。
闪烁菜单可在静态菜单的基础上根据定义好的静态菜单返回的不同的函数值,巧妙结合延时函数间歇性输出菜单选项,实现闪烁。
编程时应注意数据类型(全局变量、局部变量、静态变量(关键字Static))的使用。
此外还有return、break,continue、exit()、while语句、if 语句、kbhit()、getch()等函数的使用。
求解三角形面积算法:要求实现三种不同解法(已知三边(首先要判断输入的三边长能否构成三角形)、已知两边及其夹角,已知底和对应的高)。
解法一要注意函数sin()的用法!判断素数算法: 素数(质数)指在大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为只有1和本身两个因数的数)。
C语⾔程序设计第⼆次作业(⼀)改错1.输出带框⽂字:在屏幕上输出以下3⾏信息。
错误信息1:错误原因:改正⽅法:将stido改为stdio错误信息2:错误原因:第三个\n后缺少引号改正⽅法:在第三个\n后边补全引号错误信息3:错误原因:丢失;改正⽅法:在printf(" Welcome\n")后加⼀个;错误信息4:错误原因:单词错误改正⽅法:把mian改成main2.计算某个数x的平⽅赋给y:分别以“y = xx” 和 “xx = y” 的形式输出x和y的值。
注意不要删除源程序中的任何注释。
输⼊输出⽰例(假设x的值为3)错误信息1:错误原因:丢失h改正⽅法:将改成<stdio.h>错误信息2:错误原因:注释符不全改正⽅法:在输出后补上*/错误信息3:运⾏程序发现结果不正确,错误原因:第7,8⾏的printf语句中缺少部分对应的函数值改正⽅法:补全对应函数值,如图错误信息4:错误原因:未给函数赋值改正⽅法:给函数赋值3运⾏程序发现仍存在错误,经检查发现错误为第七⾏引号⾥缺少\n并且第⼋⾏d前缺少%,改正后如图所⽰程序运⾏正确且符合题⽬要求。
(⼆)学习总结1.不同的数据类型,在计算机中所占内存⼤⼩是不⼀样的,C语⾔提供了sizeof运算符,可以获取数据字节数。
其基本语法如下:sizeof(数据类型名称)或sizeof(变量名)利⽤sizeof运算符编程求出int类型数据所占的字节⼤⼩源代码输出结果:利⽤sizeof运算符编程求出long类型数据所占的字节⼤⼩源代码输出结果:利⽤sizeof运算符编程求出float类型数据所占的字节⼤⼩源代码输出结果利⽤sizeof运算符编程求出double类型数据所占的字节⼤⼩源代码输出结果2.在C语⾔中,在头⽂件limits.h中,有关于各种基本数据类型的最⼤以及最⼩值的宏定义。
例如,int型的最⼤值为INT_MAX,最⼩值为INT_MIN。
第二次课作业:
习题2-1
题码:章节:简单的C程序设计考查点:字符变量输入、输出函数的正确使用、ASIIC码的理解难度:1 编写一程序P710.C实现以下功能
输入一个小写英文字母,首先输出它及其ASCII码,然后输出其对应的大写字母及其ASCII码。
编程可用素材:
printf("Input a lowercase letter: ")...、printf("\n...(...)...。
程序的运行效果应类似地如图1所示,图1中的y是从键盘输入的内容。
图1 程序运行效果示例
习题2-2
题码:章节:简单的C程序设计考查点:数据类型选择,表达式计算、基本输入/输出难度:1
编写一程序P711.C实现以下功能
用scanf输入圆半径r,圆柱高h,求圆周长C1(=2πr)、圆面积S(=πr2)、圆柱体积V(=πr2h)。
(注意:本题中规定圆周率取值为3.14)
程序的运行效果应类似地如图1所示,图1中的r=1.3,h=5是从键盘输入的内容。
图1 程序运行效果示例
习题2-3
题码:章节:程序的控制结构考查点:数据类型的正确定义,基本输入输出函数的正确使用,分支结构的掌握难度:1 编写一程序P723.C实现以下功能
输入三角形的三边长a、b、c(边长可以是小数),求三角形面积area,并输出。
如果输入的三边构不成三角形,应给出“data error”的信息提示。
注:根据“海伦-秦九韶”公式,area=√p(p-a)(p-b)(p-c),其中p=(a+b+c)/2。
编程可用素材:
printf("\nplease input triange sides:")...、printf("\ndata error\n")...、printf("\narea=...\n"...。
程序的运行效果应类似地如图1和图2所示,图1中的3,4,5和图2中的3,4,8是从键盘输入的内容。
图1 程序运行效果示例图2 程序运行效果示例
习题2-4
题码:章节:简单的C程序设计考查点:数据类型的正确定义,运算符及表达式的应用的掌握,基本输入输出难度:1 编写一程序P736.C实现以下功能
从键盘上输入一个四位整数,计算各个位上的数字之和。
编程可用素材:printf("Input a number with 4-digit: ")...、printf("sum=...\n"...。
程序的运行效果应类似地如图1所示,图1中的1234是从键盘输入的内容。
图1 程序运行效果示例
1 / 1。