选择题:1、下列哪个不是算法的特征:( )A.有穷性 B.可行性 C.不确定性 D.输入2、设X=9:y=++x;,则产生的结果是( )A.x=9:y=9: B.x=10:y=10: C.x=9:y=10; D.x=10:y=9;3、下列说法错误的是:( )A. for语句中,<表达式1>、<表达式2>和<表达式3>都可以缺省B. <表达式2>缺省,系统会认为此处的值是0C. for语句的三个表达式可以是任何类型的表达式D. for语句可以嵌套使用4、关于数组下列说法正确的是()A.对数组的初始化操作在定义数组的同时进行B.给数组赋初值时,必须所有数组元素都被赋值C.给数组元素全部赋初值时,一定要指明数组的大小D.引用数组元素的时候,可以一次引用数组中的全部元素5、以下说法错误的是( )A.C程序必须从main()函数开始执行B.所有函数在定义上讲都是相互独立的,不存在嵌套定义C.C语言中有两类函数,系统提供的库函数和用户自定义的函数D.参数的作用是向函数传递不同的数据6、关于指针,下列说法错误的是()A.指针变量是用来存放内存地址的B.&表示取变量地址运算C.*表示取指针变量所指向的变量内容的运算D.可以将整数赋给指针变量7、关于结构体,下列说法错误的是()A.不能将一个结构体变量作为一个整体进行输入和输出B.对成员变量可以像普通变量一样进行各种运算C.结构体变量的地址主要用作函数参数传递结构体的地址D.结构体变量赋初值与数组不同,可以不一 一对应8、在已知int j,i=1;执行语句“j=j++;”后,变量i的值是()A.1 B.2 C.-1 D.-29、为了判断两个字符串s1和s2是否相等,应当使用()A.if(s1==s2) B.if(s1=s2) C.if(strcpy(s1,s2)) D.if(strcmp(s1,s2)==0)10、以下程序段的输出结果是()main(){ int i=0;while (i<10){if (i<1) continue;if (i==5) break;i++}……}A.1 B. 10 C. 6 D.死循环,不能确定次数10、()是用来描述对象的属性和行为的A.实体 B.类 C. 对象 D.现象11、下列说法不正确的是()A.++、- -只能用于变量 B.++、- -比负号运算符的优先级要高 C.++、- -的结合方向是:自右向左 D.++、- -常用于循环变量表达式中12、关于switch语句说法不正确的是()A.case的次序不影响执行结果 B.每个case语句后面的常量可以不同C.在执行完一个case语句后转到下一个case语句执行 D.每个case语句后面表达式只能是常量13、字符数组char a[ ]=”how do you do?”:的大小为()A.10 B.11 C.14 D.1514、关于形式参数,下面说法错误的是()A.对开形参,虽然定义了它,只有当函数被调用时,形参才在内存中开辟空间B. 调用结束后,形参自动从内在中被释放掉C.在函数定义中,可以不给出形参类型,调用的时候再定义D.实参与形参的关系是赋值与被赋值的关系16、以下说法错误的是()A int (*p)()表示p被定义为一个指向返回值为整数的函数的指针B.使用指向函数的指针是结构化程序设计的一种有效手段C.char**p相当于char*(*p)D.指针数组的元素补仅能存放地址,还可以存放其他数组的元素17、以下函数,哪个不属于动态申请空间的标准库函数()A.malloc() B.calloc() C.free() D.strcmp()18、执行下列两个语句后,输出的结果为()char c1=66,c2=98;printf(“%c,%d,”c1,c2);A.66,98 B. 66,b C. B,97 D. B,9819、以下程序的输出结果是()main(){int a=4,b=5,c=0,d;d=!a1&!b||!c;printf(“%d\n”,d);}A.1 B.0 C. 非0的数 D. -120、若int i=10:执行下列程序后,变量i的正确结果是()switch(i){case 0:i+=1;case 10:i+=1;case 11:i+=1;default: i+=1;}A. 10 B. 11 C. 12 D.1321、下列哪些是算法的描述方法()A.自然语言描述法 B.流程图描述法 C.伪代码描述法 D.N-S流程图描述法22、下列运算符优先级最高的是()A. && B. > C.++ D.!23、下面关于do-while语句说法正确的是()A. while语句和do-while语句肯定都要执行B.两者运行结果不同C.do-while在条件之前先执行循环体一次D.while语句至少执行一次24、有如下的数组static int a[10]:则()A.该数组没有被初始化 B.数组的所有元素都被赋值为0 C.数组的第一个元素是a[1] D.数组共有11个元素25、关于return语句,下面说法错误的是()A.它的功能是将表达式的值作为函数的返回值返回 B.函数中可以有多个return语句,执行到哪个就从那一个return语句返回 C.return可以返回多个值 D.return(表达式)语句中的表达式值的类型应与定义函数时函数的类型一致26、下列说法错误的是()A. int(*p)();表示p被定义为一个指向返回值为整数的函数的指针 B.使用指向函数的指针是结构化程序设计的一种有效手段 C.char**p相当于char*(*p) D.指针数组的元素不仅能存放地址,还可以存放其他数组的元素27、关于链表的插入和删除,下列说法错误的是()A. 插入位置包括表头,表中和表尾 B.从链表中删除一个结点,就是把它从内在中抺掉 C.要删除链表中的某个结点,需自己定义删除函数 D.删除结点要注意删除的结点是否是头结点28、以下不能定义为用户标识的是()A. scant B.void C._3com_ D.int29、若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是()A.p=2*(int*)malloc(sizeof(int)); B. p=(int*)malloc(2*sizeof(int)); C. p=(int*)malloc(2*2); D. p=(int*)malloc(2,sizeof(int));30、有如下程序,该程序的输出的结果是()int addc (int a,int b, int c){c=a+breturn(c)}main(){int x=4,y=2,z,r;z=x+y;r=addc(add(x,y,z), addc(y,z,x),z);printf(“%d\n”,r);}A. 36 B. 12 C.14 D.631、计算机系统是由硬件系统、软件系统两部份组成。
32、程序执行过程中其值保持不变的量称为常量它又可以分为整型常量、实型常量、字符型常量33、break语句的作用是从switch,for,while或do-while 语句中跳出来,终止这些语句的执行,把控制转到被中断的循环语句或switch语句之后去执行34、对于数组int a[5][6]的数组元素的引用最多到a[4][5]35、有如下的表达式: int a [20],*p; p=a那么p+3表示的是a[3] 的地址36、软件系统包括系统软件、应用软件两部分37、五种算术运算符分别是+、-、*、/、%38、若有语句:if (xy)?x:y;39、标准字符串处理函数的头文件是:“string.h”40、在C语言中,字符串实际上是指字符串第一个字符的指针,所以字会串数组中的每一个元素实际上是每 一个字符串的 首地址41、一个程序包括两方面内容:数据结构、算法42、由关系去处符连接表达式构成的式子,称为关系表达式、其值为“0”、或“1”。
43、putchar()函数的函数功能是: 将给定的一个字符常量或字符变量的内容输出到显示器屏幕上44、static char a [15]={‘H’’,’’a’’,’’p’’,’’p’’,’’y’’,’’.’}:这个初始化语句中有9个数组元素没有给出初值,系统会自动对它们的赋值为0、或‘\0’45、由于指针变量直接指向变量,所以称为“单级间址”而如果通过指向指针的指针变量来访问变量则构成“二级间址”46、求1+2!+3!+……+20!的和include“stdio . h ”void main(){ float n , s=0 , t=1; for(①){ ②③}printf("1+2!+3!…+20!=%e\n",s);getch();}解. ①: n=1;n<=20;n++ ②: t*=n;③: s+=t;47、下面程序求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字,例如2+22+222+2222+22222…include“stdio . h”void main(){int a ,n ,count=1;long int sn=0,tn=0;printf(“please input a and n\n”);scanf(1)printf(“a-%d,n=%d\n”,a,n);while(2){ tn=tn+a; 3 a=a*10; 4}printf(“a+aa+…=%ld\n”,sn);getch()}解: ①: "%d,%d",&a,&n ②: count<=n ③: sn=sn+tn; ④: ++count;48、下面程序用条件运算符的嵌套完成的:学习成绩>:90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
题……略解. ①: "%d",&score ②: grade=score>=90?'A':(score>=60?'B':'C');49、编写一个程序,要求能够将输入的任意一人三位数颠倒过来解:#include void main(){ int units,tens,hundreds,a,b; printf("Please input a number(100~999):"); scanf("%d",&a); hundreds=a/100; tens=(a-hundreds*100)/10; units=a-hundreds*100-tens*10; b=100*units+tens*10+hundreds; printf("after change,the number is:%d\n",b);}50、用选择法对任意输入的一个10元整数数组排序(从小到大)解:#include void main(){ int a[10]; int i,min,k,temp; printf("Please input 10 integer numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) { min=i; for(k=i+1;k<10;k++) { if(a[k]<=a[min]) min=k; } temp=a[i]; a[i]=a[min]; a[min]=temp; } for(i=0;i<10;i++) printf("%-4d",a[i]);}51、用指针设计一个可以计算字符串长的程序。
答:int strlen(s)char *s;{ char *p=s; while(*p!='\0') p++; return(p-s);}52、打印出所有的“水仙花数”,所谓,“水仙花数”是指一个三位数,其各位数字立方和等于该数本身,例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方答:#include "stdio.h"main(){ int i,j,k,n; printf("water flower's number is:\n"); for(n=100;n<1000;n++) { i=n/100;//分解出百位 j=n/10%10;//分解出十位 k=n%10;//分解出个位 if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) { printf("%-5d",n); } } printf("\n");}53、将三个整数输入计算机,编写程序,将居中的值显示出来。
解: #include void main(){ int a ,b,c; scanf("%d%d%d",a,b,c); if(a>b) if(b>c) printf("mid=%d\n",b); else if(a>c) printf("mid=%d\n",c); else printf("mid=%d\n",a); else if(a>c) printf("mid=%d\n",a); else if(b>c) printf("mid=%d\n",c); else printf("mid=%d\n",b);}54、用造势法对任意输入的一个10元整数数组排序(从小到大)解:#include void main(){ int a[10],i,j,temp; printf("Please input 10 integer numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } for(i=0;i<10;i++) printf("%-4d",a[i]);}55、写一个程序,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
答: #include swap(int *p,int *q){ int temp; temp=*p; *p=*q; *q=temp;}void main(){ int a , b, *pa,*pb; printf("Please input 2 integer numbers:"); scanf("%d%d",&a,&b); pa=&a; pb=&b; swap(pa,pb); printf("%d %d",a,b);}56、用公式=1+¼-¼+¼…1.答: #include "stdio.h"#include "math.h"main(){ int s; float n,t,pi; t=1.0; pi=0; n=1.0; s=1; while((fabs(t))>1E-6) { pi=pi+t; n=n+2; s=-s; t=s/n; } pi=pi*4; printf("pi=%10.6f\n",pi);}57、解:#include #include void main(){ double a,b,c; /*方程系数*/ double disc; /*判别式*/ double re,im; /*方程实部虚部*/ printf("Enter a,b,c:"); scanf("%lf%lf%lf",&a,&b,&c); if(a==0.0) if(b==0.0) printf("The equation has not soluble!\n"); else printf("Single root is %f\n",-c/b); else if(c==0.0) printf("Two roots:x1=%lf\t x2=%lf\n",-b/a,0); else { disc=b*b-4*a*c; re=-b/(2*a); im=sqrt(fabs(disc))/(2*a); if(disc>=0.0) printf("Two roots:x1=%f\t x2=%f",re+im,re-im); else printf("Two complex roots:x1=%f+i*%f\t x2=%f-i*%f\n",re,im,re,im); }}58、解:#include void main(){ int a[3][3],sum=0; int i,j; printf("enter data:\n"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) sum=sum+a[i][i]; printf("sum=%6d\n",sum);}59、答: #include int len(char *p){ int n=0 ; while(*p!='\0') { n++; p++; } return(n);}void main(){ int length; char *str[20]; printf("Please input a string :\n"); scanf("%s",str); length=len(str); printf("the length of the string is %d",length);}60、答:#include "stdio.h"sort(int **p,int n){ int i,j,*tp; for(i=0;i**(p+j)) { tp=*(p+i); *(p+i)=*(p+j); *(p+j)=tp; } }}main(){ int i,n,da[20],**p,*pu[20]; scanf("%d",&n); for(i=0;i