资源描述
一、选择题1与47相等的十六进制数是( A )。A)2FB)215C)32FD)1152将15向左移动2位后的值是( D )。A)(3C)16B)(00111100)2C)(60)10D)都正确3将250与5进行按位与的结果是( A )。A)0B)1C)(FF)16D)(F0)164将(AF)16与(78)16进行按位异或的结果是( A )。A)(D7)16B)(28)16C)(D8)16D)(27)165. 设int类型的数据长度为2个字节,则unsigned int 类型数据的取值范围是(B)。A)0至255B)0至65535C)-32768至32767D)-256至2556. 再C语言中,数字029是一个(D)。A)八进制数B)十六进制数C)十进制数D)非法数7. 下列可以正确表示字符常数的是(B)。A)“a”B)tC)“n”D)2978. 以下(C)是错误的转义字符。A)B)C)81D)09. 已说明int a=256,执行语句“printf(%x”,a);” 的结果是(A)。 A)0100B)0256C)0FFED)00FF10. 字符串 “22a, 0n” 的长度是(C)。A)8B)7C)6D)511. 下面4个选项中,均是合法的转义字符的选项时(A)。A) nB) 017 C)018 f xabD)0 101 x1f12. 下面4个选项中,均是不合法的转义字符的选项时(B)。A)t x1fB)1011 aC)011 f D)abc 101 x1f13. 已知int j, i=1;,执行语句j=-i+;后,j的值是(C)。A)1B)2C)-1D)-214. 已知int i, a;,执行语句i = (a=2*3, a*5), a+6; 后,变量i的值是(C)。A)6B)12C)30D)3615. 已知int i=5;,执行语句i += +I; 后,变量i的值是(C)。A)10B)11C)12D)A)、B)、C)答案都不对16. 已知:float x=1, y;,则y = +x*+x的结果为(D)。A)9B)6C)1D)表达式是错误的17. 已知char w; int x; float y; double z;,则表达是w*x+z-y结果的类型是(D)。A)floatB)charC)intD)double18. sizeof(double)是(C)。A)函数调用B)double型表达式C)int型表达式D)非法表达式19. 假设所有变量均为整数,则表达是( a=2, b=5, b+, a+b )的值是(B)。A)7B)8C)6D)220. 若有定义:int a=7; float x=2.5, y=4.7;,则表达式x+a%3*(int)(x+y)%2/4的值是(A)。A)2.500000B)2.750000C)3.500000D)0.00000021. 设变量n为float类型,m为int类型,则以下实现将n中的数值保留小数点后两位,第3位进行四舍五入运算的表达式是(B)。A)n = (n*100+0.5)/100.0B)m = n*100+0.5, n=m/100.0C)n = n*100+0.5/100.0D)n = (n/100+0.5)*100.022. 以下能正确的定义整数变量a、b和c,并为其赋初值5的语句是(B)。A)int a=b=c=5;B)int a, b, c=5;C)a=5, b=5, c=5;D)a=b=c=5;23. 已知ch是字符型变量,下面不正确的赋值语句是(A)。A)ch = a+b;B)ch = 0;C)ch = 7 + 9;D)ch = 5+9;24. 设x、y均为float型变量,则以下不合法的赋值语句是(B)。A)+x;B)y=(x%2)/10;C)x*=y+8;D)x=y=0;25. 以下程序的输出结果是(D)。void main( void )printf( “n*s1=%15s*”, “chinabeijing” );printf( “n*s2=%-5s*”, “chi” );A)*s1 = chinabeijing*s2 = *chi*B)*s1 = chinabeijing*s2 = chi*C)*s1 = *chinabeijing*s2 = chi*D)*s1 = *chinabeijing*s2 = chi*26.以下程序的输出结果是(C)。 (注:表示空格)void main( void )long y = -43456;printf( “y=%-8ldn”, y );printf( “y=%-08ldn”, y );printf( “y=%08ldn”, y );printf( “y=%+8ldn”, y );A)y = -43456y = -43456y = -0043456B)y = -43456y = -43456y = -0043456C)y = -43456y = -43456y = -0043456y = -43456D)y = -43456y = -0043456y = 00043456y = +4345627.已知:int x, y, z, w; 为使以下语句的输出为:1234+123+12+1,正确的输入形式应当为(C)。scanf( “%4d-%3d-%2d-%1d”,&x, &y, &z, &w );printf( “ %4d+%3d+%2d+%1dn”, x, y, z, w );A)1234123121B)1234 123 12 1C)1234 123 12 - 1D)1234+123+12+128已知:intx; float y; 所用的scanf调用语句格式为:scanf( “x=%d, y=%f”, &x, &y );为了将数据10和66.6分别赋给x和y,正确的输入应当是(A)。A)x=10, y=66.6B)10, 66.6C)1066.6D)x=10y=66.6 29.已有如下定义的输入语句,若要求A1,A2,C1,C2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是(C)。 (注: 表示空格,表示回车)int a1, a2,;char c1, c2;scanf( “%d%c%d%c”, &a1, &c1, &a2, &c2 );A)10A20BB)10A20BC)10A20BD)10A20B30.阅读以下程序,当输入数据的形式为:25, 13, 10,正确的输入形式为(D)。 (表示回车)void main( void )int , x, y, z;scanf( “%d%d%d”, &x, &y, &z );printf( “x+y+z=%dn”, x+y+z );A)x+y+z=48B)x+y+z=35C)x+z=35D)不确定值31. 已知:int x=1, y=2, z; 则执行z = xy?+x:+y; 则z的值为(C)。A)1B)2C)3D)432. 已知:int a=4, b=5, c; 则执行表达式c=a=ab后变量a的值为(A)。A)0B)1C)4D)533. 若w=1, x=2, y=3, z=4; 则条件表达式wx?w:yz?y:z的结果为(B)。A)4B)3C)2D)134. 若给定条件表达式:(n) ? (c+) : (c-),则与表达式n等价的表达式是(C)。A)n=0B)n=1C)n!=0D)n!=135.下列运算符中优先级最高的是(B)。A)=1) & (x=200) & (x=1) | (x=200) | (x=1)&(x=200)&(x=1) | (x=200) | (x=y & chB & !y )的值是(C)。A)0B)语法错C)1D)假38.设x、y和z是int型变量,且x=3, y=4, z=5,则下面表达式中值为0的是(D)。A)x & yB)x=yC)x|y+z&y-zD)!(x(B) (A) : (B)#define PRINT(Y) printf( “Y=%dn”, Y );a=1; b=2; c=3; d=4;t = MAX( a+b, c+d );PRINT( t )A)Y=3B)存在语法错误C)Y=7D)Y=041.typedef unsigned long LONG的作用是(D)。A)建立一个新的数据类型B)定义一个整型变量C)定义一个长整型变量D)定义一个新的数据类型标识符42.已知:struct int i;char c;float a; test;则sizeof(test)的值是(D)。A)4B)5C)6D)743.以下scanf函数调用语句中对结构变量的错误引用是(D)。struct pupil char name20;int a ge;int sex; pup5, *p;p = pup;A)scanf( “%s”, pup1.name );B)scanf( “%d”, &pup0.age );C)scanf( “%d”, &(p-sex) );D)scanf( “%d”, p-age );44.若有以下程序段:struct dent int n;int *m;int a=1, b=2, c=3;struct dent s3 = 101, &a, 102, &b, 103, &c ;struct dent *p=s;则以下表达式中值为2的是(D)。A)(p+)-mB)*(p+)-mC)(*p).mD)*(+p)-m45.设有一下说明和定义语句,则下面表达式中值为3的是(D)。struct s int i1;struct s *i2;static struct s a3 = 1, &a1, 2, &2, 3, &a0 ;static struct s *ptr;ptr = &a1;A)ptr-i1+B)ptr+-i1;C)*ptr-i1;D)+(ptr-i1)46.执行以下语句后的输出结果是(A)。enum weekday sun, mon=3, tue, wed, thu ;enum weekday workday;workday = wed;printf( “%dn”, workday );A)5B)3C)4D)编译时出错47.已知:union int i;chat c;float a; test;则sizeof(test)的值是(A)。A)4B)5C)6D)748.已知函数原型为:struct tree *f( int x1, int *x2, struct tree x3, struct tree *x4 )其中tree为一定义过的结构,且有下列变量定义:struct tree pt, *p;int i; 请选择正确的函数调用语句(B)。A)&pt = f(10, &I, pt, p );B)p = f(i+, &I, pt, &pt );C)p = f( i+1, &(i+2), *p, p );D)f(i+1, &I, p, p );49.已知函数的调用形式为:fread( buffer, size, count, fp ); 其中buffer代表的是(C)。A)一个整型变量,代表要读入的数据项总数B)一个文件指针,指向要读的文件C)一个指针,指向要存放读入数据的地址D)一个存储区,存放要读入的数据项50.打开一个已存在的非空文件“file”用于修改,正确的语句是(D)。A)fp = fopen( “file”, “r” );B)fp = fopen( “file”, “a+” );C)fp = fopen( “file”, “w” );D)fp = fopen( “file”, “r+” );51.系统的标准输出文件stdout是指(B)。A)键盘B)显示器C)软盘D)硬盘52.语言中标准的输入文件stdin是指(A)。A)键盘B)显示器C)软盘D)硬盘53.执行语句for ( i=0; i+3; ); 后,变量i的值为(C)。A)2B)3C)4D)554.定义int i=1; 执行语句while ( i+5 ); 后,变量i的值为(A)。A)3B)4C)5D)655.若int a=5; 则执行以下语句后打印的结果为(A)。do printf( “%2dn”, a- ); while (!a );A)5B)不打印任何内容C)4D)陷入死循环56.若int x=3; 且有下面的程序片段,则输出结果为(C)。do printf( “%2d”, x-=2 ); while (!(-x) );A)1B)3.0C)1-2D)死循环57.与语句while(!x)等价的语句是(A)。A)while ( x=0 )B)while ( x!=0 )C)while ( x!=1 )D)while ( x )58.下面的语句(C)。for ( x=0, y=0; (y!=123) & (xy );B)if (x=y ) x+=y;C)if ( x!=y ) scanf( “%d”, &x) else scanf( “%d”, &y );D)if ( xy ) x+; y+; 60.C语言对嵌套if语句的规定是:else总是与(D)配对。A)其之前最近的ifB)第一个ifC)缩进位置相同的ifD)其之前最近的且尚未匹配的if61.已知:int x, a, b;下列选项中错误的if语句是(B)。A)if (a=b ) x+;B)if (a=b ) x+;C)if ( a-b ) x+;D)if ( x ) x+;62.在下面的条件与语句中(其中s1和s2表示是C语言的语句),只有一个在功能上与其他三个语句不等价,它是(D)。A)if (a) s1; else s2;B)if (a=0) s2; else s1;C)if (a!=0 ) s1; else s2;D)if (a=0) s1; else s3;63.下列关于switch语句和break语句的结论中,正确的是(B)。A)break语句是switch语句的一部分B)在switch语句中可以更具需要使用或不使用break语句C)在switch语句中必须使用break语句D)break语句不能在switch语句中使用64.以下错误的描述是(B)。A)break语句不能用于循环语句和switch语句之外的任何其他语句B)在switch语句中使用break语句与使用continue语句的作用相同C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环65.已知:int *p, a; 则语句”p=&a;”中的运算符“&”的含义是(D)。A)位与运算B)逻辑与运算C)取指针地址D)取变量地址66.已知:int a, *p=&a; 下列函数调用中错误的是(D)。A)scanf( “%d”, &a );B)scanf( “%d”, p );C)printf( “%d”, a );D)printf( “%d”, p );67.已知:char *p, *q; 选择正确的语句(C)。A)p *= 3;B)p /= q;C)p += 3;D)p += q;68.已知:int x; 则下面的说明指针变量pb的语句(C)是正确的。A)int pb = &x;B)int *pb = x;C)int *pb = &x;D)*pb = *x;69.说明语句 “int (*p)();” 的含义是(C)。A)p是一个指向一维数组的指针变量B)p是一个指针,指向一个整型数组C)p是一个指向函数的指针,该函数的返回只是一个整型D)以上都不对70.说明语句 “int *(*p)();” 的含义是(D)。A)p是一个指向int型数据的指针B)p是一个指针变量,它构成了指针数组C)p是一个指向函数的指针,该函数的返回值是一个整型D)p是一个指向函数的指针,该函数的返回值是一个指向整型的指针71.已知:char s100; int i; 则下列引用数组元素的语句中,错误的表示形式是(D)。A)si+10B)*(s+i)C)*(i+s)D)*(s+)+i)72.已知:char s10, *p=s; 则在下列语句中,错误的语句是(B)。A)p = s+5;B)s = p+s;C)s2 = p4;D)*p = s0;73.已知:double *p6; 它的含义是(C)。A)p是指向double型变量的指针B)p是double型数组C)p是指针数组D)p是数组指针74.设有说明int ( *ptr)M; 其中的标识符ptr是(C)。A)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向具有M个整型元素的一维数组的指针D)具有M个指针元素的一维数组的指针75.已知:int a34, *p = &a00; p+=6; 则*p和(D)的值相同。A)*(a+6)B)*(&a0+6)C)*(a1+2)D)a1276.已知:int a=1,2,3,4,5,6,7,8,9,10.11.12, *p=a; 则值为3的表达式是(A)。A)p += 2, *(p+)B)p += 2, *+pC)p += 3, *p+D)*(&a00+6)77已知:int x = 1, 3, 5, 7,9, 11 , *ptr = x; 则不能正确引用数组元素的语句是(B)。A)*(ptr-)B)*(-ptr)C)*(ptr+)D)*(+ptr)78已知:int i, x34; 则不能将x11的值付给变量i的语句是(C)。A)i = *(*(x+1)+1)B)i = x11C)i = *(*(x+1)D)i = *(x1+1)79已知:int a23 = 2, 4, 6, 8, 10, 12 ; 则正确表达数组元素地址的是(A)。A)*(a+1)B)*(a1+2)C)a1+3D)a0080若有以下语句且0=k6,则正确表达数组元素地址的语句是(C)。static int x = 1, 3, 5, 7, 9, 11 , *ptr = x, k;A)x+B)&ptrC)&ptrkD)&(x+1)81合法的数组说明是(B)。A)int a = “string”;B)int a = 0, 1, 2, 3, 4, 5 ;C)char a = “string”;D)char a = 0, 1, 2, 3, 4, 5 ;82要说明一个有10个int元素的数组,应当选择语句(A)A)int a10;B)int a2,5;C)int a;D)int *a10;83再C语言中,引用数组元素时,其数组下标的数据类型允许是(C)。 A)整形常量B)整形表达式C)整形常量或整形表达式D)任何类型的表达式84已知:int a10; 则对a数组元素的正确引用是(D)。A)a10B)a3.5C)a(5)D)a10-1085以下对一维数组a正确进行初始化的语句是(C)。A)int a10 = (0,0,0,0,0);B)int a10 = ;C)int a = 0;D)int a2 = 10,9,8;86对以下说明语句的正确理解是(B)。int a10 = 6, 7, 8, 9, 20 ;A)将5个初值依次赋给a1至a5B)将5个初值依次赋给a0至a4C)将5个初值依次赋给a6至a10D)因为数组长度与初值个数不相同,所以此语句不正确87已知:int a34; 则对数组元素的引用正确的是(C)。A)a24B)a1, 3C)a1+10D)a(2)(1)88已知:int a34; 则对数组元素的非法引用是(D)。A)a02*1B)a13C)a4-20D)a0489以下能对外部的二维数组a进行正确初始化的语句是(B)。A)int a2 = 1, 0, 1 , 5, 2, 3 ;B)int a3 = 1, 2, 3 , 4, 5, 6 ;C)int a24 = 1, 2, 3 , 4, 5 , 6 ;D)int a3 = 1, 0, 1 , , 1, 1 ;90以下能不能对二维数组a进行正确初始化的语句是(C)。A)int a23 = 0 ;B)int a3 = 1, 2 , 0 ;C)int a23 = 1, 2 , 3, 4 , 5, 6 ;D)int a3 = 1, 2, 3, 4, 5, 6 ;91以下正确的语句是(D)。A)int a14 = 1, 2, 3, 4, 5 ;B)float a3 = 1 , 2 , 3 ;C)long b23 = 1 , 1, 2 , 1, 2, 3 ;D)double y3 = 0 ;92下面是对变量的初始化,其中错误的是(D)。A)s5 = “abc” ;B)s5 = a, b, c ;C)s5 = “”;D)s5 = “abcdef”;93为了判断两个字符串s1和s2是否相等,应当使用(D)。A)if ( s1=s2 )B)if (s1=s2 )C)if (strcpy( s1, s2 ) )D)if (strcmp( s1, s2 ) )94调用strlen( “abcd0ef0g” )的返回值是(A)。A)4B)5C)8D)995若有以下语句,则正确的描述是(B)。char x = “12345”;chat y = 1, 2, 3, 4, 5 ;A)x数组和y数组的长度相同B)x数组长度大于y数组长度C)x数组长度小于y数组长度D)x数组等价于y数组96已知:char str120 = “abcde”, str220 = “xyz”; 则在程序中能够将字符串“books”赋给数组str1的正确语句是(B)。A)str1 = “books” ;B)strcpy( str1, str2 );C)str1 = str2;D)strcpy( str2, str1 );97将一个函数说明为static后,该函数将(B)。A)既能被同一源文件中的函数调用,也能被其他源文件中的函数调用B)只能被同一源文件中的函数调用,不能被其他源文件中的函数调用C)只能被其他源文件中的函数调用,不能被同一源文件中的函数调用D)既不能被同一源文件中的函数调用,也不能被其他源文件中的函数调用98如果在一个函数中的复合语句中定义了一个变量,则该变量(A)。A)只在该符合语句中有效B)在该函数中有效C)在本程序内有效D)为非法变量99以下不正确的说法是(D)。A)在不同函数中可以使用相同名字的变量B)形式参数是局部变量C)在函数内定义的变量值在本函数内有效D)在函数内的复合语句中定义的变量在本函数内有效100凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(A)。A)自动(auto)B)静态(static)C)外部(extern)D)寄存器(register)101已知函数abc的定义为void abc() 则函数定义中void的含义是(A)。A)执行函数abc后,函数没有返回值B)执行函数abc后,函数不再返回C)执行函数abc后,可以返回任何类型D)以上三个答案全是错误的102已知:“int *p()”,p是(C)。A)指向int型的值针变量B)int型的指针数组C)一个函数,该函数的返回值是指向int型的指针变量D)一个指向函数的指针变量,该函数的返回值是int型103C语言中的函数(D)。A)可以嵌套定义B)不可以嵌套调用C)可以嵌套调用,但不能递归调用D)嵌套调用和递归调用均可104C语言中函数返回值的类型是由(D)决定的。A)return语句中的表达式类型B)调用该函数的主调函数类型C)调用函数是临时D)定义函数是所指定的函数类型105C语言规定,调用函数时,实参变量和形参变量之间的数据传递方式时(B)。A)地址传递B)值传递C)由实参传给形参,并由形参传回来给实参D)由用户指定传递方式106以下说法正确的是(C)。A)定义函数时,形参的类型说明可以放在函数体内B)return后边的值不能为表达是C)如果函数值的类型与返回值的类型不一致,以函数值的类型为主D)如果形参与实参类型不一致,以实参类型为主107C语言规定,简单变两做实参时,它和对应形参之间的数据传递方式是(B)。A)地址传递B)单向值传递C)由实参传给形参,再由形参传给实参D)由用户指定传递方式108C语言允许函数类型缺省定义,此时该函数值隐含的类型是(B)。A)float型B)int型C)long型D)double型109下面个选项中,均是C语言关键字的是 (B) 。A)auto, enum, includeB)switch, typedef, continueC)signed, union, scanf D)if, struct, type110下列不属于C语言关键字的是 (D) 。A)defaultB)registerC)enumD)external二、填空题(1) d = 1(2) k+(3) k=n1. 有以下程序段:s = 1.0;for ( k=1; k0(3)m = m/102. 下面程序的功能是输出1到100之间每位数的乘积大于每位数的和的数。例如数字26,数位上数字的乘积12大与数字之和8。void main( void )int n, k=1, s=0, m;for ( n=1; ns ) printf( “%d”, n );(1)m = n(2)r != 0(3)return( n )3. 下面程序的功能是用辗转相除法求两个正整数m和n的最大公约数。hcf( int m, int n )int r;if ( mn )r = m; (1) ;n = r;r = m%n;whule( (2) )m = n;n = r;r = m%n; (3) ; (1)s(2)0(3)fun( k )4. 下面程序的功能是计算。long fun( int n )int i;long s;for ( i=1; i=n; i+ )s *= i;return ( (1) );void main( void )int k, n;long s;scanf( “%d”, &n );s = (2) ;for ( k=0; k=n; k+ )s += (3) ;printf ( “%ldn”, s;(1)last*n%1000(2)x != min-x(3)flag = 0;5. 下面程序的功能是由键盘输入n,求满足下述条件的x,y:nx和ny的末3位数字相同,且xy, x、y、n均为自然数,并使x+y为最小。#include pow3( int n, int x )int i, last;for ( last=1,i=1; i=x; i+ )last = (1) ;return(last);void main( void )int x, n, min, flag=1;scanf();for ( min=2; flag; min+ )for ( x=1; xmin&flag; x+ )if ( (2) & pow3(n,x)=pow3(n, min-x)printf( “x=%d,y=%dn”, x, min-x ); (3) ;(1)prt( c, n-1 )(2)prt( , n-i )(3)prt( *, i )6. 输入n值,输出高度为n的等边三角形。例如当n=4时的图形如下:* * * * * * * * * * * * *#include void prt( char c, int n )if ( n0 )printf( “&c”, c ); (1) ;void main( void )int i, n;scanf( “%d”, &n );for ( i=1; i=n; i+) (2) ; (3) ;printf( “n” )(1)st(2)s+(3)t-7. 下面程序的功能是数组元素中值的逆转。#include void main( void )int i,n=10, a10=1,2,3,4,5,6,7,8,9,10;invert( a, n-1 );for ( i=0; i10; i+ )printf( “%4d”,ai );printf( “n” );void invert( int *s, int num )int *t, k;t = s+num;while( (1) )k = *s;*s = *t;*t = k (2) ; (3) ;(1)struct student(2)strcmp( stui.name, str) = 0(3)break8. 下面程序的功能是按学生的姓名查询其成绩排名和平均成绩。查询时可连续进行, 直到输入“0”时才结束。#include #include #define NUM 4struct student int ranl;char *name;float score; (1) stu = 3, “liming”, 89.3, 4, “zhanghua”, 78.2, 1, “anli”, 95.1, 2, “wangqi”, 90.6 ;void main( void )char str10;int i;do printf( “Enter a name:” );scanf( “%s”, str );for ( i=0; i=NUM ) printf( “Not Found!n” ); while ( strcmp(str,“0”)!=0 );(1)p+n(2)gets( p-name )(3)p+n9. 下面程序的功能是从终端上输入5个人的年龄、性别和姓名,然后输出。#include struct man char name20;unsigned int age;char sex7;void main( void )struct man person5;data_in( person, 5 );data_out( person, 5 );void data_in( struct man *p, int n )struct man *q= (1) ;for ( ; page, p-sex ); (2) ;void data_out( struct man *p, int n )struct man *q= (3) ;for ( ; pname, p-age, p-sex );(1)head(2)p(3)p = head10. 下面程序的功能是从键盘输入一个字符串,然后反序输出该字符串。#include struct node chat data;struct node *link;void main( void)char ch;struct node *p;head = NULL;while ( ch=getchar()!= n )p = ( struct node *)malloc( sizeof(struct node) );p-data = ch;p-link = (1) ;head = (2) ; (3) ;while( p!=NULL )printf( “%c”, p-data );p = p-next;(1)(struct student *)(2)tail = tail-next(3)head11. 下面函数的功能是创建一个带有头结点的链表,将头结点返回给主调函数。链表用于储存学生的学号和成绩。新产生的结点总是位于链表的尾部。#include#define LEN sizeof(struct student) struct student long num;int score;struct student *next;struct student *create( void )struct student *head=NULL, *tail;long num;int a;tail = ( (1) )malloc( LEN );do scanf( “%ld,%d”, &num, &a );if ( num!=0 )if ( head=NULL ) head = tail;else (2) ;tail-num = num; tial-score = a;tail-next = ( struct student *)malloc( LEN );else tail-next = NULL; while( num!=0 ); return ( (3) );(1)(struct student *)(2)(struct student *)(3)return( head )12. 下面create函数的功能是建立一个带有头结点的单项链表,新产生的结点总是插入在链表的末尾。单项链表的头指针作为函数的返回值。#include#define LEN sizeof(struct student) struct student long num;int score;struct student *next;struct student *create( void )struct student *head=NULL, *tail;long num;int a;tail = ( (1) )malloc( LEN );do scanf( “%ld,%d”, &num, &a );if ( num!=0 )if ( head=NULL ) head = tail;else (2) ;tail-num = num; tial-score = a;tail-next = ( struct student *)malloc( LEN );else tail-next = NULL; while( num!=0 ); (3) ;(1)FILE(2)!feof( fp )13. 下面程序的功能是统计文件中字符的个数。#include void main( void )long num=0; (1) *fp;if ( fp = fopen( “fname.dat”, “r” ) = NULL )printf( “Cannt open the file!” );exit( 0 );while ( (2) )fgetc( fp );num+;printf( “num=%dn”, num );fclose( fp );(1)“second.txt”(2)fclose( fp )14. 下面程序的功能是把从键盘输入的文件(用作为文件结束标志)复制到一个名为second.txt的新文件中。#include FILE *fp;
展开阅读全文