1、C语言练习题汇总一、判断 变量根据其作用域的范围可以分作局部变量和全局变量. 答案:YC语言的switch语句中case后只能为整型或字符型常量或常量表达式 答案:Ywhile和dowhile循环不论什么条件下它们的结果都是相同的.答案:N逻辑表达式-5&!8的值为1.答案:N循环结构中的continue语句是使整个循环终止执行 答案:N若有说明int c;则while(c=getchar();是正确的C语句。答案:Y表达式 (j=3, j+) 的值是4.答案:NC语言中%运算符的运算对象必须是整型.答案:Y在C程序中 , 函数既可以嵌套定义 , 也可以嵌套调用.答案:Nint i=20;sw
2、itch(i/10) case 2:printf(A); case 1:printf(B);的输出结果为A。答案:N两个字符串中的字符个数不相同时也可进行字符串大小的比较 答案:Ychar *p=girl;的含义是定义字符型指针变量p,p的值是字符串girl。答案:N如果有一个字符串,其中第十个字符为n,则此字符串的有效字符为9个。答案:N如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。答案:YC语言中只能逐个引用数组元素而不能一次引用整个数组。答案:Yint a34=1,5,9; 它的作用是将数组各行第一列的元素赋初值,其余元素值为0。答案:YC语言的函数可以嵌套定义
3、.答案:N函数strlen(ASDFGn)的值是7。答案:N二、单项选择 1、若有说明: int a34=0;则下面正确的叙述是()。A:只有元素a00可得到初值0B:此说明语句不正确C:数组a中各元素都可得到初值,但其值不一定为0D:数组a中每个元素均可得到初值0答案:D2、若有下列定义,则对a数组元素a2地址的正确引用是()。 int a5,*p=a;A:*(p+5)B:*p+2C:*(a+2)D:*&a5答案:C3、为表示关系xyz,应使用C语言表达式A:(x=y)&(y=z)B:(x=y) AND (y=z)C:(x=y=z)D:(x=z)&(y=z)答案:A4、设有说明:char c
4、; int x; double z;则表达式c*x+z值的数据类型为A:floatB:intC:charD:double答案:D5、能正确表示逻辑关系: a10或a0 的C语言表达式是A:a=10 or a=0 | a=10 & a=10 | a=y&chb!=c和a(b!=c)的执行顺序是一样的B:!a!=(b!=c)表达式的值为1C:a|(b=c)执行后b的值为0D:a&bc的结果为假答案:B10、C语言规定,在一个源程序中,main函数的位置()。A:必须在最开始B:必须在系统调用的库函数的后面C:可以任意D:必须在最后答案:C11、下列字符序列中,不可用作C语言标识符的是()。A:b7
5、0B:#abC:symbolD:a_1答案:B(标识符只能包含字母、数字、下划线,且数字不能放首位)12、在C语言中,能代表逻辑值“真”的是()。A:TrueB:大于0的数C:非0整数D:非0的数答案:D13、任何一个C语言的可执行程序都是从_开始执行的.A:程序中的第一个函数B:main( )函数的入口处C:程序中的第一条语句D:编译预处理语句答案:B14、下列语句中,不正确的是()。A:char a2=1,2;B:int a2=1,2;C:char a2=1,2,3;D:char a2=1;答案:C15、若有说明:int *p1,*p2,m=5,n;以下均是正确赋值语句的选项是()。A:p
6、1=&m;p2=&p1B:p1=&m;p2=&n;*p1=*p2;C:p1=&m;p2=p1;D:p1=&m;*p2=*p1;答案:C16、在C语言中,调用函数除函数名外,还必须有()。A:函数预说明B:实际参数C:( )D:函数返回值答案:C17 、以下叙述中正确的是 ()。A:C程序中注释部分可以出现在程序中任意合适的地方B:花括号“和”只能作为函数体的定界符C:构成C程序的基本单位是函数,所有函数名都可以由用户命名D:分号是C语句之间的分隔符,不是语句的一部分答案:A18、变量p为指针变量,若p=&a,下列说法不正确的是()。A:&*p=&aB:*&a=aC:(*p)+=a+D:*(p+
7、)=a+答案:D19、int a=3,b=2,c=1;if(abc)a=b;else a=c;则a的值为()。A:3B:2C:1D:0答案:C20、在以下给出的表达式中,与 do-while(E)语句中的(E)不等价的表达式是()。A:(!E=0)B:(E0|E0)C:(E=0)D:(E!=0)答案:C21、若用数组名作为函数的实参,传递给形参的是()。A:数组的首地址B:数组第一个元素的值C:数组中全部元素的值D:数组元素的个数答案:A22、putchar函数可以向终端输出一个()。A:整型变量表达式值B:实型变量值C:字符串D:字符或字符型变量值答案:D三、程序填空 共2题 (共计25分)
8、第1题功能:从键盘上输入一个正整数,判断其是否是回文数。说明:所谓回文数是指顺序读与反序读都是一样的数,如121、25852都是回文数。 将整数的各位依次存入数组a中,然后再进行判断#include int main() int num,a10,r; int i=0,j,flag=1; /*flag作为是否为回文的标志*/ scanf(%d,&num); if (num=j;i-,j+) if (aj=ai) /*SPACE*/ 【?】; else flag=0; break; /*SPACE*/ if (【?】) printf(是回文n); else printf(不是回文n); retur
9、n 0; 答案:=(答案1)=ai=r=(答案2)=continue 或 flag=1=(答案3)=flag 或flag != 0或flag = 1=或=i0第2题 功能:用冒泡排序法对数组a 进行由小到大的排序。#include void fun(int a,int n) int i,j,t; /*SPACE*/ for (j=0; 【?】;j+) /*SPACE*/ for (i=0; 【?】;i+) /*SPACE*/ if(【?】) t=ai; ai=ai+1; ai+1=t; int main() int i,a10=3,7,5,1,2,8,6,4,10,9; /*SPACE*/ 【
10、?】; for(i=0;i10;i+) printf(%3d,ai); return 0;答案:=(答案1)=j=n-1或jn=(答案2)=in-j-1或iai+1=(答案4)=fun(a,10)第3题 (10.0分) 题号:76功能:找出数组中最大值和此元素的下标,数组元素的值由键盘 输入。#include void main() int a10,*p,*s,i; for(i=0;i10;i+) /*SPACE*/ scanf(%d, 【?】); /*SPACE*/ for(p=a,s=a;【?】=(答案4)=*s第4题 (15.0分) 题号:27功能:输出100到1000之间的各位数字之和
11、能被15整除的所有数, 输出时每10个一行。#include int main() int m,n,k,i=0; for(m=100;m0)或while(n!=0)或while(n)=(答案4)=printf(n)或puts(n)或putchar(n)第5题 功能:用函数调用方式,实现字符串的复制。#include void string_copy(char *str_from, char *str_to) int i=0; /*SPACE*/ for(; (*(【?】)=*(str_from+i)!=0; i+) ;int main() static char array_str120=i
12、am a teacher.; char array_str220; /*SPACE*/ 【?】(array_str1, array_str2); /*SPACE*/ 【?】(array_str2=%sn,array_str2); return 0;答案:=(答案1)=str_to+i=(答案2)=string_copy=(答案3)=printf第6题 功能:以下程序是用选择法对10个整数按从小到大顺序排序。说明:每一趟均找到未排好序的数中的最小数的位置,然后将其交换到正确的位置#include #define N 10int main() int i,j,k,t,aN; for(i=0;i=N
13、-1;i+) scanf(%d,&ai); /*输入10个整数*/ for(i=0;iN-1;i+) /*SPACE*/ 【?】; /*SPACE*/ for(j=i+1; 【?】;j+) if(ajak) k=j; /*SPACE*/ if(【?】) t=ai; ai=ak; ak=t; printf(output the sorted array:n); for(i=0;i=N-1;i+) printf(%5d,ai); printf(n); return 0;答案:=(答案1)=k=i=(答案2)=jN或ji第7题 功能:打印出如下字母塔。最后一行字母前无空格 A BBB CCCCCDD
14、DDDDD #include int main() int i,j,k; /*SPACE*/ for(i=0;【?】;i+) for(j=0;j3-i;j+) printf( ); /*SPACE*/ for(k=1;k=【?】;k+) /*SPACE*/ printf(【?】); printf(n); return 0;答案:=(答案1)=i=3或i4=(答案2)=2*i+1=(答案3)=%c,A+i 或 %c, 65 + i第8题 功能:从读入的整数数据中,统计大于零的整数个数和小于零的 整数个数。用输入零来结束输入,程序中用变量i统计大于 零的整数个数,用变量j统计小于零的整数个数。#i
15、nclude int main() int n,i,j; printf(Enter iNT number,with 0 to endn); i=j=0; scanf(%d,&n); while(n!=0) /*SPACE*/ if(n0)i=【?】; /*SPACE*/ if(n0)j=【?】; /*SPACE*/ scanf(%d,【?】); printf(i=%4dn,i,j); return 0;答案:=(答案1)=i + 1=(答案2)=j + 1=(答案3)=&n程序改错第1题 功能:求出数组中最大数和次最大数,并把最大数和a0中的数 对调、次最大数和a1中的数对调。#include
16、 #define N 20void fun ( int a, int n ) int i, m, t, k ; for(i=0;i2;i+)/*两次循环,分别找最大数和次大数*/ /*FOUND*/ m=0; for(k=i;kam) k=m; t=ai;ai=am;am=t; int main( ) int bN=11,5,12,0,3,6,9,7,10,8, n=10, i; for ( i=0; in; i+ ) printf(%d , bi); printf(n); /*FOUND*/ fun (int bN, n); for ( i=0; iam) m=k;=(答案3)=fun(b,
17、n);第2题 功能:利用条件运算符的嵌套来完成此题:学习成绩=90分的同 学用A表示,70-89分之间的用B表示,60-69分之间的用C表示, 60分以下的用D表示。#include int main() int score; /*FOUND*/ char *grade; printf(please input a scoren); /*FOUND*/ scanf(%d,score); if (score100) printf(超出范围!); else /*FOUND*/ switch(score) case 9: case 10: grade=A; break; case 7: case 8
18、: grade=B; break; case 6: grade=C; break;/*FOUND*/ case else: grade=D; printf(%d belongs to %cn,score,grade); return 0;答案:=(答案1)=char grade;=(答案2)=scanf(%d,&score);=(答案3)=switch(score/10)=(答案4)=default:=或=case 0:case 1:case 2:case3:case 4:case 5:第2题 (15.0分) 题号:153/*- 【程序改错】-功能:编写函数求2!+4!+6!+8!。-*/#i
19、nclude int sum(int n) int i,j,t,s; /*FOUND*/ s=1; for(i=2;i=n;i=i+2) t=1; /*FOUND*/ for(j=1;j=n;j+) t=t*j; s=s+t; /*FOUND*/ return(t);int main() printf(this sum=%ldn,sum(8); return 0;答案:=(答案1)=s=0;=(答案2)=for(j=1;j=i;j+)=(答案3)=return s;第3题 (10.0分) 题号:92/*- 【程序改错】-功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数 返回二分之一的圆面积。例如:输入圆的半径值:19.527 输出为:s = 598.950017。-*/#include #include /*FOUND*/double fun( r) double s; /*FOUND*
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1