C语言作业6
- 格式:doc
- 大小:364.00 KB
- 文档页数:30
第一章填空题1.C语言是一种的程序设计语言。
2.C程序是由函数构成的,一个C源程序至少包含一个函数。
3.C程序的执行是从函数开始。
4.一个函数由和两部分组成。
5.函数体一般包括和。
6.C源文件取名,后缀一般为,编译源代码,生成目标文件,其后缀名一般为,对目标文件进行连接,生成可执行文件,其后缀名一般为。
7.一个C语言的语句至少应包含一个。
8.用对C程序中的任何部分作注释。
第三章填空题1.变量代表内存中具有特定属性的一个。
2.在C语言中,要求对所有用到的变量作强制定义,也就是“先,后”。
3.在定义变量的同时给变量一个值,称为。
4.#define PI 3.14 说明PI为。
5.C语言规定标识符只能由、和三种字符组成,且第一个字符必须为或。
6.在C语言中整数可用________进制数、________进制数、________进制数三种数制表示。
7.C语言中的实数又称,它有两种表示形式、。
8.在微机内存中,字符型数据以____________存储。
9.表达式 b=35/7*5-7%4*4 运算后 b= 。
10.已有变量a,其值伪2,则表达式(a=3*5),a+=2,a++ 的值为,a的值为。
选择题1.以下符合C语言语法的实型常量是()。
A 1.2E0.5B 3.14159EC 0.5E-3D E152.在C语言中运算对象必需是整型的运算符是()。
A %B /C *D !3.已有变量a,其值伪9,表达式a+=a-=a+a的值伪()。
A -9B -18C 9D 184.下列选项中,能用作标识符的是()。
A 2_int_B *1_2C int-2_D _123a5.在C语言提供的合法的关键字是()。
A swicthB cherC defaultD Case6.如定义变量 i=3,则表达式-i++的值和i的值分别为()。
A -3 4B -4 4C -3 3D -4 37.表达式(b=(2,3),b+=2 )%15+b 的值为( )。
第三章练习题之运算符和表达式一、选择题:1、以下运算符中,优先级最高的运算符是()A. =B. !=C. *(乘号)D. ()2、若有以下定义,则能使值为3的表达式是()int k=7, x=12;A. x%=(k%=5)B. x%=(k-k%5)C. x%=k-k%5D. (x%=k)-(k%=5)3、设在tc2.0中有整型变量x,y,z均为3,表达式(x++)+(y++)+(z++)的值是 ( )A. 6B. 7C. 8D. 94、有以下程序运行后的输出结果是:()main(){ char a='A',b;print("%c,",++a);printf("%c\n",b=a++);}A. B,BB. B,CC. A,BD. A,C5、有以下程序运行后的输出结果是:()main(){ char a='a';printf ("%c,",++a);printf("%c\n",a++);}A)b,b B)b,c C)a,b D)a,c6、设a=6,b=4,则表达式b*=a+3的值为:()A)3 B)18 C)27 D)367、有如下程序段,其输出结果是: ( )int a=3;float b=15.6,f=1.5;printf(“%d”,a+(int)b/2+(int)f%3);A)10 B)11 C)12 D)138、以下程序的输出结果是:()main( ){int a=3 ;printf ( "%d %d\n " , a , a++) ; }A. 4 3B. 4 4C. 5 3D. 5 49、以下程序的输出结果是()。
main( ){int a=10;printf ( "%d %d\n " , a , a++) ; }(A)11 10 (B)11 11 (C)12 20 (D)12 1110、若有定义:int a=8,b=5,c;执行语句c=a / b+0.4 ; 后c的值为()。
c语言大作业综合第一章C语言简介及算法一.选择题1.一个C程序可以包含的函数。
A.一个B.多个C.若干D.任意2.下面不可以使用来编译和连接一个C 程序。
A.TurboCB.VC++C.C语言编译器D.BC3.C语言的程序一行写不下时,可以。
A.用逗号换行B.用分号换行C.在任意一空格处换行D.用回车符换行4.C控制语句有种。
A.6B.9C.32D.345.复合语句是用一对界定的语句块。
A.{}B.[]C.()D.”6.一个C程序的执行总是从该程序的函数开始,在函数最后结束。
A.第一个、最后一个B.main、mainC.主函数、最后一个D.第一个、第一个7.C语言提供的合法的数据类型关键字A.FloatB.ignedC.integerD.Char8.在以下各组标识符中,合法的标识符是(1)A.B01B.table_1C.0_tD.k%(2)A.Fat_B.voidC.pblD.(3)A.某y_B.longdoubleC.某pD.CHAR(4)A.jB.IntC._某yD.w_y239.C语言的标识符里不能有A.大小写字母B.数字C..D.下划线二.填空题1.C程序是由构成的,一个C程序中至少包含因此,是C程序的基本单位。
2.C程序注释是由和所界定的文字信息组成的。
3.函数体一般包括和4.算法是解决问题的和的描述。
5.C程序的注释部分可以出现在程序的位置,它对程序的编译和运行作用,但是可以增加程序的第二章C语言数据类型、基本运算及简单程序设计一.选择题1.不合法的字符常量是A.‘\\t’B.“A”C.‘a’D.’\\某32’2.逻辑运算符两侧运算对象的数据类型。
A.只能是0或1B.只能是0或非0正数C.只能是整型或字符型数据D.可以是任何类型的数据3.下列表达式中,不满足“当某的值为偶数时值为真,为奇数时值为假”的要求。
A.某%2==0B.!某%2!=0C.(某/2某2-某)==0D.!(某%2)4.下面选项中,不是合法整型常量的是A.160B.-0某cdgC.-01D.-0某48a5.能正确表示“当某的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是。
指针(红色部分不做或选做)一、选择题1、若有以下定义和语句,且0≤i<10则对数组元素的错误引用是C。
int a[10]={1,2,3,4,5,6,7,8,9,10},*p,i;p=a;A. *(a+i)B. a[p-a]C. p+iD. *(&a[i])2、若有定义:int a[3][4]; ,A不能表示数组元素a[1][1]。
A. *(a[1]+1)B. *(&a[1][1])C. (*(a+1)[1])D. *(a+5)3、对如下定义,以下说法中正确的是D。
A. char *a[2]={"abcd","ABCD"};B. 数组a的元素值分别为"abcd"和"ABCD"C. a是指针变量,它指向含有两个数组元素的字符型数组D.数组a的两个元素分别存放的是含有4个字符的一维数组的首地址4、数组a的两个元素中各自存放了字符’a’、’A’的地址char *s="\t\\Name\\Address\n";指针s所指字符串的长度为:D。
A. 说明不合法B. 19C. 18D. 155、分析下面函数,以下说法正确的是D。
swap(int *p1,int *p2){ int *p;*p=*p1; *p1=*p2; *p2=*p;}A. 交换*p1和*p2的值B. 正确,但无法改变*p1和*p2的值C. 交换*p1和*p2的地址D. 可能造成系统故障,因为使用了空指针6、设有说明int (*ptr)[M]; 其中ptr是C。
A. M个指向整型变量的指针B. 指向M个整型变量的函数指针C. 一个指向具有M个整型元素的一维数组的指针D. 具有M个指针元素的一维指针数组,每个元素都只能指向整型量7、在说明语句:int *f(); 中,标识符代表的是:B。
A. 一个用于指向整型数据的指针变量B. 一个用于指向一维数组的指针C. 一个用于指向函数的指针变量D. 一个返回值为指针型的函数名8、若int x ,*pb;,则正确的赋值表达式是A。
1.t为int类型,进入下面的循环之前,t的值为0while( t=l ){ ……}则以下叙述中正确的是( B )(A) 循环控制表达式的值为0 (B) 循环控制表达式的值为1(C) 循环控制表达式不合法(D) 以上说法都不对2.有以下程序main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf(“%d\n”,s);}程序执行后的输出结果是 ( D )。
(A) 自然数1~9的累加和 (B) 自然数1~10的累加和(C) 自然数1~9中的奇数之和 (D) 自然数1~10中的偶数之和3.以下程序段的输出结果是( C )。
int x=3;do{ printf("%3d",x-=2); }while(!(- -x));(A)1 (B)30 (C)1 -2 (D)死循环4.以下程序中,while循环的循环次数是( D)。
main(){ int i=0;while(i<10){ if(i<1) continue;if(i==5) break;i++;}......}(A) 1 (B) 10(C) 6 (D) 死循环,不能确定次数5.下面程序的输出是( B )。
(A)741 (B)852 (C)963 (D)875421main(){int y=9;for(;y>0;y--){if(y%3==0){printf("%d",--y);continue;}}}6.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是( A)。
for (i=5;i;i--)for(j=0;j<4;j++){...}(A)20 (B)25 (C)24 (D)307.执行语句: for(i=l;i++<4;;);后,变量i的值是(C)。
(A) 3 (B) 4 (C) 5 (D) 不定8.假定a和b为int型变量,则执行以下语句后b的值为( D )。
第六套1.树是结点的集合,它的根结点数目是( )A.有且只有1B.1或多于1C.0或1D.至少2分析:树是一个或多个结点组成的有限集合,其中一个特定的结点称为根,其余结点分为若干个不相交的集合。
每个集合同时又时一棵树。
树有且只有1个根结点。
2.在设计程序时,应采纳的原则之一是( )A.不限制goto语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解分析:滥用goto语句将使程序流程无规律,可读性差,因此A)不选;注解行有利于对程序的理解,不应减少或取消,B)也不选;程序的长短要依照实际情况而论,而不是越短越好,C)也不选。
3.下列叙述中,不属于软件需求规格说明书的作用的是( )A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析分析:软件需求规格说明书(SRS,Software Requirement Specification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。
它有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。
4.单个用户使用的数据视图的描述称为( )A.外模式B.概念模式C.内模式D.存储模式分析:选项A正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项D)不正确,存储模式为内模式。
5.SQL语言又称为( )A.结构化定义语言B.结构化控制语言C.结构化查询语言D.结构化操纵语言分析:结构化查询语言(Structured Query Language,简称SQL)是集数据定义、数据操纵和数据控制功能于一体的数据库语言。
C语言单元练习题第一单元数据类型、表达式及顺序结构练习题一、选择题:1、不合法的C语言整型常量是。
A. –012B. 0x35C. 123LD. 8E22、不合法的C语言实型常量是。
A. E3B. .123C. –6.2E4D. 5.03、不合法的C字符常量是。
A. ´2´B. ´\101´C. ´AB´D. ´\n´4、下列四组选项中,均是不合法的用户标识符的选项是。
A. W P_0 doB. b-a goto intC. float la0 _AD. -123 abc TEMP5、定义三个变量a、b、c,并分别赋初值为5。
能实现该功能的语句是。
A. int a=b=c=5;B. int a,b,c=5;C. int a=5,b=5,c=5;D. int a=5;b=5;c=5;6、设有说明:char w;int x; float y;double z;则表达式w*x+z-y值的数据类型为。
A. floatB. charC. intD. double7、以下选项中不能用作C程序合法常量的是()。
A. 1.234B. '123'C.123D."\x7G"8、以下选项中可用作C程序合法实数的是()A. .1e0B.3.0e0.2C.E9D.9.12E9、下列标识符中,不合法的用户标识符为()。
A. PadB. CHARC. a_10D. a≠b10、以下选项中能表示合法常量的是()。
A.整数:1,200B.实数:1.5E2.0C.字符斜杠:‘\’D.字符串:"\007"11、以下选项中,能用作数据常量的是()。
A.o115B. 0118C.1.5e1.5D. 115L12、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。
A.1B.0C.2D.313、若有定义语句:int x=10;,则表达式x-=x+x的值为()A.-20B.-10C.0D.1014、表达式:(int)((double)9/2)-(9)%2的值是()。
36 杀鸡用牛刀——要用递归啊! 成绩: 5 / 折扣: 0.8 背景: 哈哈!我们终于学了递归了,现在大家一定感到非常有意思吧,那个典型的“汉诺塔”问题,一个非常短的程序居然可以完成如此复杂的工作,真是神奇啊!来吧,让我们也动手编写一个递归程序,当然,我们要编写的不可能太复杂。
功能: 求整数 n 到 m 区间的累加和,其中n<=m。
输入: 区间的起始点n 区间的终止点m
输出: 累加和
要求: 使用递归算法完成。如此简单的题目当然要有隐含的测试用例啦,就3个,看看谁能猜出来。
测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1
以文本方式显示 1. 1 10 以文本方式显示
1. The sum from 1 to 10 is 55. 1秒 64M 0
测试用例 2
以文本方式显示 1. 10 15 以文本方式显示
1. The sum from 10 to 15 is 75. 1秒 64M 0
#include int sum(int a,int b) { int result=0; if(b-a==1) {result=a+b;} else if(b==a) {result=a;} else { result=sum(a,b-2)+sum(b-1,b); } return result; }
int main() { int a,b; scanf("%d%d",&a,&b);
printf("The sum from %d to %d is %d.\n",a,b,sum(a,b)); }
37 求最大公约数——递归 成绩: 5 / 折扣: 0.8 请使用递归算法计算正整数n和m的最大公约数GCD(n,m)。 = m 当 m<=n 且 n mod m =0 GCD(N,M) = GCD(m,n) 当n = GCD(m, n mod m) 其他
输入: n和m
输出: n和m的最大公约数
测试输入 期待的输出 时间限制 内存限制 额外进程
测试用例 1 以文本方式显示 1. 24 48 以文本方式显示 1. 24 1秒 64M 0
测试用例 2 以文本方式显示 以文本方式显示 1秒 64M 0 1. 13 15 1. 1 #include int f(long a,long b) { long result; long temp=a%b; if(temp==0) result=b; else result=f(b,temp); return result; } int main() { long a,b; scanf("%ld%ld",&a,&b); long temp; if(a{ temp=a; a=b; b=temp; } printf("%ld\n",f(a,b)); }
38 回文字符串——递归 成绩: 5 / 折扣: 0.8 有一种特殊形式的字符串,其正反序相同,被称为“回文字符串”。例如LeveL就是一个回文字符串。
输入: 字符串
输出: Yes或者No 说明: 如输出Yes,说明输入的字符串是一个回文字符串 输出No,说明输入的字符串不是一个回文字符串 请使用递归算法实现。
测试输入 期待的输出 时间限制 内存限制 额外进程
测试用例 1 以文本方式显示 1. LeveL 以文本方式显示 1. Yes 1秒 64M 0
#include int judge(char *p,int start,int n) { if((start==n/2)&&(*(p+start)==*(p+n-1-start))) return 0; else if(*(p+start)==*(p+n-1-start)) return judge(p,start+1,n); else return 1; }
int main() { char word[50]; int n=0; int start=0; gets(word); for(int i=0;i<50;i++) { if(word[i]=='\0') break; n++; } if(judge(word,start,n)==0) printf("Yes\n"); else printf("No\n"); }
39 子串反向——递归 成绩: 5 / 折扣: 0.8 请编写一个递归函数 reverse(char str[], int start, int end ) ,该函数的功能是将串 str 中下标从 start 开始到 end 结束的字符颠倒顺序。假设 start 和 end 都在合理的取值范围。
例如: 执行前:str[]="0123456";start=1 ;end=4 执行后:strr[]="0432156" 要求在该函数中不使用新的数组,没有循环。 注意:只需要编写递归函数 reverse,系统中已经设置好了main函数。 预设代码
前置代码 view plaincopy to clipboardprint? 1. /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ 2. 3. #include 4. int main( ) 5. { char str[100]; 6. int start, end; 7. gets(str); 8. scanf("%d%d", &start, &end); 9. reverse( str, start, end ); 10. printf("%s\n", str); 11. return 0; 12. } 13. 14. /* PRESET CODE END - NEVER TOUCH CODE ABOVE */ /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */#include int main( ){char str[100];int start, end;gets(str);scanf("%d%d", &start, &end);reverse( str, start, end );printf("%s\n", str);return 0;}
/* PRESET CODE END - NEVER TOUCH CODE ABOVE */
测试输入 期待的输出
时间限制 内存限制 额外进程
测试用例 1
以文本方式显示
1. 0123456 2. 1 4
以文本方式显示
1. 0432156
1秒 64M 0
测试用例 6
以文本方式显示
1. 0123456 2. 6 10
以文本方式显示
1. 0123456
1秒 64M 0
测试用例 7
以文本方式显示
1. 0123456 2. 0 10
以文本方式显示
1. 6543210
1秒 64M 0
/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ #include int main( ) { char str[100]; int start, end; gets(str); scanf("%d%d", &start, &end); reverse( str, start, end ); printf("%s\n", str); return 0; }
/* PRESET CODE END - NEVER TOUCH CODE ABOVE */ #include void reverse(char *p,int start,int end) { if(end+1>strlen(p)) end=strlen(p)-1; char temp; if(start==end||end-start==1) { temp=*(p+start); *(p+start)=*(p+end); *(p+end)=temp; } else { temp=*(p+start); *(p+start)=*(p+end); *(p+end)=temp; reverse(p,start+1,end-1); }
}
40 求序列之和——递归 成绩: 5 / 折扣: 0.8 请使用递归算法求下列序列的前n项之和。 1 + 1/2 - 1/3 + 1/4 -1/5 ......
输入: n
输出: 序列的前n项和(精确到小数点之后第6位)
测试输入 期待的输出
时间限制 内存限制 额外进程
测试用例 以文本方式显示 以文本方式显示 1秒 64M 0