c语言笔试练习题.docx
- 文档编号:29398538
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:60
- 大小:39.58KB
c语言笔试练习题.docx
《c语言笔试练习题.docx》由会员分享,可在线阅读,更多相关《c语言笔试练习题.docx(60页珍藏版)》请在冰豆网上搜索。
c语言笔试练习题
3.1 综合练习题1
3.1.1 试题
一、 选择(1-30每题1分,31-45每题2分,共60分)
1. 在C语言中,如果下面的变量都是int类型,则输出的结果是( )
#include
main()
{
intsum,pad;
sum=pad=5;pad=sum++,pad++,++pad;
printf("%d\n",pad);
}
A)7 B)6 C)5 D)4
2. 以下程序的输出结果是( )
#include
main()
{inti=010,j=10;
printf("%d,%d\n",++i,j--);}
A) 11,10 B)9,10 C)010,9 D)10,9
3. 已知在ASCⅡ代码中,字母A的序号是65,以下程序的输出的结果是( )
#include
main()
{charc1='A',c2='Y';
printf("%d,%d\n",c1,c2);}
A) 因输出格式不合法,输出错误信息 B)65,90 C)A,Y D)65,89
4. 指针s所指字符串的长度为( )
char*s="\\"Name\\Address\n";
A)19 B)15 C)18 D)说法不合法
5. 设有说明int(*ptr)[m];其中的标识符ptr是( )
A) M个指向整型变量的指针
B) 指向M个整型变量的函数指针
C) 一个指向具有M个整型元素的一维数组的指针
D) 具有M个指针元素的一维指针数组,每个元素都只能指向整型量
6. 语句while(!
E);中的条件!
E等介于
A)E==0 B)E!
=1 C)E!
=0 D)~E
7. 以下程序的输出结果是( )
#include
main()
ptrintf("%d\n",NULL);}
A)不确定的(因变量无定义) B)0 C)-1 D)1
8. 以下函数调用语句中含有( )个实参。
func((exp1,exp2),(exp3,exp4,exp5));
A)1 B)2 C)4 D)5
9. 设有以下语句:
chara=3,b=6,c;
则c的二进制值是( )
A)00011011 B)00010100 C)00011100 D)00011000
10. 下面的程序中( )有错误(每行程序前面的数字是行号)。
行号 程序代码
1 #include
2 main()
3 {
4 floata[3]={0,0};
5 inti;
6 for(i=0;i<3,i++)scanf(“%d”,&a[i]);
7 for(i=1;i<3,i++)a[0]=a[0]+a[i];
8 printf(“%f\n”,a[0]);
9 }
A)没有 B)第4行 C)第6行 D)第8行
11. 设有语句inta=3;则执行了语句a+=a-=a*a;后,变量a的值是( )
A)3 B)0 C)9 D)-12
12. 以下的for循环( )
for(x=0,y=0;(y!
=123)&&(x<4);x++);
A)是无限循环 B)循环次数不定 C)执行4次 D)执行3次
13. 设有语句chara=`\72`;则变量a( )
A)包含有1个字符 B)包含有2个字符
C)包含有3个字符 D)说明不合法
14. 以下的程序的输出结果是( )
#include
#include
main()
{inta=1,b=4,c=2;
floatx=10.5,y=4.0;
floatz;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
printf("%f\n",z);}
A)14.00000 B)015.400000 C)13.700000 D)14.900000
15. sizeof(double)是( )
A)一种函数调用B)一个双精度型表达式C)一个整型表达式D)一个不合法的表达式
16. C语言中( )
A)不能使用do-while语句构成的循环
B)do-while语句构成的循环必须用break语句才能退出
C)do-while语句构成的循环,当while语句的中表达式值为非零时结束循环
D)do-while语句构成的循环,当while语句的中表达式值为零时结束循环
17. 以下的程序的输出结果是( )
#include
#include
main()
{charstr[12]={'s','t','r','i','n','g'};
printf("%d\n",strlen(str));}
A)6 B)7 C)11 D)12
18. 以下的程序的输出结果是( )
#include
main()
{inta=2,c=5;
printf("a=%%d,b=%%d\n",a,c);}
A)a=%2,b=%5 B)a=2,b=5 C)a=%%d,b=%%d D)a=%d,b=%d
19. 以下的程序的输出结果是( )
#include
main()
{inta,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);}
A)6,1 B)2,1 C)6,0 D)2,0
20. 以下的程序的输出结果是( )
#include
main()
{inti;
for(i=1;i<=5;i++)
{if(i%2)
printf("*");
elsecontinue;
printf("#");
}
printf("$\n");
}
A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$
21. 以下for语句构成的循环执行了( )次。
#include
#defineN2
#defineMN+1
#defineNUM(M+1)*M/2
main()
{inti,n=0;
for(i=1;i<=NUM;i++);
{n++;printf(“%d”,n);}
printf(“\n”);}
A)5 B)6 C)8 D)9
22. 设有以下语句,则( )不是对a数组元素的正确引用,其中0≤i<10。
inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A)a[p-a] B)*(&a[i]) C)p[i] D)*(*(a+i))
23. 以下程序的输出结果是( )
#include
#defineN6
main()
{charc[N];inti=0;
for(;i for(i=0;i 输入以下三行,每行输入都是在第一列上开始, a b cdef A)abcdef B)a C)a D)a b b b cd cdef c d e f 24. 以下程序调用findmax函数求数组中最大元素在数组中的下标,请选择填空 #include findmax(s,t,k) int*s,t,*k; {intp; for(p=0,(*k=p);p if(s[p]>s[*k]) ; } main() {inta[10],i,k; for(i=0;i<10;i++) scanf("%d",&a[i]); findmax(a,10,&k); printf("%d,%d\n",k,a[k]); } A)k=p B)*k=p-s C)k=p-s D)*k=p 25. 有以下程序: #include unionpw {inti;charch[2];}a; main() {a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);} 程序的输出结果是( )。 (注意: ch[0]在低字节,ch[1]在高字节。 ) A)13 B)14 C)208 D)209 26. 有以下程序: #include main() {intc; while((c=getchar())! ='\n') { switch(c-'2') { case0: case1: putchar(c+4); case2: putchar(c+4);break; case3: putchar(c+3); case4: putchar(c+2);break; } } printf("\n"); } 从第一列开始输入以下数据, 2743 程序的输出结果是( )。 A)66877 B)66866 C)667777 D)668866 27. 以下程序的输出结果是( )。 main() {char*alpha[6]={"ABCD","EFGH""IJKL","MNOP","QRST","UVWX"}; char**p; inti; p=alpha; for(i=0;i<4;i++) printf("%s",p[i]); printf("\n"); } A)ABCDEFGHIJKL B)ABCD C)ABCDEFGHIJKLMNOP D)AEIM 28. 以下程序的输出结果是( )。 #include #defineFUDGE(y)2.84+y #definePR(a)printf("%d",(int)(a)) #definePRINT1(a)PR(a);putchar('\n') main() {intx=2;PRINT1(FUDGE(5)*x);} A)11 B)12 C)13 D)15 29. 以下程序的输出结果是( )。 #include main() {inti=1,j=3; printf("%d,",i++); { inti=0; i+=j*2; printf("%d,%d,",i,j); } printf("%d,%d\n",i,j); } A)1,6,3,1,3 B)1,6,3,2,3 C)1,6,3,6,3 D)1,7,3,2,3 30. 以下程序的输出结果是( )。 #include main() {intk=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p); } func(inta,intb) { staticintm=0,i=2; i+=m+1; m=i+a+b; return(m); } A)8,17 B)8,16 C)8,20 D)8,8 31. 设有以下语句: charstr[4][12]={“aaa”,“bbbb”,“ccccc”,”dddddd”}, *strp[4]; inti for(i=0;i<4;i++)strp[i]=str[i]; ( )不是对字符串的正确引用,其中0≤k<4 A)strp B)str[k] C)strp[k] D)*strp 32. 设有以下语句: charstr1[]=“string”,str2[8],*str3,*str4=“string”; 则( )不是对库函数strcpy的正确调用,此库函数用业复制字符串。 A)strcpy(str1,“HELLO1”); B)strcpy(str2,“HELLO2”); C)strcpy(str3,“HELLO3”); D)strcpy(str4,“HELLO4”); 33. C语言中形参的缺省存储类别是( )。 A)自动(auto) B)静态(static) C)寄存器(register) D)外部(extern) 34. 设有以下语句: structst{intn;structst*next;}; staticstuctsta[3]={5,&a[1],7&a[2],9,'\0'},*p; p=&a[0]; 则表达式( )的值是6。 A)p++->n B)p->n++ C)(*p).n++ D)++p->n 35. 以下四个程序中,( )不能对两个整型变量的值进行交换。 A)#include main() main() {inta=10,b=20;swap(&a,&b); {inta=10,b=20; printf("%d%d\n",a,b); swap(&a,&b); } printf("%d%d\n",a,b); swap(p,q) } int*p,*q; swap(p,q) { int*p,*q; int*t; { t=(int)malloc(sizeof(int)); intt; t=p;*p=*q;*q=*t; } t=*p;*p=*q;*q=t; } C)#include main() main() { { int*a,*b; inta=10,b=20; a=10,b=20; intx=&a,y=&b; swap(a,b);\ swap(x,y); printf("%d%d\n",*a,*b); printf("%d%d\n",a,b); } } swap(p,q) swap(p,q) int*p,*q; int*p,*q; { { intt; intt; t=*p;*p=*q;*q=t; t=*p;*p=*q;*q=t; } } 二、 程序填空 1. 以下C语言程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出。 #include main(intargc,char*argv[]) { FILE*f1,*f2;charch; if(argc< ) { printf("Parametersmissing! \n"); exit(0); } if(((f1=fopen(argv[1],"r"))==NULL)||((f2=fopen(argv[2],"w"))==NULL)) { printf("Cannotopenfile! \n"); exit(0); } while( ) fputc(fgetc(f1),f2); fclose(f1); fclose(f2); } 2. 以下程序中的trap函数是一个用梯形法求定积分的通用函数。 梯形法求定积分的公式为: s=((f(a)+f(b))/2+∑f(a+i*h))*h,h=|----| i=1…n 其中,n为积分小区间数。 以下程序调用trap函数求定积分,被积函数是 f(x)=x*x+3*x+2,且n=1000,a=0,b=4. #include #include doubletrap(double(*fun)(),doublea,doubleb) { doublet,h; inti,n=1000; t=0.5*((*fun)(a)+(*fun)(b)); h=fabs(a-b)/(double)(n); for(i=1;i<=n-1;i++) t=t+ ; t=t*h; return(t); } doublemypoly(doublex) { return(x*x+3.0*x+2.0); } main() { doubley,(*pf)();pf= ; y=trap(pf,0.0,4.0); printf("%f\n",y); } 3. 以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。 素数是只能被1和本身整除且大于1的自然数。 #include main() {inti,a[10],*p=a,sum=0; printf("Enter10num: \n"); for(i=0;i<10;i++)scanf("%d",&a[i]); for(i=0;i<10;i++) if(isprime(*(p+ ))==1){printf("%d",*(a+i));sum+=*(a+i);} printf("\nThesum=%d\n",sum);} isprime(x) intx; {inti;for(i=2;i<=x/2;i++) if(x%i==0)return(0); else ;} 4. 以下程序调用invert 函数按逆序重新放置a数组中元素的值。 a数组中的值在 main函数中读入。 #include #defineN10 invert(s,i,j) int*s,i,j; {intt; if(i {t=*(s+i);*(s+i)=*(s+j);*(s+j)=t; invert(s, ,j-1); } } main() {inta[N],i; for(i=0;i invert(a,0,N-1); for(i=0;i printf("\n");} 5. 以下程序建立了一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph->next==NULL #include structlist{intdata;structlist*next;}; creatlist() {structlist*p,*q,*ph; inta; ph=(structlist*)malloc(sizeof(structlist)); p=q=ph; printf("Inputanintegernumber,enter-1toend: \n"); scanf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 笔试 练习题