C语言实训指导习题(全).doc_第1页
C语言实训指导习题(全).doc_第2页
C语言实训指导习题(全).doc_第3页
C语言实训指导习题(全).doc_第4页
C语言实训指导习题(全).doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C 语言程序设计 模拟试题第1章 习题1.C语言程序的基本结构是【 】。A) 函数 B) 语句 C) 字符 D) 程序行2.下列四个叙述中,正确的是【 】 A)在C程序中,主函数必须位于其他函数的最前面 B)在C程序中,一行只能写一条语句 C)C程序的基本结构是程序行 D)C语句是完成程序功能的最小单位3.C语言规定,在一个C程序中,main()函数的位置是【 】A)必须在开始 B) 必须在最后 C) 可以任意 D) 必须在系统调用的库函数之后4.以下叙述中,正确的是【 】 。 A)C语言程序总是从第一个定义的函数开始执行 .B)C语言程序中,要调用的函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行 D)C语言程序中的main()函数必须放在程序的开始部分5.在C语言提供的合法的关键字是【 】A)switchB)cherC)CaseD)FLOAT 6.以下用户标识符,其中合法的是【 】A) ForB) 4dC) f2.G3D) _f#第2章 习题C语言所提供的五种基本数据类型包括:字符型、整型、双精度型、浮点型和【D】。A) 指针型 B)结构型 C)数组型 D)无值类型2.列四组数据类型中,C语言允许的一组是【B 】A) 整型、实型、逻辑型,双精度型 B) 整型、实型、字符型,无值类型 C) 整型、双精度型、布尔型,无值类型 D) 整型、实型、复型、字符型3.下面均是合法整型常量的是【A 】。A) 160 B) -0xcdf C)-01 D) -0x48a -0xffff 01a 986.12 2e5 012 0xe 0668 0x4.在C语言中,合法的字符常量是【 B 】 A)084 B)x43 C)ab D)05.下面错误的转义字符是 【 A】A) 091B) C) 0 D) 6下面不正确的字符串常量是【 A 】。A) abc B) “1212” C) “0” D) “ ”7.C语言中,int、char、和short三种类型数据占用的字节数是【D 】。A) 用户自定义 B)均为2个字节C) 任意的 D) 由机器字长决定8.在C语言中,合法的长整型常数是【 A】A) 0L B) 49627 C) 324562& D) 216D9.表达式5/2的值是【C 】。A)2.5B)2 C)3D)110.要求运算数必须是整型的运算符是【C 】。A) / B) + C) % D) +11.若希望当整型变量A的值为5时, 表达式的值为1, 则下面不能满足要求的表达式是【C 】。 A) A/2-1B) A%2 C)(A-2)/2 D) (A+3)%212.以下能正确定义变量a, b和c并为它们赋值的语句是【D 】A) int a=5; b=5; c=5; B) int a,b,c=5; C) a=5,b=5,c=5; D) int a=5, b=5, c=5;13.int x=43, y=0; char ch=A; 则表达式x*y+ch-B的值是【D 】。 A) 43 B) 65 C) 1 D) -114.设int a=1, d=4; float b=2.0, c=3.0, 则表达式a+b*c-d%2 的值是【D 】。 A) 5 B) 6 C) 5.0 D) 6.015.若给定表达式 2.5+3/2-7%2,则该表达式的值是【 C】。A) 2 B) 1 C) 2.5 D) 2.016.下列运算符中,优先级最高的是【B 】。 A) * B) + C) + D) /=17.下列运算符中,运算优先级最低的是【D 】。 A) - B) / C) + D) -=18.若有以下定义: int x=3, y=2; float a=2.5, b=3.5; 则表达式 (x+y)%2+(int)a/(int)b 的值是【D 】。 A) 0 B) 2 C) 1.5 D) 119.若有定义int b=7;float a=2.5,c=4.7 则表达式 a+(int)(b/3*(int)(a+c)/2)%4的值为【 A】。A) 5.5 B) 5 C) 6.5 D) 620.a、b均为整数, 且b0, 则表达式 a/b*b+a%b的值是【A 】。 A) aB) b C) a被b除的余数部分 D) a被b除商的整数部分21.以下合法的赋值语句是【 A】A) x=y=100 B) d=9+e+f=d+9; C) x+y; D) c=int(a+b);22.设int a,b;则表达式a=2,b=+a*2的值为【A 】。A)6B) 4 C) 8D) 223.若已定义int a; 则表达式 a=10, a+10, a+的值是【B 】。 A) 20 B) 10 C) 21D) 1124.有定义int a=2,b=3,c=10;则计算表达式 a+=b+2,c-=a+1 后c的值是【B 】。A) 3 B) 2 C) 1 D) 425.设int a,b,c;执行表达式a=b=1,a+,b+1,c=a+b-后,a, b和c的值分别是 【 B】A) 2, 1, 2B) 2, 0, 3 C) 2, 2, 3 D) 2, 1, 326.假定x和y为double型,则表达式x=2,y=x+3/2的值是【 D】A) 3.500000 B) 3 C) 2.000000 D) 3.00000027.设变量a为整型,f为实型,i为双精度型则表达式10+a+i*f值的数据类型是【C 】。A)int B) float C) double D) 不确定第3章 习题一、选择题1.结构化程序设计中使用的基本程序控制结构是【A】。A) 选择结构、顺序结构、循环结构B) 条件结构、嵌套结构、顺序结构C) 嵌套结构、转移结构、递归结构D) 模块结构、递归结构、循环结构2.设a为整型变量,则下列不能正确表达数学关系1a1&a5B)a=2|a=3|a=4C)1a5D)!(a=5)3.若希望当A的值为奇数时, 表达式的值为真, A的值为偶数时, 表达式的值为假,则下面满足要求的表达式是【 A】。A)A%2=1B)(A%2=0)C)!(A%2)D)(A%2=0)4.以下四条语句中,有语法错误的是【 C】。A)if(ab) m=a; B)if(a=0) m=a; D)if(a=b)=0) m=a;5.以下两条条件语句语义等价的是【B 】。A)if(a=2) printf(%dn, a);B)if(a-2) printf(%dn, a); if(a=2) printf(%dn, a); if(a!=2) printf(%dn, a); C)if(a)printf(%dn, a); D)if(a-2) printf(%dn, a); if(a=0) printf(%dn, a); if(a=2) printf(%dn, a);6.下面程序运行的结果是【B】main() int i=-1; if(i=0) printf(*n);else printf(“#n”); A) * B) # C) #n D) *#7.运行下面程序段的输出结果是【A 】。 int a=4,b=5,t; if(ab) t=a, a=b, b=t; printf(%d,%dn,a,b);A)5,4B)4,5C)5,0D)语法错误 8.有程序如下: main( ) int a ; float b , c ; scanf (“%2d %3f %4f”, &a,&b,&c); printf( “na=%d,b=%f,c=%fn”,a,b,c); 若运行以上程序时从键盘输入9876543210 ,则输出结果为【 C】A)a=98 , b=765 , c=4321 B)a=10 , b=432 , c=8765 C)a=98 , b=765.000000 , c=4321.000000 D)a=98 , b=765.0 , c=4321.0 9.下面的程序运行时,若从键盘输入1和2,则输出结果是【 B】。main( ) int a,b,s; scanf(%d%d,&a,&b); s=a; if(sb)?(z=c):(z=d) 的值为【 A】。A)4B)2C)1D)312.已有定义:char ch=A; 则表达式ch = (ch=A&chb) case 0: printf(); break; case 1: printf(!); break; case 2: printf(*); break; default: printf(#); A)B)!C)*D)#17.语句while(!E);中的表达式 !E等价于【A 】。A)E=0B)E!=1C)E!=0D)E=118.下列程序段的输出结果是【 C】。char m=a; while (!m) printf(%c,m);A)aB)aaa. C)不输出任何信息D)a19.运行下列程序,输出结果是【 A】。main() char m=a; do printf(%c,m); while(!m);A) a B)aaa. C) aD) 不输出任何值20.下列程序段执行后,s的值为【D 】。int k,s=0;for(k=1;k=10;) s=s+k; k+;A)1+2+3+.+10 B)10 C)11D)死循环21.下列程序段执行后,s的值为【 C】。int k,s=0;for(k=1;k=10;+k); s=s+k;A)55B)0C)11D)1022.下列程序段执行后,s的值为【A 】。int k,s=1;for(k=1;k=10;+k) s=s*k;A)1*2*3*.*10B)0 C)11D)1023.下列各程序段中,可以实现12345678910的是【D 】。A) long k=1,M=0; for (;k11;+k) M*=k; B) long k=1,M=1; while (k10); M*=k,k+; C) long k=1,M=1; for (;+k); M*=k; D) long k=1,M=1; while (k=10) M*=k;k+;24.下面程序段运行的结果是【 C】。int n=0;while(n+7) n-; printf(%d,n); A) 876B) 987 C) 789D) 7826.下列程序段运行后的输出结果是【 A】。int a=4; do printf(%2d,a-=3); while(!(-a);A) 1 -3 B) 1C) 是无限循环D) 1 -227.下列程序执行时,若从键盘输入12,则输出为 【A 】 。main() int num,c; scanf(%d,&num); do c=num%10; printf(%d,c); while (num/=10)0); A)21B)2C)1D)1228.下列程序段的输出结果是【C 】。 int i ; for(i=1;i=50;i+) if(i%2=0 & i%3=0 & i%7=0) printf(%d,i); A)14B)21C)42D)629.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是【A 】。for(i=5;i;i-)for(j=0;j4;j+) . A) 20B) 24C) 25D) 3030.下面的程序运行后,输出为【D 】。 main() int i=1,j=2,k=3; do if(i%j=0 & i%k=0) printf(%dn,i); break; i+; while(1); A)12B)13 C)14D)6二、读程序写结果1下面程序运行后输出结果是【 】。main() int f1=2, f2=3, f; printf(%d %d ,f1,f2); f1=f1+f2; f2=f1+f2; printf( %d,%dn, f1, f2 );2下面程序运行后输出结果是【 】。main() int x=100,a=10,b=20,ok1=5,ok2=1; if(ab) if(b!=15) if(!ok1) x=1; else if (ok2) x=10; x=-1; printf(%dn,x);3运行下面程序段的输出结果是【 】。 Int i, n=3, s=0, p=1; for( i=1; i=n; +i ) p=p*a; s+=p; printf(i=%d,p=%d,s=%dn, i, p,s);4下面程序运行后输出结果是【 】。#include #include void main() int i,j,k; for(i=2;i=10;i+) k=sqrt(i); for(j=2;jk) printf(%3d,i); 三、将程序填写完整1.以下程序实现了判断输入的一个整数是否能被5整除,若能整除,则输出Y,否则输出N。在【 】中填入适当的选项。#include stdio.hvoid main() int k; printf(Enter a int number:); scanf(%d,&k); if(【_】) printf(Yn); else printf(Nn);2.下面的程序是求s=1-1/3+1/5-1/7+,直到最后一项的绝对值小于0.00001为止。程序【 】处应填。 #include #include void main() int m=1; float n=1.0, t=1.0, s=0.0; while(fabs(t)=1e-5) 【_】; n=n+2; m=-m; t=m/n; printf(s=%fn,s);3.下面的程序是求Fibonacci数列1,1,2,3,5,8,13的前40个数(数列中的每一个数都是它的前两个数之和)。请将程序填完整。void main() long int f1=1,f2=1;int i;for(i=1;i=【_】;i+) printf(%12ld %12ldn , f1, f2 ); f1=【_】;f2=【_ 】; 第4章习题一、选择题1.下面关于一维数组的定义中,正确的是【 】。 A) int n=10; float an=1.0,2.1,3.2; B) #define N 10 int aN=1,2,3; C) int n; scanf(%d, &n); int an; D) #define N 10; int aN=1,2,3;2.下列一维数组定义中,不正确的是【 】。A) float a5+6;B) int n=10, an;C) #define M 10 int aM+5 ;D) float a10, b9 ; 3.若有说明 int a54; 则对其数组元素的正确引用是【 】。 A)a3+12 B)a(2)(3) C)a0,2D)a354.在C语言中,引用数组元素时,其数组下标的数据类型允许是【 】。A)整型常量 B)整型表达式C)整型常量或整型表达式 D)任何类型的表达式5.若有一维数组初始化语句int b5=1,2,3,4,5; 且数组的起始地址为8050H(H表示十六进制),则8058H是数组元素【 】的起始地址(假设一个int型变量在内存占2个字节存储空间)。A) b1B) b4C) b0D) b26.要将20,30,40,50 存入数组b中, 下列正确的程序段是【 】。 A)int i,b4; for(i=0; i4; i+) bi=(i+2)*10; B) int b4; b=20,30,40,50; C) int b4; b1=20,b2=30,b3=40,b4=50; D) int b4; b4=20,30,40,50;7.下面的程序运行后输出结果是【 】。void main( ) int i, s=90, a=3, 5, 7, 9, 11; for (i=1;i5;i+=2) s-=ai; printf(%dn, s);A) 74B) 76C) 72D) 688.下列程序运行后,输出值为【 】。void main() int a6=1,3,5,7,9,b=2,4,6,7,3,c,d; c=a1*b2; d=a5/b4; printf(%d,%dn,c,D) ; A) 4,3B) 4,0C) 18,0D) 18,不确定值9.下面程序的功能是求一维数组中的最大值,请选择合适的答案填空。#include#define N 10void main() int aN = 66, 88, 94, 65, 98, 72, 76, 93, 79, 86; int i,max; max=a0; for(i=1;iN;i+) if(maxai) max=【 】; printf(Max is %dn, max);A) ai-1B) aiC) ai+1D) i10.下面的程序实现了求Fibonacci数列1,1,2,3,5,8,13的前40个数(数列的前两项数均是1,从第三项开始的数都是它的前两项数之和)。请选择合适的答案填空。void main() long int fib40=1,1; int i; for(i=2;i40;i+) fibi= fibi-2+【 】; for(i=0;i39;i+=2) printf(%12ld %12ldn ,fibi,fibi+1);A) fibi-1B) fibi-2C) fibiD) fibi+111.下列二维数组的定义中,正确的是【 】。A) int n=5; float an5; B) int a9;C) #define L1 7 #define L2 8 float aL1L2;D) int n, m; scanf (%d%d,&n,&m); float amn;12.若有说明int a3=1,2,3,4,5,6,7; 则a数组第一维的大小是【 】。A) 2 B)3 C)4 D) 无确定值13.下列二维数组初始化语句中正确且与语句float a=0,1,2,0,4,0等价的是【 】。 A) float a6=0,1,2,0,4;B) float a=0,1,2,0,4; C) float a7=0,1,2,0,4,0;D) float a5=0,1,2,0,4;14.若定义了数组int k4=1,1,2,3,5,6;则数组共有【 】元素。 A)6 B) 9 C) 10 D) 1215.若 int data56;且数组的起始地址为100(十进制), 则元素data32的地址为【 】。A)120B) 113C) 140D) 12616.若有说明 double b76; 对数组元素的非法引用是【 】。A) b35B)b75C) b2*34D) b09-617.下面程序段的输出结果是【 】。 int i,j,s=0,a33=1,2,3,4,5,6;for (i=0;i3;i+) for (j=0;j3;j+) s+=aij;printf(%dn,s);A) 11B) 10C) 21D) 不确知数18.下面程序段的输出结果是【 】。int i;int x33=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) printf(%d,xi2-i); A) 1 4 7B) 3 5 7C) 3 6 9D) 1 5 919.下面的程序用来求方阵的主对角线元素之和,请将程序填完整。#include void main() int i=0,s=0; int a 4 4=0,2,0,3,0,3,4,0,4,5,6,7,6,5,0,0; while (i4) s+= 【 】; i+; printf(%dn,s); A)a3-i3-jB) ai3-iC) aiiD) a3-i420.下面的程序运行后, 输出结果是【 】。void main( ) int i, j, a55, s=0; for (i=0; i3; i+) for (j=0;j3; j+) aij=i+j; for (i=0; i5; i+) s+=aii; printf(%d, s); A) 4B) 6C) 0D) 不确定值21.运行下面的程序段,输出结果是【 】。int i;char s35=123,456,789; int sum=0;for (i=0; i3;i+)sum=sum*10+sii-0 ;printf(%d,sum);A) 159B) 456C) 123D) 78922.下面的程序用来求二维数组的最大元素及其位置,请选择合适答案填空。#include void main() int a34=1,2,3,4,5,6,7,8,9,10,11,12,i,j,max,row,col; max=a00; row=0; col=0; for(i=0;i3;i+) for(j=0;jaijB) maxaijC) max=aijD) max=aij23.若有定义 char s =a boy ;则数组的长度自动定义为【A 】。A) 6B) 5C) 8D) 724.下面字符数组初始化语句正确,且与语句char c=string; 等价的是【B 】。A) char c=s,t,r,i,n,g;B) char c=s,t,r,i,n,g,0;C) char c=string;D) char c=string;25.若有定义char str7; 要将键盘输入的字符串a book 赋给str,应使用【A 】。 A) gets(str);B) scanf(%s,str);C) str=a pear;D) getchar(str);26.若已包含标题文件,并已有定义 char s15,s2=abcd;int i;现要将字符串”abcd”赋给s1,下述语句中错误的是【B 】。A) strcpy(s1,abcd);B) s1=”abcd”;C) for(i=0;i5;i+) s1i=s2i;D) s0=a,s1=b,s2=c,s3=d;s4=0;27.若有说明char s1 =”good”, s2=”idea”, 则下列输出语句中正确的是【 A】。 A) printf(%s%s,&s10,&s20); B) printf(%c%c,s1,s2); C) putc(s1);putc(s2); D) puts(s1,s2); 28.下面程序段的运行结果是【 】。char st5=a,b,0,c,0;puts(st);A) abB) abC) ab cD) ab29.若已经包含头文件,且已有定义:char s=a,0,c,o,d,e,0;int i; 若要输出 “a code”,应使用【 D 】。A)puts(s);B) for(i=0;i6;i+) printf(%s,si);C)printf(%s,s);D) for(i=0;i6;i+) putchar(si);30.下面程序运行后,输出结果是【 】。#include void main( ) char s=abcde; int i=3; si=s5; printf(%s, s);A) abcdeB) abcdC) eabcdD) abc31.下面程序段运行后,输出结果是【 】。main() char s20=12340abcd; printf(%d,%dn,strlen(s),sizeof(s); A) 4,20B) 5,20C) 9,10D) 10,1032.printf(%d n , strlen (ATSn0121 ) ; 程序段的输出结果是【C 】。 A) 11B) 10 C) 9D) 833.要将字符串str2连接到字符串str1后,应使用的函数是【C 】。 A) strcpy(str1,str2); B) strcat(str2,str1); C) strcat(str1,str2); D) strcmp(str2,str1);34.要将字符串str2复制到字符串str1,应使用的函数是【 A 】。 A) strcpy(str1,str2); B)strcat(str2,str1); C) strcat(str1,str2);D) strcmp(str2,str1);35.设已包含标题文件,下面程序段的输出结果是【 D】。 char s120=135,s215=24;strcpy(s1,s2);printf(%dn,strlen(s1);A) 5B) 4C) 1D) 236.判断字符串s1是否小于字符串s2, 应该使用【 D 】。A) if (strcmp(s1,s2) 0)B) if (s10)37.若已定义char s1=go to bed;s2=go on; 假设已经执行预编译命令 #include,则函数strcmp(s1,s2) 的值是【 】。A) 0B) -5C) 5D) 1338.运行下面的程序段,输出结果是(【 】)。char s110=abcd, s210=efg, s3=hi;strcat(strcpy(s2,s3),s1); puts(s2);A) hiabcdB) higabcdC) abcdhiD) abcdhig39.下面的程序用来输出两个字符串中对应相等的字符, 请将程序填完整。#include void main( ) char s1=look, s2=for; int i; for (i=0; s1i!=0 & s2i!=0; i+) if( 【 C 】); putchar(s1i);A)strcmp(s1,s2)B)strcmp(s1i,s2i) C)s1i=s2i D)s1!=s2i 40.下面程序运行后,输出结果是【 】。#include void main( ) char s=after,count=0; int i; for (i=0; i5; i+ ) if (sif) count+; printf(%d, count);A) 2B) 1C) 3D) 541.下列程序的输出结果是 【C 】#includestdio.hvoid main() char s=father; int i,j=0; for(i=1;isi) j=i; sj=s6; printf(%s,s);A)frtherB)fatherC)fD)fath42.设 char str45; 所说明的数组在存储区的起始地址为50(十进制), 则数组元素str33在存储区中的地址为【 】。A) 62B) 86C) 63D) 6843.下面程序的结果是【 】。void main( ) int i=1,s=0; char a 5=1203,0340,4567,6522; while (i4) s+=aii-0; i+; printf(%dn, s); A) 15B) 13C) 12D) 11二、读程序写结果1. 阅读下面程序,给出输出结果。#include voi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论