一、选择题(50分,每小题2分)
(1) C源程序经过编译、链接后,产生的可执行程序的扩展名为()。 (A) .exe (B).com (C).obj (D).dll (2) 以下非法的C语言常量是()。
(A)0xff (B)-80 (C)-8.5e-2 (D)081 (3) 以下非法的C标识符是()。
(A)For (B)_123 (C)INT (D)sizeof (4) 以下程序的输出结果为()。 #include
printf(\?0?); }
(A)0, (B) 2 (C)1 (D) -1 (5) 以下程序的输出结果为()。 #include
printf(\
printf(\}
(A)10,20 (B)9,19 (C)10,18 (D)9,18 (6) 以下叙述中错误的是( )。
(A) break 语句只能用在循环体内和switch语句体内 (B) 数组名是一个指向数组首元素的指针 (C) 组成C程序的基本单位是函数 (D)sizeof不是C的运算符 (7) 以下程序的功能是()。 #include
void main(void){ long result=0L; int i,k,m;
for(i=1;i<=N;i++){ m=1; for(k=1;k<=i;k++) m*=k; result+=m; }
printf(\}
(A)计算1!+2!+3!+…+N! (B)计算N! (C)计算1+2+3+…+N (8) 以下不合法的字符常量是()。
(A)?\\n? (B)?\\\\? (C)?\\0101? (D)”a”
(D) 以上都不对 (9) 运行以下程序的输出结果为()。 #include
void main(void){
char* str=\ printf(\}
(A) 10 (B) 11 (C) 12 (D)13
(10)若包含预处理命令#include
(A) 7,7 (B) 7,8 (C) 8,7 (D)8,8 (11) 以下程序的运行结果为()。 #include
char* str=\ strcpy(s,str+3);
printf(\}
(A) 3 (B) 4 (C) 7 (D)20 (12) 以下语句,错误的是()。
(A) int a, *p=&a; (B)int a[10], *p=a+1; (C) int a[2][3]; int *p=a[1]; (D) int* p; *p=10; (13) 若有int a[5]={1,2,3,4,5};,则表达式*(a+1)的值为()。 (A)2 (B)3 (C)4 (D)5
(14) 若有int a[2][3]={1,2,3,4,5,6};,则表达式*(*(a+1)+2)的值为()。 (A)3 (B)4 (C)5 (D)6
(15) 若有定义char a[]=\,以下叙述中错误的是()。 (A) 数组a存储的是一个字符串 (B) 数组b存储的是一个字符串 (C) 数组a缺省的长度为4 (D) 数组b缺省的长度为3 (16) 以下程序的输出结果是()。 void f(int *x,int *y) {
int t; t=*x; *x=*y; *y=t; }
void main(void) {
int a[]={1,2,3,4,5,6,7,8},i,*p,*q; p=a; q=a+7;
while(p for(i=0;i 程序运行后 (A)8,2,3,4,5,6,7,1, (B)5,6,7,8,1,2,3,4, (C)1,2,3,4,5,6,7,8, (D)8,7,6,5,4,3,2,1, (17) 以下程序,若输入值3,则输出结果为()。 #include printf(\} (A)3 (B) 10 (C) 4 (D)11 (18) 以下程序的输出结果为()。 #include }s[3]={{111,\void main(void){ int k; s->num+=10; strcpy((s+2)->name,\ for(k=0;k<3;k++) printf(\ } (A) 111 liuming,112 sunlei,113 yuhua, (B) 121 liuming,112 sunlei,113 yuhua, (C) 121 liuming,112 sunlei,113 huanghua, (D) 111 liuming,112 sunlei,113 huanghua, (19) 以下叙述中错误的是()。 (A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出 (B)数组名代表的是数组所占存储区的首地址,其值不可改变 (C)在编译源程序过程中,若数组元素的下标超出所定义的下标范围时,编译系统将给出\下标越界\的出错信息 (D)可以通过赋初值的方式确定数组元素的个数 (20) 有以下程序 #include void main( int argc, char *argv[] ){ int n=0,i; for(i=1; i 编译连接后生成可执行文件tt.exe,若运行时输入以下命令行: tt 12 345 678 程序运行后的输出结果是()。 (A) 12 (B) 12345 (C)12345678 (D)136 (21) 以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是()。 (A)feof(fp) (B)ftell(fp) (C)fgetc(fp) (D)rewind(fp) (22) 设有如下说明 typedef struct STUDENT { int num; char name[20]; int score; }STU; STU s1; 则下面叙述中错误的是()。 (A)STU是结构类型名 (B) sizeof(s1)的值与sizeof(s1.name)相同 (C)struct STUDENT是结构体类型名 (D) s1是结构类型的变量名 (23) 下列函数的功能是()。 int fun(char *s){ int num=0; while(*s!=?\\0?) { if(*s==? ?) num++; s++; } return num; } (A)计算字符串s中所含空格的个数 (B) 计算字符串s的长度 (C) 统计字符串s中所含字母的个数 (D) 统计字符串s中所含数字字符的个数 (24) 下列函数的功能是()。 int fun(int n ){ if(n==1) return 1; else return fun(n-1)+n; } (A) 计算n! (B) 计算1+2+3+…+n (C) 计算1+2+3+…+n-1 (D) 计算(n-1)! (25) 下列函数的功能是()。 void fun(unsigned int n){ if(n<10) printf(\ else { printf(\ fun(n/10); } } (A) 将组成数据n的各位输出(从低位到高位) (B) 将组成数据n的各位输出(从高位到低位) (C) 输出n除以10的余数 (D) 输出n除以10的商 二、程序填空题(16分,每小题8分) 1.以下程序输入10个正整数,存储于数组a中,将其中能被2整除的正整数,按序存储于数组b中,然后输出b中的数据。请填空完成程序。 #include unsigned int a[10],b[10]; (1) printf(\请输入10个正整数:\\n\ for(k=0;k<10;k++) { scanf(\ if(a[k]%2==0) b[m++]=a[k]; } for(k=0;k<= (2) ;k++) printf(\} 2.以下程序中,函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时, 函数返回值为1,否则函数返回值为0。主函数中输入一个字符串,如果该串为回文,则输出“yes”,否则输出“no”。所谓回文即正向与反向的拼写都一样,例如:adgda。请填空完成程序。 #include int huiwen(char *str){ int i=0,j= (2) ; while(i<=j) if(str[i]==str[j]){ (3) } if(i>j) return 1; else return 0; } void main(void){ char str[50]; printf(\ scanf(\ if( (4) ) printf(\ else printf(\ } 三、编程题(34分) (1)(11分)编写程序,计算Fabinacci数列1,1,2,3,5,8,13,21,??,的前10项之和。 (2)(11分)用二维数组data存储随机输入的(4×5)20个不重复整数,输出其中的最大整数及其输入的序号(序号可能值为1,2,3,... ,20)。 (3)(12分)完成函数int fun(char *s){ ? },函数返回字符串s中各个数字字符所组成的数。如,char *s=”a1bc2defg3h”,则函数返回值为整数123。并设计程序测