试卷编号:11832 所属语言:C语言 试卷方案:gl1 试卷总分:100分 共有题型:6种 ━━━━━━━━━━━━━━━ 一、填空 共10题 (共计20分) ━━━━━━━━━━━━━━━ 第1题 (2.0分) 题号:309 当a=3,b=2,c=1;时,执行以下程序段后 b=【1】. if(a>b) a=b; if(b>c) b=c; else c=b; c=a; 答案: =======(答案1)======= 1 第2题 (2.0分) 题号:1261 已知:int i=8,j=10,m,n;m=++i;n=j++;问语句执行后m=【1】,n=【2】。 答案: =======(答案1)======= 9 =======(答案2)======= 10 第3题 (2.0分) 题号:663 int x=2;z=++x+1; 则z的值为【1】. 答案: =======(答案1)======= 4 第4题 (2.0分) 题号:666 int x=y=4,z=2;x=y==z; 则x的值为【1】. 答案: =======(答案1)======= 0 第5题 (2.0分) 题号:656 int x; x=-3+4%-5*3, 则x的值为【1】. 答案: =======(答案1)======= 9 第6题 (2.0分) 题号:683 已知 a=10,b=15,c=1,d=2,e=0,则表达式!a=y)&&(y>=z) B:(x>=y)AND(y>=z) C:(x>=y>=z) D:(x>=y) & (y>=z) 答案:A 第4题 (2.0分) 题号:3147 对于定义,char *aa[2]={"abcd","ABCD"},选项中说法正确的是 A:aa数组元素的值分别是"abcd"和"ABCD" B:aa是指针变量,它指向含有两个数组元素的字符型一维数组 C:aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D:aa数组的两个元素中各自存放了字符'a'和'A'的地址 答案:D 第5题 (2.0分) 题号:701 设 char *s="\ta\017bc";则指针变量s指向的字符串所占的字节数 是()。 A:9 B:5 C:6 D:7 答案:C 第6题 (2.0分) 题号:4558 下列关于 C 语言的叙述错误的是 ( ) A:英文字母大小写不加以区分 B:不同类型的变量可以出现在同一个表达式中 C:在赋值表达式中赋值号两边的类型可以不同 D:某些运算符在不同的场合可以有不同的含义 答案:A 第7题 (2.0分) 题号:134 若a是float型变量,b是unsigned型变量,以下输入语句中合法的是()。 A:scanf("%6.2f%d",&a,&b); B:scanf("%f%n",&a,&b); C:scanf("%f%3o",&a,&b); D:scanf("%f%f",&a,&b); 答案:C 第8题 (2.0分) 题号:3119 以下叙述中错误的是 A:可以通过typedef增加新的类型 B:可以用typedef将已存在的类型用一个新的名字来代表 C:用typedef定义新的类型名后,原有类型名仍有效 D:用typedef可以为各种类型起别名,但不能为变量起别名 答案:A 第9题 (2.0分) 题号:3115 以下关于long、int和short类型数据占用内存大小的叙述中正确的是 A:均占4个字节 B:根据数据的大小来决定所占内存的字节数 C:由用户自己定义 D:由C语言编译系统决定 答案:D 第10题 (2.0分) 题号:634 以下不正确的定义语句是()。 A:double x[5]={2.0,4.0,6.0,8.0,10.0}; B:int y[5]={0,1,3,5,7,9}; C:char c1[]={'1','2','3','4','5'}; D:char c2[]={'\x10','\xa','\x8'}; 答案:B 第11题 (2.0分) 题号:489 下列标识符中,不合法的C语言用户自定义标识符是()。 A:printf B:enum C:_ D:sin 答案:B 第12题 (2.0分) 题号:3125 若有定义int a[10],*p=a;,则p+5表示 A:元素a[5]的地址 B:元素a[5]的值 C:元素a[6]的地址 D:元素a[6]的值 答案:A 第13题 (2.0分) 题号:193 具有相同类型的指针变量p与数组a,不能进行的操作是()。 A:p=a; B:*p=a[0]; C:p=&a[0]; D:p=&a; 答案:D 第14题 (2.0分) 题号:597 下列四个选项中,均是C语言关键字的选项是()。 A:auto enum include B:switch typedef continue C:signed union scanf D:if struct type 答案:B 第15题 (2.0分) 题号:3092 设有说明:char w; int x; float y; double z; 则表达式w*x+z-y值的数据类型为(). A:float B:int C:char D:double 答案:D ━━━━━━━━━━━━━━━━ 四、程序填空 共2题 (共计20分) ━━━━━━━━━━━━━━━━ 第1题 (10.0分) 题号:421 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:输入学生成绩并显示。 -------------------------------------------------------*/ # include struct student { char number[6]; char name[6]; int score[3]; } stu[2]; void output(struct student stu[2]); void main() { int i, j; /***********SPACE***********/ for(i=0; i<2; 【?】) { printf("请输入学生%d的成绩:\n", i+1); printf("学号:"); /***********SPACE***********/ scanf("%s", 【?】.number); printf("姓名:"); scanf("%s", stu[i].name); for(j=0; j<3; j++) { printf("成绩 %d. ", j+1); /***********SPACE***********/ scanf("%d", 【?】.score[j]); } printf("\n"); } output(stu); } void output(struct student stu[2]) { int i, j; printf("学号 姓名 成绩1 成绩2 成绩3\n"); for(i=0; i<2; i++) { /***********SPACE***********/ 【?】("%-6s%-6s", stu[i].number, stu[i].name); for(j=0; j<3; j++) printf("%-8d", stu[i].score[j]); printf("\n"); } } 答案: =======(答案1)======= i++ =========或========= ++i =========或========= i=i+1 =======(答案2)======= &stu[i] =======(答案3)======= &stu[i] =======(答案4)======= printf 第2题 (10.0分) 题号:483 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:对数组 A 中的N( 0 <N<100)个整数从小到大进行连续编 号,输出各个元素的编号。要求不能改变数组A中元素的 顺序,且相同的整数要具有相同的编号。 例如:数组是: A=(5,3,4,7,3,5,6) 则输出为:(3,1,2,5,1,3,4) -------------------------------------------------------*/ #include main() { int i,j,k,n,m=1,r=1,a[2][100]={0} ; printf("Please enter n:") ; scanf("%d",&n) ; for(i=0 ; im =======(答案2)======= break =======(答案3)======= k=j ━━━━━━━━━━━━━━━━ 五、程序改错 共1题 (共计10分) ━━━━━━━━━━━━━━━━ 第1题 (10.0分) 题号:374 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,…… 项值通过函数值返回 main ( )函数。 例如:若 n = 15,则应输出:The value is: 2209。 ------------------------------------------------------*/ #include #include long fun ( int n ) { long a=1, b=1, c=1, d=1, k; /**********FOUND**********/ for (k=4; k void wwjt(); long sum(long f1,long f2) { /**********Program**********/ /********** End **********/ } main() { long int f1=1,f2=1; printf("sum=%ld\n",sum(f1,f2)); wwjt(); } void wwjt() { FILE *IN,*OUT; int n; int i[2]; long int o; IN=fopen("in.dat","r"); if(IN==NULL) { printf("Read FILE Error"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("Write FILE Error"); } for(n=0;n<2;n++) fscanf(IN,"%d",&i[n]); o = sum(i[0],i[1]); fprintf(OUT,"%ld\n",o); fclose(IN); fclose(OUT); } 答案:---------------------- long f,k=f1+f2; int i; for(i=3;i<=28;i++) {f=f1+f2; k=k+f; f1=f2; f2=f; } return(k); ----------------------