1. 下面关于C语言的叙述中,错误的是( )。
A)若一条语句较长,也可分写在下一行上 B)构成C语言源程序的基本单位是表达式 C)C语言源程序中大、小写字母是有区别的 D) 一个C语言源程序可由一个或多个函数组成 2.C语言的基本数据类型包括( )。
A)整型、实型、字符型 B)整型、实型、字符型、逻辑型 C)整型、字符型、逻辑型 D)整型、实型、逻辑型 3.语句x=(a=3,b=++a);运行后,x,a,b的值依次为( )。
A)3,3,4 B)4,4,3 C)4,4,4 D)3,4,3 4. 下面叙述中,错误的是( )。
A)C语言基本的算术运算符不包含模运算符”%” B)算术运算符的优先级高于关系运算符
C)自加和自减运算符的结合方向是”自右至左”
D)C语言规定在表达式求值时,按其中运算符的优先级先高后低的次序进行
5.已知double a;使用scanf()函数输入一个数值给变量a,正确的函数调用是( A)scanf(”%ld”,&a); B)scanf(”%d”,&a);
C)scanf(”%7.2f”,&a); D)scanf(”%lf”,&a);
6.下面叙述中( )不是结构化程序设计三种基本结构的共同特点。 A)先判断后执行 B)单入口,单出口
C)程序中没有执行不到的语句 D)无死循环 7. 已知char a=’R’;则正确的赋值表达式是( ).
A)a=(a++)%4 B)a+2=3 C)a+=256-- D)a=’\\078’ 8. 以下程序的运行结果是( )。 void main() {int x,y=1,z; z=-1; if(z==0) z=-z; else
x=y>0?3:5;
printf(”%d\\n”,x); }
A)-1 B)3 C)1 D)5 9.在循环语句的循环中,break语句的作用是( )。 A)暂停程序的运行 B)结束本次循环 C)继续执行break语句之后的循环体各语句 D)提前结束循环,接着执行该循环后续的语句 10.下列数组声明中,正确的是( )。
A)int a[10]; B)int n=10,a[10];
C)int N=10;int a[N]; D)int n;scanf(”%d”,&n);int a[n]; 11.以下程序段运行后s的值是( )。 int a[3][3]={1,2,3,1,2,3,1,2,3};
int i,j,s=1; for(i=0;i<3;i++) for(j=i;j<3;j++) s*=a[i][j];
1
。 ) A)18 B)108 C)2 D)12 12.有如下定义:
char str[3][2]={ ’a’,’b’, ’c’, ’\\0’, ’e’, ’f’}; 则语句:
printf(”%s”,str[0]); 的输出结果是( )。
A)ab B)abcef C)abc\\0 D)abc 13. 以下程序的运行结果是( )。 int fun(int array[4][4]) {int j;
for(j=0;j<4;j++)printf(”%2d”,array[2][j]); printf(”\\n”); } main()
{ int a[4][4]={0,1,2,0,1,0,0,4,2,0,0,5,0,4,5,0}; fun(a); }
A)2 0 0 5 B)1 0 0 4 C)0 1 2 0 D)0 4 5 0 14.以下叙述中,正确的是( ) A)“#define PRICE=30”定义了与30等价的符号常量PRICE B)预编译处理命令行都必须以“#”开头
C)程序中使用带参的宏时,参数类型要与宏定义时一致 D)宏名只能包含大写字母和数字字符
15.若有定义int *p1,*p2;,则指针变量p1,p2不能进行的运算是( )。 A)< B)= C)+ D)- 16.以下程序段的运行结果是( )。 int x[]={2,3,4,5,6,7},*p=x; int i,s=0;
for(i=1;i<6;i++) s+=p[i++];
printf(”%d”,s);
A)12 B)15 C)25 D)27 17. 设有以下定义语句 struct student {int num;
char name[10]; float score; }wang,zhang;
则变量wang所占的内存字节数是( )。
A)14 B)16 C)18 D)20 18. 若有以下定义: struct link {int data;
struct link *next; }a,b,c,*head,*p;
其中,指针head指向变量a,p指向变量c,a.next指向变量b,链表结构如下图所示: head Null p data next data data next 则能够把c插入到a和b之间并形成新链表的程序段是( )。 A)a.next=c; b.head=b;
2
B)head.next=p; p.next=head.next; C)head->next=&c;p->next=head->next; D)(*head).next=p; (*p).next=&b; 19.假定已有如下变量说明和枚举定义: char ch; int j,k;
enum day{sun,mon,tue,wed,thu,fri,sat}; 判断下列语句是否符合语法规则,结果是( ) sun=0; /* 语句1 */ j=mon+tue; /* 语句2 */ if(a[mon]>0) j++; /* 语句3 */
A)语句1错误,语句2和语句3正确 B)语句2正确,语句1和语句3错误 C)语句3正确,语句1和语句23错误 D)语句1正确,语句2和语句3错误 20.设有一文本文件test.txt,其内容为”cprogram”(不包含引号),以下程序段的运行结果是(FILE *fp; Char *str;
if((fp=fopen(”test.txt”, ”r”))!=NULL) str=fgets(str,5,fp); printf (”%s”,str); }
A)cpro B)cprog C)progr D)cprogram 二、改错题
改错题:共2小题,每题10分,说明如下:
(1)修改程序在每对“/**/”之间存在的错误;
(2)不得删改程序中所有的“/**/”注释和其它代码; (3)源程序均在考生文件夹中,务必以原文件名保存程序;
(4)按Alt+Tab键,切换考试程序与Turbo C;按Alt+Enter键,切换Turbo C窗口大小。 1.程序cmody021.c,输出如下所示图形: * * * * * * * * * * * * * * * * * * * * *
#include { /**/int i,j; /**/ for(i=1;i<=6;i++) {for(k=1;k<10+i;k++) printf(””); for(j=1;j<=7-i;j++) printf (”*”)/**/ : /**/ printf(”\\n”); } getch(); } 3 。 ) 2.程序cmody022.c的功能是求解百元买百鸡问题: 设一只公鸡2元、一只母鸡元、一只小鸡0.5元。问一百元买一百只鸡,公鸡、母鸡、小鸡数分别为多少?有多少种分配方案? #include { int hen,cock,chicken,n=0; clrstr(); for(cock=0;cock<=50;cock+=1) for(hen=0;hen<=100;hen=hen+1) {chicken=2*(100-hen-2*cock); /**/ if(cock+hen+chicken=100) /**/ {n++; printf(”%d-->hen:%d,cock:%d,chicken:%d\\n”,n,hen,cock,chicken); if(n==20)getch(); } } return n; } void main() {int num; num=fun(); printf(”\\n There are %d solutions. \\n”,num); getch(); } 三、填空题 填空题:共3小题,每题6分,说明如下: (1)编写程序,补充在每对“/**/”之间的空白处,以完成题目的要求; (2)不得删改程序中所有的“/**/”注释和其它代码; (3)源程序均在考生文件中;务必以原文件名保存程序; (4)按Alt+Tab键,切换考试程序与Turbo C;按Alt+Enter键,切换Turbo C窗口大小。 1.补充程序Ccon021.c,使其计算满足下式的一位整数A和B的值。 AB BA 403 #include int plu= /**/ /**/; for(a=1;a<10;a++) for(b=1;b<10;b++) { k=(a*10+b)* /**/ /**/ ; if (k==plu) printf(”A=%d,B=%d\\n”,a,b); 4 } } 2.补充程序Ccon022.c,使其实现输入若干整数,统计其中大于零和小于零的个数。以零结束输入。 #include int n,a,b; /**/ /**/ scanf (”%d”,&n); while(/**/ /**/) { if(n>0 a++; else /**/ /**/ scanf(”%d”,&n); } printf(”Positive integer :%d, negative integer :%d\\n”,a,b); } 3.补充程序Ccon023.c,该程序可测试歌德巴赫猜想:从键盘上输入一个大于6的偶数,总能找到两个素数,使得这两素数之和正好等于该偶数。 #include for(k=2;k<=n/2+1;k++) if(n%k==0) {flag=/**/ /**/;break;)} return flag; } void main() { int num,a; clrscr(); do { printf (”Please input an even number:”); scanf (”%d”,&num); }while(num<=6||num%2==1); for(a=2;a<=num/2+1;a++) if(prime(a) && prime(/**/ /**/)) printf(”\\n%d=%d+%d”,num,a,num-a); } 四、编程题 编程题:共2小题,每题11分,说明如下: (1)在一对“/**/”之间编写程序,以完成题目的要求; (2)不得删改程序中所有的“/**/”注释和其它代码; (3)源程序均在考生文件中;务必以原文件名保存程序; (4)按Alt+Tab键,切换考试程序与Turbo C;按Alt+Enter键,切换Turbo C窗口大小。 1.打开考生文件夹中的cprog021.c,完成其中的函数fun1,该函数的数学表达式是: 5 fun1xexx6x1.3 例如:fun1(0.76)=3.582 fun1(3.00)=5.369 fun1(3.76)=8.931 #include /**/ } void main() { clrscr(); printf (”fun1(0.76)=%8.3lf\\n”,fun1(0.76)); printf (”fun1(3.00)=%8.3lf\\n”,fun1(3.00)); printf (”fun1(3.76)=%8.3lf\\n”,fun1(3.76)); } 2. 打开考生文件夹中的cprog022.c,完成其中的函数fun2(int a[],int n,int b[],int c[]),实现:将三个字符串a、b、c从小到大排序后输出。 注意:字符串比较函数为strcmp(str1,str2),字符串赋值函数为strcpy(str1,str2)。 #include int fun2(char a[],char [],char c[]) { /**/ /**/ } void main() { char str1[15]=”Fuzhou”,str2[15]=”Fujian”,str3[15]=”China”; clrscr(); fun2(str1,str2,str3); printf (”The ordered strings is :%s,%s,%s\\n”,str1,str2,str3); getch(); } 6 因篇幅问题不能全部显示,请点此查看更多更全内容