湖南理工学院C语言程序设计专升本冲刺卷及答案.docx
湖南理工学院C语言程序设计专升本冲刺卷(一)考试方式:【闭卷】考试时间:【90分钟】总分:【100分】一、单项选择题(共20题,每题2分,共40分)1、在计算机中,用()位二进制码组成一个字节。A、8B、16C、32D、64.【答案】A【解析】在计算机中,8位二进制码组成一个字节。2、 x=43, ch='a', y=0;那么表达式 x=y&& ch<'b'&&!y 的值是A、0B、语法错C、1D、"假"【答案】A3、以下if语句中,不正确的选项是 oA、if (x>y);B、 if(x=y) x+=y;C、 if(x!=y) scanf("%d",&x) else x=l;D、 if(x【答案】C4、以下选项中哪些描述是不正确的?A、循环语句必须要有终止条件否那么不能编译B、break关键字用于跳出当前循环C、continue用于终止本次循环,执行下一次循环D、switch条件语句中可以使用break【答案】A5、以下表达正确的选项是 oA、函数可以嵌套定义但不能嵌套调用B、函数既可以嵌套调用也可以嵌套定义C、函数既不可以嵌套定义也不可以嵌套调用D、函数可以嵌套调用但不可以嵌套定义【答案】Dint i,k; Favl (s);Fav2(s,w);【答案】1 si=k 2 sum=O. 0 10、以下程序的输出结果是main ()int x=-10, y;if(x<0) y=-l;else y=l;printf ("%d",y);【答案】-1三、编程题(共3题,共40分)1、编写程序:统计一维数组a中素数的个数例如:如果数组a的元素为:2,3,5,7,8,9,10,11,12,13,那么程序的输出应为:prime number (s) is (are)(此题 10 分)【答案】 #include <math. h> ttinclude <conio. h> #include <stdio. h>prinum( int a)int count,i,j,k;count = 0;for ( i=0; i<10; i+)(k=ai-l;for ( j=2; j<=k; j+)if (ai % j = 0) break;if(j >= k+1) count+;return(count);main ()int a10=2,3,5,7,8,9,10,ll,12,13),n; n=prinum(a);printf (,rprime number (s) is (are) : %d", n ); 2、编写程序:输入两个正整数m和n,求其最大公约数和最小公倍数。(本 题14分)【答案】 #include<stdio. h> int main()int a,b,t,r,n;printf ("请输入两个数字:n");scanf (r,%d %d" ,&a,&b); if (a<b)t=b;b=a;a=t;r=a%b; n=a*b;while (r!=O) (a=b; b=r; r=a%b;)printf ("这两个数的最大公约数是%d,最小公倍数是%dn", b,n/b);return 0;1 【解析】1)最小公倍数二输入的两个数之积除于它们的最大公约数,关键是求 田最大公约数;J(2)求最大公约数用辗转相除法(又名欧几里德算法)1)证明:设c是a和b的最大公约数,记为c=gcd(a,b) ,a>=b, 令 r=a mod b设a=kc, b=jc,那么k, j互素,否那么c不是最大公约数 据 上,r=a-mb=kc-mjc=(k-mj)c可知r也是c的倍数,且k-mj与j互素,否那么与前述k, j互素矛盾,由此可知,b与r的最大公约数也是c,即gcd(a,b)=gcd(b,a mod b),得证。2)算法描述:第一步:a 4- b,令r为所得余数(Or第二步:互换:置a-b, b-r,并3、假设有以下银行卡信息: struct card(int id;银行卡号int bonus; 金额;请编写程序,从键盘输入5条银行卡记录,使用结构体数组存储这些数据,并按金额升序排序,输出排序后的结果。【输入形式】5条银行卡记录分行输入,每行数据用空格间隔【输出形式】分5行输出数据,每行数据均使用空格间隔【输入样例】1001 201002 801003 501004 101006 40【输出样例】1004 101001 201006 401003 501002 80 (此题 16 分)【答案】 ftinclude <stdio.h>ttinclude <stdlib. h>struct cardint id;银行卡号int bonus; 金额a5,tamp;int main ()int i, j;for(i =0; i < 5; i+)scanf("%d %d", &ai. id, &ai. bonus); for(i =1; i < 5; i+)for(j = 0; j < 5 - i; j+)if(aj. bonus > aj+l. bonus)(tamp = aj;aj = aj+l; a j+1 = tamp;for(j = 0; j < 5; j+)(printf("%d %dn", aj. id, aj. bonus);湖南理工学院C语言程序设计专升本冲刺卷(二)考试方式:【闭卷】考试时间:【90分钟】总分:【100分】一、单项选择题(共20题,每题2分,共40分)1、假设a为int类型,且其值为3,那么执行完表达式a+= a-=a*a后,a的值是A、一3B、9C、-12D、6【答案】C2、 x=43, ch=' a' , y=0,那么表达式(x>=y&&ch< ' b'&&!y)的值是。A、0B、语法错C、1D、"假"【答案】C3、假设a是数值类型,那么逻辑表达式(a=l) | | (a!=l)的值是。A、1B、0C、2D、不知道a的值,不能确定【答案】A4、循环语句"for(i=l; i<0; i+) i+;"的循环次数是。A、无限循环B、2次C、1次D、0次【答案】D5、以下表达中错误的选项是 oA、C语句必须以分号结束B、C程序总是从主函数开始执行C、空语句出现在任何位置都不会影响程序运行D、定义语句用分号“;”结束【答案】C6、设a和b均为int型变量,且a=6、b=ll, c=3,那么能使值为3的表达式是OA、b%(c%4)B、 b%(c-a%5)C、 b%a-a%5D、(b%a)- (a%4)【答案】D【解析】选项析括号内的运算分别是b%a=ll%6=5和a%c=6%4=2,最后得到5- 2=3 o7、设有数组定义:char array ="student";那么数组所占的存贮空间为OA、6个字节B、7个字节C、8个字节D、9个字节【答案】C8、假设有以下定义和语句:"double r=99,*p=&r;*p=r;",那么以下正确的表达是 oA、两个*p含义相同,都说明给指针变量P赋值B、在"double r=99, *p=&r; ”中,把r的地址赋值给了 P所指的存储 单元C、语句u*p=r; ”把变量r的值赋给指针变量PD、语句u*p=r; ”取变量r的值放回r中【答案】B9、下面程序段输出两个字符串中对应相等的字符。请分析程序填空。char x口="programming”;char y =,rfortrann ; int i=0;while (xi!=,0r&&yi!='0') if (xi=yi) printf ("%c", );else i+;A、 xi+B、 y+iC、 xiD、 yi【答案】A10、下述程序的输出结果是 O#include<stdio. h> void main ()int a5=l,2,3,4,5;int*p=a,*q二&p;printf (,r%dn, *(p+);printf (,r%df, *q);A、22B、11C、34D、12【答案】D【解析】程序首先定义了一个指向一维数组a的指针p, 一个指向指针变量p 的指针变量q,输出*(p+)是先输出*P即a0的值,再将指针p指向数组的下 一个元素al,输出*q是输出指针p所指向单元的内容,即al的值。11、对于以下递归函数f,调用f(3)的返回值是 o int f(int n)if (n) return f (n-l) + n;else return n;A、10B、6C、3D、0【答案】B12、假设有条件表达式(exp) a+: b一,那么以下表达式中能完全等价于表达式(exp)的是 OA、 (exp=0)B、 (exp!=0)C、 (exp=l)D、 (exp!=l)【答案】B【解析】条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中 惟一的一个三目运算符。条件表达式的一般形式为:表达式17表达式2:表达其求解顺序是:先求解表达式1,假设为非0(真)那么求解表达式2,此时表达式 2的值就作为整个条件表达式的值。假设表达式1的值为0(假),那么求解表达式 3,表达式3的值就是整个条件表达式的值。并且注意+、一的用法。13、以下程序运行后,如果从键盘上输入abcdefV回车,那么输出结果为 #include<stdio. h>#include<string. h> func(char str) int num=O;while(*(str+num)!=? 0' ) num+; return (num);main () char str10,*p=str; gets(p);printf (,r%dnn, func (p); A、8B、7C、6D、5【答案】c【解析】此题通过函数gets。从键盘接收一个字符串,并通过调用fune()函 数,统计串中字符的个数。14、以下描述说明正确的选项是 oA、定义结构体时,它的每个成员的数据类型可以不同B、不同结构体的成员名不能相同C、结构体定义时,其成员的数据类型不能是结构体本身D、结构体定义时各成员项之间可用分号也可用逗号隔开【答案】A15、如下程序,要想输出结果为ab,那么输入应该为 void main ()(char a;char b;scanf (,r%c%c", &a,&b);printf (,r%c%c,r, a, b);)A、a【空格】bB、abC. 'a' "b'D、 97 98【答案】B16、有以下程序: main ()int i,j;for(j=10; j<ll; j+)for (i=9; i< j; i+) if (! (j%i)break; if (i=j-l) printf ("%d", j);输出结果是 oA、11B、10C、9D、 10 11【答案】B17、程序中有下面的说明和定义struct abc|int x ;char y ;struct abc si , s2 ;那么会发生的情况是 oA、编译出错B、程序将顺利编译、连接、执行C、能顺利通过编译、连接、但不能执行D、能顺利通过编译、但连接出错【答案】A18、假设有以下程序段 int m=0xabc,n=0xabc; m-=n;printf("%x'n",m);执行后输出结果是A、0X0B、0x0C、0D、 OXABC【答案】C19、设int a10, *p=a;数组元素a4的正确引用是A、 *(p+4)B、p+4C、 *p+4D、a+4【答案】A20、设有以下语句 typedef struct s int g; char h;) t;那么下面表达中正确的选项是 oA、可用S定义结构体变量B、可以用T定义结构体变量C、S是struct类型的变量D、T是struct S类型的变量【答案】A二、填空题(共10题,每题2分,共20分)1、在c语言中,将字符串中大写字母转换成小写字母的函数是【答案】strlwr#strlwr () #strlwr (字符串)2、在c语言中,标识符是由英文字母、下划线组成的。【答案】数字3、局部变量的作用域是从定义的位置起,到 结束止。【答案】函数4、c语言约定用 作为字符串的结束标志。【答案】'0'#0【解析】考查函数的定义及其调用。解题要点在C语言中,所有的函数都是平行的,即在定义函数时是互相独立 的,一个函数并不附属于另一个函数,即函数不能嵌套定义,但可以互相调错解分析函数不能嵌套定义,但可以嵌套调用,应选项A)、B)和C)中的描 述都错误。6、如果int i = 3,那么k= (+i) + (+i) + (i+)执行过后k的值为,i的值为 0()A、 15, 6B、 12, 5C、 18, 6D、 15, 5【答案】A7、以下能正确定义数组并正确赋初值的语句是 oA、int n=5,bn n;B、int aElH2 = l,3;C、int c2 = 1,2, 3,4D、 int a32=1,2,3,4【答案】D8、以下表达中正确的选项是 oA、使用typedef说明新类型名时,其格式是:typede新类型名原类型名B、在程序中,允许用typedef来说明一种新的类型名C、使用typedef说明新类型名时,后面不能加分号D、在使用typedef改变原类型的名称后,只能使用新的类型名【答案】B【解析】此题考查typedef的使用方法,typedef对已存在的类型使用一个新 的名字,选项A总新类型名应该在原类型名之后,C选项中后面要加分号,D选 项中可以使用原类型名。9、以下程序运行后的输出结果是main()char s="ABCD",*p;for (p=s+l ; p<s+4; p+) printf ("%sn", p);A、 ABCDBCDCDD5、以下程序段的运行结果是 omain ()(int n,s=0 ;for(n=l; n<=5; n+) (if(n%2=0) continue;s=s+n;)printf("%dn", s);【答案】96、以下程序的输出结果是 omain ()(int a=-l, b;if(a<0) b=2*a+l;else b=2*a-l;printf (,r%dH, b);【答案】T7、在c语言中,假设确实不要求返回函数值,那么应将函数定义为()类型。【答案】 void8、假设有说明:int a 3 = 1,2,3, 4,5, 6,7;那么数组a的第一维的大小 为 0【答案】39、以下程序的功能是:将值为三位正整数的变量x中的数值按照个位.十位、 百位的顺序拆分并输出。请填空。#include<stdio. h>main ()int x=256;printf ( H %d-%d-%dn n , , x/10%10, x/100);【答案】'x%10'10、写出以下程序的运行结果。#include "stdio. h"main ()int a = l,2,3,-4,5;int m,n,*p;p=&a0;m=*(p+l);n=* (p+4);printf (,r%d %d %d H, *p, m, n);【答案】1 2 5三、编程题(共3题,共40分)1、求100之内自然数中偶数之和。(此题10分)【答案】 #includevoid main ()int i,sum=0;for (i=0;i<=100;i+)if(i%2=0)sum=sum+i;printf (nsum=%dnn, sum);I2、编写程序:?=800*?+9*?其中?代表的两位数,809*?为四位数,8*? 的结果为两位数,9*?的结果为3位数。求?代表的两位数,及809*?后的结 果。打印如下形式,??代表一个数字:09*?=800*?+9*?(此题 14 分)【答案】 ttinclude <stdio. h>void output (long int b, long int i) printf(,rn%ld = 800 * %ld + 9 * %ldn b,i,i);int main () void output (long int b, long int i);long int a,b,i;a = 809;for(i = 10; i < 100; i+) b = i * a;if (b >= 1000 && b <= 10000 && 8 * i < 100 && 9 * i >= 100) (output (b, i);)return 0;I3、通过函数调用实现:讲结构体数组中的三个元素按num成员进行升序排列。 要求:数组元素依次赋初值为:12, "sunny",89. 1、8, "henry",73. 5、 21,nlucy91.7o结构体定义如下:struct s int num; char name30 ; float score;(本 题16分)【答案】写法1:在函数外部定义结构体变量并且赋值,参数值为空。char name30;float score;a3 = 12,"sunny",89. 1 , 8,"henry",73. 5 , 21,HlucyH,91. 7; void fun ()int i,j;struct s t;for(i=0; i<2; i+)for(j=0; j<2-i; j+)if(aj. num > aj+1. num) (t = aj;aj = aj+l; aj+l = t;Iint main ()int i;fun();for(i=0; i<3; i+)printf (H%d,%s,%fn,r,ai. num , ai. name , ai. score);return 0;8,henry,73. 50000012,sunny,89. 09999821,lucy,91. 699997写法2:在主函数中定义变量,通过参数传递变量值char name30; float score;void fun (struct s *a , int n) int i,j;struct s t;for(i=0; i<n-l; i+)for(j=0;j+)if(aj. num > aj+1. num) t = aj;aj = aj+l;aj+l = t;int main ()struct s a3 = 12,"sunny",89. 1 , 8,"henry",73. 5, 21,"lucy",9L7;int i;fun(a,3);for(i=0; i<3; i+)printf (n%d,%s,%fnH,ai. num , ai. name , ai. score); )return 0;I8,henry,73.50000012,sunny,89.09999821,lucy,91.699997湖南理工学院C语言程序设计专升本冲刺卷(三)考试方式:【闭卷】考试时间:【90分钟】总分:【100分】一、单项选择题(共20题,每题2分,共40分)1、如果要求在if后的判断条件是a不等于0,那么以下选项中能正确表达这一关 系的是 oA、a<>0B、!aC、a=0D、a【答案】D【解析】if判断条件的值只能是0或非0, if (a)就是if (!0)的意思。2、假设w=l,x=2,y=3, z=4,那么条件表达式w<x?w: y<z?y: z的结果为。A、4B、3C、2D、1【答案】D3、以下描述正确的选项是 oA、表示m>n为true或m<n为true的表达式为m>n& &m<nB、switch语句结构中必须有default语句C、if语句结构中必须有else语句D、如果至少有一个操作数为true,那么包含| |运算符的表达式为true【答案】D【解析】此题主要考查C语言的基本语法,选项A中应该为m>n | | m<n;选 项B中default语句可有可无;选项C中if可以单独作为一条语句,不必须和 else搭配。4、for循环的循环次数 oA、通常是确定的,但也可以不确定B、通常不确定,但也可以确定C、是不确定的D、是确定的【答案】A【解析】for循环通常用于循环次数确定的情况,但也可以根据循环结束条件 完成循环次数不确定的情况。5、以下表达中错误的选项是 oA、主函数main也可以带形参B、函数中通过return返回函数值C、调用函数必须在一条独立的语句中完成D、一个函数中可以有多条return语句【答案】C【解析】当函数有返回值时,调用函数可以作为一个表达式的子表达式,而不 是作为一条独立的语句存在。6、不能正确表示a*b/c*d的c语言表达式是。A、 a*b/c*dB、 a/(c*d)*bC、 a*b/c/dD、 a*b/(c*d)【答案】c7、假定a为一个整型数组名,那么元素a4的字节地址为A、a+4B、a+8E、 a+16F、 a+32【答案】c【解析】注意:VC编译器分配给整数的内存是4字节。8、以下选项中不正确的字符常量是 oA、TB, '0'C、D、7【答案】C9、c语言中,以下不合法的字符串常量是 oA、“ '121”B、 'y='C、” nn”D、"ABCDx6d”【答案】B10、下面程序输出的结果是.#include <stdio. h>void main()int i,j,x=0;static int a6 = 1,2,3,4,5,6;for (i=0, j=l; i<5;+i, j+) x+=ai*aj;printf("%dn",x);A、数组a中首尾的对应元素的乘积B、数组a中首尾的对应元素的乘积之和C、数组a中相邻各元素的乘积D、数组a中相邻各元素的乘积之和【答案】D11、对C语言程序,以下说法正确的选项是 OA、main函数是主函数,一定要写在最前面。B、所有的自定义函数,都必须先声明。C、程序总是从main函数开始执行的。D、程序中只能调用库函数,不能自己定义函数。【答案】C12、变量p为指针变量,假设p=&a,以下说法不正确的有 oA、&*p=二&aB、*&a=aC、 (*p)+=a+D、 *(p+)=a+【答案】D【解析】*p代表a, &*p等价于&a; p代表&a, *p等价于a,因而(*p)+等价于 a+;但因p的值为a的内存单元地址,p+为变量a首地址后面的地址, *S+)不再指向变量So13、下面不正确的描述为 oA、调用函数时,实参可以是表达式B、调用函数时,实参与形参可以共用内存单元C、调用函数时,将为形参分配内存单元D、调用函数时,实参与形参的类型必须一致【答案】B【解析】函数调用时用实参替换形参,如果实参为表达式,将为表达式的值创 建一个临时对象,然后将该实参替换形参。替换的实质是变量间的拷贝当然这 种拷贝需要为形参分配内存。需要注意的是:形参在编译时不分配内存,在运 行时才分配内存。14、 struct exint x ; float y; char z ;example;那么下面的表达中不正确的选项是 OA、struct结构体类型的关键字B、example是结构体类型名C、x, y, z都是结构体成员名D、struct ex是结构体类型【答案】B15、下面程序的输出结果是#include<stdio. h>main ()int i=010,j=10;printf (,%dn,+i,j一);A、 11, 10B、 9, 10C、 010, 9D、 10, 9【答案】B【解析】程序中i的值用八进制表示(十进制为8), +i是在变量使用前自身先 加1,而j一是在变量使用后自身减1。16、有以下程序include <stdio. h>main ()(int x=8;for( ; x>0; x-)(if(x%3)(printf (H%d, ,r, x-);continue;printf (吗d, ", -x);程序的运行结果是A、 7, 4, 2B、 8,7,5,2C、 9,7,6,4D、 8,5,4,2【答案】D17、c语言结构体类型变量在程序执行期间,oA、所有成员一直驻留在内存中B、没有成员驻留在内存中C、局部成员驻留在内存中D、只有一个成员驻留在内存中【答案】A18、有如下程序main()int a3 3 = 1,2, 3,4, 5,6, i, j,s = 0;for (i=0; i<3; i+)for (j=0; j<=l; j+) s+=ai j;printf("%dn",s);该程序的输出结果是 oA、18B、19C、20D、21【答案】D19、以下表达中正确的选项是 oA、一条语句只能定义一个数组B、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的 存储单元C、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式D、在引用数组元素时,下标表达式可以使用浮点数【答案】B【解析】A选项中,一条语句只能定义一个数组是不准确的,可以通过一条语句 定义多个数组;C选项中,数组说明符的一对方括号中可以是整型常量,可以是整 型常量表达式;D选项中,在引用数组元素时,下标表达式必须是整型的。因此B 选项正确。20、以下程序运行后的输出结果是#include<stdio. h>struct stB、AC、BCDD、BCDCDD【答案】D【解析】此题考查指向字符串指针的运算方法。执行p=s+l后,指针变量p就 指向字符串中的第二个字符B,然后输出字符串"BCD"并换行;继续执行循环语 句,指针变量p指向下一个字符c,输出字符串"CD",最后一次循环,p指向字 符"D",输出字符串"D"。10、以下二维数组的说明中,不正确的选项是 OA、 float a4=0,1,8,5,9;B、 int a34C、 ttdefine N 5f1oat aN3D、int a9. 5;【答案】D【解析】C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达 式,而不能省略第二个方括号中的常量表达式:二维数组的一般定义格式是: 类型说明符数组名常量表达式常量表达式。11、以下表达中正确的选项是 OA、构成C程序的基本单位是函数B、可以在一个函数中定义另一个函数C、main。函数必须放在其他函数之前D、函数定义的格式是K&R格式【答案】A【解析】此题考查C语言的综合基础知识。构成C程序的基本单位是函数,不 论main函数在整个程序中的位置如何,一个C程序总是从main函数开始执 行,C语言的函数定义都是互相平行、独立的,在定义函数时,一个函数内不 能定义另一个函数。C函数定义的一般格式有两种:传统格式和现代格式。传 统格式也称K&R,格式是早期编译系统使用的格式;现代格式又称ANSI格 式,是现代编译系统使用的格式。int x, y; data2 = 1, 10,2, 20;main () struct st *p = data;printfp->y);printf (,r%dn,f, (+p)->x); )A、 10, 1B、 20, 1C、 10, 2D、 20, 2【答案】c【解析】正确地给结构体数组赋初值,data0. x=l. data0. y=10>datatlL x=2s datal. y=20;首先,p 指向 data0,第一条打印语句输出 p->y,即data0.y的值10; (+p)->x含义是先+p,此时p指向datal 第二条打印语句输出(+p)->x,即dalal. x的值2。|二、填空题(共10题,每题2分,共20分)1、一个3位的二进制数能表示几个数?【答案】82、假设i为整型变量,且i%2=0的值为1,那么变量i为 数。【答案】偶3、"float a=3. 5;int b= 12;",那么算术表达式"(int) (a+b/5)"的值是【答案】54、变量y满足以下两条件中的任意一个:能被4整除,但不能被100整除;能被400整除。请用逻辑表达式表示所给条件。o【答案】'y%4=0 && y%100!=0 | | y%400=0'5、以下程序运行的结果为 ttinclude <stdio. h> void main () (int score=4; switch(score)case 5: printf (n90-100,r); break;case 4: printf("80-89"); break;case 3: printf(n70-79H); break;case 2: printf (,r60-69,r);break;default: printf (,r0-59");【答案】80-906、以下程序的输出结果为main()char m ,n ; m=getchar();/*(输入 d) */n=m-34; printf (,r%c!1,n);【答案】b7、一个C程序有且仅有一个 函数。【答案】main8、函数实参的传递分为【答案】值传递和址传递9、执行以下程序段后,输出的a的值是main ()(int m = 0;switch (m)(case 0: m=2*m+l;break;case 1: m=m-1;break;case 2: m=m+5;break)printf (吗d”,m);【答案】110、以下程序运行后的输出结果是ttinclude <stdio. h>main()int x=20;printf (,r%d ", 0<x<20);printf (,r%dnn, 0<x&&x<20);【答案】'I o'三、编程题(共3题,共40分)1、输出9*9乘法表。(此题10分)【答案】 #include <stdio.h>void main ()int i=l;for(i; i=9; i+)int j=l;for(j;j<=i;j+)printf (!,%d*%d=%d n, i, j, i*j); printf (,rnn);2、编写程序:打印出所有的“水仙花数“,所谓“水仙花数”是指一个三位数, 其各位数字立方和等于该数 本身。例如:153是一个"水仙花数、因为153=1 的三次方+ 5的三次方+ 3的三次方。(此题14分)【答案】 #include<stdio. h>int main ()int i,x,y,z;for(i=100;i<1000;i+)x=i%10;y=i/10%10;z=i/100%10;if (i= (x*x*x+y*y*y+z*z*z)printf("%d'n", i);)return 0; 【解析】利用for循环控制100-999个数,每个数分解出个位,十位,百位。3、有以下类信息,使用结构体数组存储这些信息struct classint id;类编号char info20; 类信息a5 = 1,"aaa",2,"bbb"),6,"ccc"), 7,"ddd"),4,"eee");从键盘输入一个类编号,如果有该类,删除该类信息,并输出删除后剩余类信息;如果没有,全部输出。【输出形式】分行输出数据,每行数据均使用一个空格分隔【输入样例】1【输出样例】每行数据均使用一个空格分隔,分行输出2 bbb6 cccddd4 eee (此题16分)【答案】 #include<stdio.h> struct classint id;类编号char info20; 类信息eee ;eee ;a5 = l,naaaH,2,"bbb",6,"ccc",7,"ddd", 4, int main(void)int i, j, x;scanf (n%dn, &x);for(i = 0; i < 5; i+) (if(ai. id=x) break;)for(j = i; j < 4; j+)(aj= aj + 1;)for(j =0; j < 4; j+)printf (H%d %snH, aj. id, aj. info);湖南理工学院C语言程序设计专升本冲刺卷(四)考试方式:【闭卷】考试时间:【90分钟】总分:【100分】.一、单项选择题(共20题,每题2分,共40分)1、假设整型变量a、b、c、d中的值依次为2、2、3、4,那么条件表达式ab?a: c A、1B、2C、3D、4【答案】c2、假设指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语 句是 OA、p=2*(int*)malloc(size