通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
第1题
有以下程序:
#include <stdio.h> #define N 4 void fun(int a[][N],int b[]) { int i; for(i=0;i<N;i++)b[i]=a[i][i]; } main() { int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i; fun(x,y); for(i=0;i<N;i++)printf("%d,",y[i]); printf("\n"); }
程序运行的结果是( )。
1,2,3,4,
1,0,7,0,
1,4,5,9,
3,4,8,0,
第2题
#include <stdio.h> main() { char a=4; printf("%d\n",a=a<<1); }
40
16
8
4
第3题
一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( )。
12345ABCDE
EDCBA54321
ABCDE12345
54321EDCBA
第4题
#include <stdio.h> struct st { int x,y;} data[2]={1,10,2,20}; main() { struct st *p=data; printf("%d,",p->y); printf("%d\n",(++p)->x); }
10,1
20,1
10,2
20,2
第5题
在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。
O(n)
O(n^2)
O(log2n)
O(nlog2n)
第6题
假定已建立以下数据链表结构,且指针p和q已指向如下图所示的结点:
则以下选项中可将q所指结点从链表中删除并释放该结点的语句是()。
(*)p.next=(*q).next;free(p);
b=q->next; free(q);
p=q; free(q);
p->next=q->next;free(q);
第7题
有以下程序段:
int a,b,c; a=10;b=50;c=30; if(a>b)a=b,b=c;c=a; printf("a=%db=%dc=%d",a,b,c);
程序的输出结果是( )。
a=10 b=50 c=10
a=10 b=50 c=30
a=10 b=30 c=10
a=10 b=30 c=50
第8题
#include <stdio.h> int fun(int (*s)[4],int n,int k) { int m,i; m=s[0][k]; for(i=1;i<n;i++)if(s[i][k]>m)m=s[i][k]; return m; } main() { int a[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}}; printf("%d\n",fun(a,4,0)); }
34
31
32
第9题
#include <stdio.h> main() { int i=5; do { if(i%3==1) if(i%5==2) { printf("*%d",i);break;} i++; } while(i!=0); printf("\n"); }
*7
*3*5
*5
*2*6
第10题
#include <stdio.h> #include <stdlib.h> int fun(int n) { int *p; p=(int*)malloc(sizeof(int)); *p=n; return*p; } main() { int a; a=fun(10); printf("%d\n",a+fun(10)); }
0
10
20
出错
第11题
#include <stdio.h> main() { int x=1,y=2,z=3; if(x>y) if(y<z)printf("%d",++z); else printf("%d",++y); printf("%d\n",x++); }
331
41
2
1
第12题
若有定义语句:
double x[5]={1.0,2.0,3.0,4.0,5.0}, *p=x;
则错误引用x数组元素的是( )。
* p
x[5]
*(p+1)
*x
第13题
#include <stdio.h> void fun(int a,int b) { int t; t=a; a=b; b=t; } main() { int c[10]={1,2,3,4,5,6,7,8,9,0},i; for(i=0;i<10;i+=2)fun(c[i],c[i+1]); for(i=0;i<10;i++)printf("%d,",c[i]); printf("\n"); }
1,2,3,4,5,6,7,8,9,0,
2,1,4,3,6,5,8,7,0,9,
0,9,8,7,6,5,4,3,2,1,
0,1,2,3,4,5,6,7,8,9,
第14题
以下关于宏的叙述中正确的是( )。
宏名必须用大写字母表示
宏定义必须位于源程序中所有语句之间
宏替换没有数据类型限制
宏调用比函数调用耗费时间
第15题
在面向对象方法中,不属于“对象”基本特点的是( )。
一致性
分类性
多态性
标识唯一性
第16题
#include <stdio.h> void fun(int a[],int n) { int i,t; for(i=0;i<n/2;i++) { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; } } main() { int k[10]={1,2,3,4,5,6,7,8,9,10},i; fun(k,5); for(i=2;i<8;i++)printf("%d",k[i]); printf("\n"); }
345678
876543
1098765
321678
第17题
C源程序中不能表示的数制是()。
二进制
八进制
十进制
十六进制
第18题
#include <stdio.h> int fun(int a,int b) { if(b==0)return a; else return(fun(--a,--b)); } main() { printf("%d\n",fun(4,2)); }
3
第19题
计算机能直接执行的程序是( )。
源程序
目标程序
汇编程序
可执行程序
第20题
以下叙述中错误的是( )。
用户定义的函数中可以没有return语句
用户定义的函数中可以有多个return语句,以便可以调用一次返回 多个函数值
用户定义的函数中若没有return语句,则应当定义函数为void类型
函数的return语句中可以没有表达式
第21题
若有定义语句char s[10]="1234567\0\0",则strlen(s)的值是()。
7
9
第22题
执行以下程序段后,w的值为( )。
int w='A',x=14,y=15; w=((x||y)&&(w<'a'));
-1
NULL
第23题
#include <stdio.h> main() { int i,j; for(i=3;i>1;i--) { for(j=1;j<=2;j++)printf("%d",i+j); printf("\n"); } }
程序运行的结果是( )。(以下<CR>代表回车)
234<CR>345
432<CR>543<CR>45
23<CR>34<CR>23
45<CR>34<CR>23
第24题
以下选项中正确的定义语句是()。
double a;b;
double a=b=7;
double a=7,b=7;
double,a,b;
第25题
一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。
一对一
一对多
多对一
多对多
第26题
以下选项中不能作为C语言合法常量的是()。
'cd'
0.1e+6
"a"
'\011'
第27题
数据流图中带有箭头的线段表示的是( )。
控制流
事件驱动
模块调用
数据流
第28题
若变量已正确定义为int型,要通过语句scanf("%d,%d,%d",&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(u代表一个空格)( )。
uuu1,2,3<回车>
1u2u3<回车>
1,uuu2,uuu3
1,2,3<回车>
第29题
如有表达式(w)?(-x):(++y),则其中与w等价的表达式是 ( )。
w==1
w==0
w!=1
w!=0
第30题
软件开发中,需求分析阶段可以使用的工具是( )。
N-S图
DFD图
PAD图
程序流程图
第31题
在数据管理技术发展的三个阶段中,数据共享最好的是( )。
人工管理阶段
文件系统阶段
数据库系统阶段
三个阶段相同
第32题
下列叙述中正确的是( )。
循环队列有对头和队尾两个指针,因此,循环队列是非线性结构
在循环队列中,只需要对头指针就能反应队列中元素的动态变化
在循环队列中,只需要对尾指针就能反应队列中元素的动态变化
循环队列中元素的个数是由对头指针和队尾指针共同决定
第33题
有三个关系R、S和T如下:
由关系R和S通过进行运算得到关系T,则所使用的运算为( )。
笛卡儿积
交
并
自然连接
第34题
下面的函数调用语句中func函数的实参个数是( )。
func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,V8)));
5
第35题
以下不能正确表示代数式 的C语言表达是()。
2*a*b/c/d
a*b/c/d*2
a/c/d*b*2
2*a*b/c*d
第36题
以下叙述中正确的是()。
C程序的基本组成单位是语句
C程序中的每一行只能写一条语句
简单C语句必须以分号结束
C语言必须在一行内写完
第37题
int m[]={5,4,3,2,1},i=4;,
则下面对m数组元素的引 用中错误的是( )。
m[--i]
m[2*2]
m[m[0]]
m[m[i]]
第38题
#include <stdio.h> main() { struct STU { char name[9]; char sex; double score[2]; }st;ruct STU a = {"Zhao", 'm', 85.0, 90.0}, b = {"Qian", 'f', 95.0, 92.0}; b=a; printf("%s,%c,%2.0f,%2.0f\n", b.name, b.sex, b.score[0], b.score[1]); }
Qian,f,95,92
Qian,f,85,90
Zhao,f,95,92
Zhao,m,85,90
第39题
#include <stdio.h> main() { FILE *pf; char *s1="China",*s2="Beijing"; pf=fopen("abc.dat","wb+"); fwrite(s2,7,1,pf); rewind(pf); /*文件位置指针回到文件开头*/ fwrite(s1,5,1,pf); fclose(pf); }
以上程序执行后abc.dat文件的内容是( )。
China
Chinang
ChinaBeijing
BeijingChina
第40题
顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
顺序存储结构能存储有序表,链式存储结构不能存储有序表
链式存储结构比顺序存储结构节省存储空间
第41题
给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
/**********code.c**********/ #include <stdio.h> #include <string.h> #include <stdlib.h> void WriteText(FILE*); void ReadText(FILE*); void main() { FILE*fp; if((fp=fopen("myfile4.txt","w"))==NULL) { printf("open fail!!\n"); exit(0); } WriteText(fp); fclose(fp); if((fp=fopen("myfile4.txt","r"))==NULL) { printf("open fail!!\n"); exit(0); } ReadText(fp); fclose(fp); } /**********found**********/ void WriteText(FILE ①______) { char str[81]; printf("\nEnter string writh -1 to end:\n"); gets(str); while(strcmp(str,"-1")!=0) { /**********found**********/ fputs(②______,fw); fputs("\n",fw); gets(str); } }void ReadText(FILE*fr) { char str[81]; printf("\nRead file and output to screen:\n"); fgets(str,81,fr); while(!feof(fr)); { /**********found**********/ printf("%s",③______); fgets(str,81,fr); } } /**********-code.c**********/
*fw
str
第42题
下列给定程序中,是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。请改正程序指定部位的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
/**********code.c**********/ #include<stdio.h> #include<stdlib.h> typedef struct aa { int data; struct aa *next; } NODE; fun( NODE *h) { int max=-1; NODE *p; /**********found**********/ p=h; while(p) { if(p->data>max) max=p->data; /**********found**********/ p=h->next; }return max; }outresult(int s,FILE *pf) { fprintf(pf,"\nThe max in link:%d\n",s); } NODE *creatlink(int n,int m) { NODE *h,*p,*s,*q; int i,x; h=p=(NODE *)malloc(sizeof(NODE)); h->data=9999; for(i=1;i<=n;i++) { s=(NODE *)malloc(sizeof(NODE)); s->data=rand()%m; s->next=p->next; p->next=s; p=p->next; } p->next=NULL; return h; } outlink(NODE *h, FILE *pf) { NODE *p; p=h->next; fprintf(pf,"\nTHE LIST:\n\n HEAD"); while(p) { fprintf(pf,"->%d",p->data); p=p->next; } fprintf(pf,"\n"); } main() { NODE *head;int m; head=creatlink(12,100); outlink(head,stdout); m=fun(head); printf("\nTHE RESULT:\n"); outresult(m,stdout); } /**********-code.c**********/
错误:p=h; 正确:p=h->next;
错误:p=h->next; 正确:p=p->next;
第43题
请编写函数fun(),该函数的功能是:计算并输出给定整数n的所有因子(不包括1和自身)之和。规定n的值不大于1000。例如,在主函数中从键盘给n输入的值为856,则输出为:sum=763。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在fun()函数的花括号中填入所编写的若干语句。试题程序如下:
/**********code.c**********/ #include <stdio.h> int fun(int n) { } void main() { int n,sum; printf("Input n: "); scanf("%d",&n); sum=fun(n); printf("sum=%d\n",sum); }
参考答案:
int fun(int n) { int s=0,i; for(i=2;i<=n-1;i++) if(n%i==0) s+=i; return s; }
一、选择题(1 - 40题,共计40分) 二、填空题(41 - 43题,共计60分)