一、填空题
1、为建立如图10-5所示的存储结构(即每个结点两个域,data是数据域,next是指向结点的指针域),请将定义补充完整。
struct s{char data; _______ }node;
2、C语言源程序的基本单位是________
3、C语言的源程序必须通过【 】和【 】后,才能被计算机执行。
4、在C语言中,用关键字_______定义单精度实型变量,用关键字_______定义双精度实型变量,用关键字_______定义字符型变量。
5、若有定义语句:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为_______
6、测试char型变量a第6位是否为1的表达式是_______(设最右位是第1位)。 7、下面程序段是找出整数的所有因子。请填空。
scanf(\"%d\",&x); i=1;for(;_______;)
{if(x%i==0)printf(\"%3d\",i); i++; }
8、设有以下宏定义:
#define WIDTH 80
#define LENGTH WIDTH+40
则执行赋值语句:v=LENGTH*20;(v为int型变量)后,v的值是_______。 9、假设M为已经声明的符号常量,则定义一个具有M×M个元素的双精度型数组a,且所有元素初值为0的形式是_______。
10、设main函数的说明为:int main(int argc,char*argv[]),且有命令行为: FILE1123<回车>,则argc的值是_______,argv[1]的值是_______。
二、选择题
11、下列4组选项中,不是C语言关键字的选项是。( ) A.define B.getc C.include D.while
IF char scanf go
Type printf case pow
12、下面4个选项中,是不合法的用户标识符的选项是( )。 A.A B.float C.b-a D._123 P_01 a0 goto temp Do A int INT 13、一个C程序的执行是从( )
A.本程序的main函数开始,到main函数结束
B.本程序的第一个函数开始,到本程序文件的最后一个函数结束 C.本程序的main函数开始,到本程序文件的最后一个函数结束 D.本程序的第一个函数开始,到本程序main函数结束
14、C语言规定:在一个源程序中,main函数的位置( ) A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后
15、以下能对二维数组a进行正确初始化的语句是( )。 A.int a[2][]={{1,0,1},{5,2,3}}; B.int a[ ][3]={{1,2,3},{4,5,6}}; C.int a[2][4]={1,2,3},{4,5},{6}}; D.int a[][3]={{1,0,1,0},{},{1,1}}; 16、以下C程序的运行结果是。(注:口表示空格)
#include {long y=-43456;printf(\"y=%-8ld\\n\",y); printf(\"y=%-08ld\\n\",y); printf(\"y=%08ld\\n\",y); printf(\"y=%+8ld\\n\",y); return 0; } A.y=囗囗-43456 y=-囗囗43456 y=-0043456 y=-43456 B.y=-43456 y=-43456 y=-0043456 y=+囗-43456 C.y=-43456 y=-43456 y=-0043456 y=囗囗-43456 D.y=囗囗-43456 y=-0043456 y=00043456 y=+43456 17、已有变量定义和函数调用语句:int a=25;print_value(&A.;下面函数的正确输出结果是。 void print_value(int*x) {printf(\"%d\\n\",++*x); } A.23 B.24 C.25 D.26 18、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( ) A.extern B.register C.auto D.static 19、与下面程序段等价的是( )。 for(n=100;n<=200;n++) {if(n%3==0)continue; printf(\"%4d\",n); } A.for(n=100;(n%3)&&n<=200;n++)printf(\"%4d\",n); B.for(n=100;(n%3)|| n<=200;n++)printf(\"%4d\",n); C.for(n=100;n<=200;n++)if(n%3!=0)printf(\"%4d\",n); D.for(n=100;n<=200;n++){if(n%3)printf(\"%4d\",n);else continue;break;} 20、以下描述中正确的是( ) A.while、do-while、for循环中的循环体语句都至少被执行一次 B.do-while循环中,while(表达式)后面的分号可以省略 C.while循环体中,一定要有能使while后面表达式的值变为“假”的操作 D.do-while 循环中,根据情况可以省略 while 21、以下程序( )。 #include {int a=5,b=0,c=0; if(a=b+C.printf(\"***\\n\"); else printf(\"$$$\\n\"); return 0; } A.有语法错不能通过编译 B.可以通过编译但不能通过连接 C.输出*** D.输出$$$ 22、对两个数组a和b进行如下初始化: char a[]=\"ABCDEF\";charb[]={'A','B','C','D','E','F'};则以下叙述正确的是( )。 A.a与b数组完全相同 B.a与b长度相同 C.a和b中都存放字符串 D.a的长度比b长 23、下面程序段的功能是输出两个字符串中对应相等的字符,请选择填空( )。 charx[]=\"programming\"; char y[]=\"Fortran\"; int i=0; while(x[i]!='\\o'&&.y[i]!='\\o') if(x[i]==y[i])printf(\"%c\",【】); else i++; A.x[i++] B.y[++i] C.x[i] D.y[i] 24、以下程序的运行结果是( )。 #include return m; int main() {printf(\"m=%d\\n\",fun(10)); return(0); A.m=5 B.m=-6 C.m=6 D.m=-5 25、下面程序的运行结果是( )。 #include for(a=1,b=1;a<=100;a++) { if(b>=20)break; if(b%3==1){b+=3;continue;} b-=5; } printf(\"%d\\n\",A.; return 0; } A.7 B.8 C.9 D.10 三、读程序填空 26、以下程序的输出结果为_______. #include {printf(\"*%f,%4.3f*\\n\",3.14,3.1415); return0; } 27、以下程序的输出结果是_______。 #include double x=3.1415926; printf(\"a=%+06dx=%+e\\n\",a,x); return 0; } 28、阅读下面程序,完成下列问题中的填空。问题(1)此程序在调用函数f后的运行结果是_______。(2)若将函数f中的for(j=i+1;j<4;j++)改为for(j=0;j<3一i;j++),则程序的运行结果是_______。 #include for(i=0;i<3;i++) for(j=i+1;j<4;j++) {k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;} int main() {int s[4][4],i,j; for(i=0;i<4;i++) for(j=0:j<4;j++) s[i][j]=i-j; f(s); for(i=0;i<4;i++) {printf(\"\\n\"); for(j=0;j<4;j++) printf(\"%4d',s[i][j]); return(0); } 29、以下程序的运行结果是_______。 # include reset(i/2); printf(\"i=%d\\n\ reset(i=i/2); printf(\"i=%d\\n\ reset(i/2); printf(\"i=%d\\n\ workover(i); printf(\"i=%d\\n\ int workover(int i) {i=(i%i)·((i*i)/(2*i)+4); printf(\"i=%d\\n\ int reset(int i) {i=i<=2?5:0; return(i); } 30、下面程序的功能是从3个红球、5个白球、6个黑球中任意取出8个球,且其中必须有白球,输出所有可能的方案。请填空。 #include {inti,j,k; printf(\"\\n hong bai hei\\n\"); for(i=0;i<=3;i++) for(_______;j<=5;j++) {k=8-i-j; if(_______) printf(\"%3d%3d%3d\\n\",i,j,k); } return 0; } 31、若有以下输入,则下面程序的运行结果是_______。 5<回车> 97531<回车> 5<回车> #include printf(\"Enter n(n<10):\");scanf(\"%d\",8.n); for(i=1;i<=n;i++)scanf(\"%d\",a+i); printf(\"Enter x:\");scanf(\"%d\",8.x); a[0]=x;i=n; while(x>a[i]){a[i+1]=a[i];i-一;} a[i+1]=x; n++; for(i=1;i<=n;i++)printf(\"%3d\",a[i]); return 0; } 32、将以下两条if语句合并成一条if语句为_______。 语句1:if(a>b)scanf(\"%d\",8&a); else scanf(\"%d\",&b); 语句2:if(a<=b)m++; else n++; 33、若有以下输入,则下面程序的运行结果是_______。 basic<回车> fortran<回车> pascal<回车> c++<回车> java<回车> #include int main() {int j,k; char*qstr[5],str[5][40],*change; for(k=0;k<5;k++)qstr[k]=str[k]; printf(\"enter 5 strings(1 string on each line)\\n\"); for(k=0;k<5;k++)scanf(\"%s\",qstr[k]); for(k=0;k<5;k++) {for(j=k+1;j<5;j++) {if(strcmp(*(qstr+k),*(qstr+j))>0) {change=*(qstr+k); *(qstr+k)=*(qstr+j); *(qstr+j)=change; } } } printf(\"The sorted strings are:\\n\"); for(k=0;k<5;k++)printf(\"%s\\n\",qstr[k]); return(0); } 四、编程题 34、已知head指向双向链表的第一个结点。链表中每个结点包含数据域(info)、后继元素指针域(next)和前趋元素指针域(pre)。请编写函数print1用来从头至尾输出这一双向链表。 35、有4名学生,每个学生考4门课程,要求在用户输入学生序号以后能输出该学生的全部成绩,用指针型函数来实现。请编写函数float*search()。 #include float*search(float(*pointer)[4],int n); int main() {static float score[J[4]={{60,70,80,90},{50,89,67,88}, {34,78,90,66},{80,90,100,70)}; float*p;int i,m; printf(\"enter the number of student:\"); scanf(\"%d\",&.m); printf(\"The score of No.%d are:\\n\",m); p=search(score,m); for(i=0;i<4;i++) printf(\"%5.2f\\",*(p+i)); return(0); float*search(float(*pointer)[4],int n) { } 参考答案 一、填空题 1、structs*next; 2、函数 3、【1】编译【2】连接 4、【1】float【2】double【3】char 5、3.500000 6、a &040或a&0×20或a&32 7、i<=x 8、880 9、double a[M][M]={0}; 10、【1】4【2】1 二、选择题 11、A 12、C 13、A 14、C 15、B 16、C 17、D 18、D 19、C 20、C 21、D 22、D 23、A 24、A 25、B 三、读程序填空 26、*3.140000,3.142* 27、a=+00325囗囗囗x=+3.14159e+00 (注:答案中的囗代表空格) 28、【1】0 1 2 3 -1 0 1 2 -2 -1 0 1 -3 -2 -1 0 【2】 0 -1 -2 -3 1 0 -1 -2 2 1 0 -1 3 2 1 0 29、i=5 i=2 i=2 i=0 i=2 30、【1】j=1【2】k>=0&&k<=6 31、9 7 5 5 3 1 32、if(a>b){scanf(\"%d\",&a);n++;} else{scanf(\"%d\",&b);m++;} 33、Basic C++ fortran java pascal 四、编程题 34、#include struct student*pre; struct student*next; }; void print1(struct student*head) {struct student*p; printf(\"\\n the linklist is:\"); p=head; if(head!=NULL) do {printf(\"%d\",p->info); p=p->next; while(p!=NULL); printf(\"\\n\"); } 35、float*search(float(*pointer)[4],int n) {float*pt; pt=*(pointer+n); return(pt); } 因篇幅问题不能全部显示,请点此查看更多更全内容