2011年3月国家计算机二级C语言机试100题
- 格式:doc
- 大小:1.12 MB
- 文档页数:394
一、单项选择题1.下面不属于C语言的数据类型是【】。
A) 整型B) 实型C) 逻辑型D) 双精度实型分析:和其它高级语言相比,C语言中没有逻辑型数据,也没有逻辑型变量。
本题正确答案为C。
2.C语言中,下列属于构造类型的是【】。
A) 整型B) 实型C) 指针类型D) 结构体类型分析:C语言中构造类型的数据有三种:数组、结构体和共用体,数组是同类型数据的集合,结构体是不同类型的数据集合。
本题正确答案为D。
3.下列字符串不符合标识符规定的是【】。
A) SUM B) sum C) 3cd D) end分析:标识符规定只能由26个英文字母(大小写均可),数字0~9和下划线组成,且不能以数字开头,题中的3cd不符合规定。
本题正确答案为C。
4.下面能正确表示八进制数的是【】。
A) 0x16 B) 029 C) -114 D) 033分析:选项A)以0x开头是十六进制数,选项B)虽然是0开头,但出现了数字9,选项C)是十进制数。
本题正确答案为D。
5.下面四个选项中,均是合法实数的选项是【】。
A) 2e-4.2 B)-0.50 C) 0.2e-.5 D)-e5分析:实数有两种表示形式:小数形式和指数形式,小数形式必须有小数点,指数形式中,字母e之前必须有数字,e之后必须是整数。
选项A)中的"2e-4.2",选项C)中的"0.2e-.5",选项D)中的"-e5"均是不合法的。
本题正确答案为B。
6.C语言中,字符型数据在内存中存储形式是【】。
A) 原码B) 反码C) 补码D) ASCII码分析:C语言中int型数据是以补码形式存放的,字符型数据是以ASCII码形式存放的。
本题正确答案为D。
7.下列正确的字符型常量是【】。
A) "a" B) ′\\\\′ C) "\\r" D) 277分析:字符常量的定义是用单引号括起来的一个字符,A和C的定界符不对,D超过了char型数据的表示范围,′\\\\′是转义字符。
2011年计算机二级C语言编写程序题及答案解析精选【4.1】已知银行整存整取存款不同期限的月息利率分别为:0.315%期限一年0.330%期限二年月息利率=0.345%期限三年0.375%期限五年0.420%期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。
【4.2】输入年份year和月month,求该月有多少天。
判断是否为闰年,可用如下C语言表达式:year%4==0&&year0!=0||year@0==0。
若表达式成立(即表达式值为1),则year 为闰年;否则,表达式不成立(即值为0),year为平年。
【4.3】编写一个简单计算器程序,输入格式为:data1op data2。
其中data1和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、*、/。
【4.4】输入n值,输出如图所示矩形。
【4.5】输入n值,输出如图所示平行四边形。
【4.6】输入n值,输出如图所示高为n的等腰三角形。
【4.7】输入n值,输出如图所示高为n的等腰三角形。
【4.8】输入n值,输出如图所示高和上底均为n的等腰梯形。
【4.9】输入n值,输出如图所示高和上底均为n的等腰空心梯形。
【4.10】输入n值,输出如图所示边长为n的空心正六边型。
【4.11】输入n值,输出如图所示图形。
【4.12】输入n值,输出如图所示图形。
【4.13】输入n值,输出如图所示图形。
【4.14】输入n值,输出如图所示图形。
【4.15】输入n值,输出如图所示图形。
【4.16】输入n值,输出如图所示图形。
(例为n=6时)【4.17】编写程序,输出如图所示sin(x)函数0到2π的图形。
【4.18】编写程序,在屏幕上输出一个由*号围成的空心圆。
【4.19】编写程序,在屏幕上绘制如图余弦曲线和直线。
若屏幕的横向为x轴,纵向为y 轴,在屏幕上显示0~360度的cos(x)曲线与直线x=f(y)=45*(y-1)+31的迭加图形。
1程序填空给定程序中,函数fun的功能是:有N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边值为0。
第1处for(i=0;i<N;i++)第2处t[i][j+m]=t[i][j];第3处for(j=0;j<m;j++)2程序修改给定程序MODI1.C是函数fun的功能是:计算并输出high以内最大的10个素数之和。
high的值由主函数传给fun函数。
int fun(int high){ int sum=0,n=0,j,yes;/*******found******/while((2<=high)&&(n<10)){ yes=1;for(j=2;j<=high/2;j++)if(high%j==0){/*******found******/yes=0;break;}if(yes){sum+=high;n++;}}return sum;}3程序设计编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。
xn+1=cos(xn)迭代步骤如下:1. 取x1初值为0.02. x0=x1,把x1的值赋给x03. x1=cos(x0),求出一个新的x14. 若x0-x1的绝对值小于0.000001执行步骤(5)否则执行步骤(2)5. 所求x1就是方程cos(x)-x=0的一个实根作为函数值返回。
程序将输出结果Root=0.739058。
float fun(){float x0,x1=0.0;do {x0=x1;x1=cos(x0);}while(fabs(x0-x1)>0.000001);return x1;}第64套1程序填空给定程序中,函数fun的功能是:将a所指3×5矩阵中第k 列的元素左移到第0列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。
第1处for(p=1;p<=k;p++)第2处for(j=0;j<N-1;j++)a[i][j]=a[i][j+1];第3处a[i][N-1]=temp;2程序修改给定程序MODI1.C是函数fun的功能是:根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示规律的数据,由main函数输出。
2011年计算机等级二级C语言章节习题及答案(2)2011年计算机等级二级C语言章节习题及答案(2)第3章数据类型运算符与表达式一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。
)3.1 C语言中最简单的数据类型包括A)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)字符型、实型、逻辑型正确答案: B3.2 C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符A)必须为字母B)必须为下划线C)必须为字母或下划线D)可以是字母,数字和下划线中任一字符正确答案: C3.3 下列可用于C语言用户标识符的一组是A)void, define, WORDB)a3_b3, _123,CarC)For, -abc, IF CaseD)2a, DO, sizeof正确答案: B3.4 下面四个选项中,均是不正确的8进制数或16进制数的选项是A)016 0x8f 018B)0abc 017 0xaC)010 -0x11 0x16D)0a12 7ff -123正确答案: D3.5 下列数据中,不合法的C语言实型数据的是A)0.123B)123e3C)2.1e3.5D)789.0正确答案: C3.6 在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是A)a=20000+20000;B)a=4000*10;C)a=30000+10000;D)a=4000L*10L;3.7 若有说明语句:char c='\72';则变量cA)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法,c的值不确定正确答案: A3.8 有字符串如下,"\n\\\407as1\"\xabc",则字符串的长度为A)6B)7C)8D)9正确答案: D3.9 C语言中运算对象必须是整型的运算符是A)%=B)/C)=D)<=正确答案: A3.10 若变量已正确定义并赋值,以下符合C语言语法的表达式是A)a:=b+1B)a=b=c+2C)int 18.5%3D)a=a+7=c+b正确答案: B3.11 若变量a,i已正确定义,且i已正确赋值,合法的语句是A)a= =1B)++i;C)a=a++=5;D)a=int(i);正确答案: B3.12 若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是A)2.500000B)2.750000C)3.500000D)0.000000正确答案: A3.13 若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的正确排列次序是A)sizeof,&=,<<,^B)sizeof,<<,^,&=C)^,<<,sizeof,&=D)<<,^,&=,sizeof3.14 以下不正确的叙述是A)在C程序中,逗号运算符的优先级最低B)在C程序中,APH和aph是两个不同的变量C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值正确答案: D3.15 已知int i,a;执行语句i=(a=3,a++,- -a,a+4,a+5,++a);后,变量i的值为A)2B)3C)4D)5正确答案: C3.16 设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为A)intB)floatC)doubleD)不确定正确答案: C3.17 在C语言中,char型数据在内存中的存储形式是A)补码B)反码C)原码D)ASCII码正确答案: D3.18 字符型数据在机器中是用ASCII码表示的,字符’5’和’7’在机器中表示为A)10100011和01110111B)01000101和01100011C)00110101和00110111D)01100101和01100111正确答案: C3.19 不能进行++和- -运算的数据类型为A)指针B)整型C)长整型D)常量正确答案: D3.20 设有int x=11;则表达式(x++*1/3)的值是A)3B)4C)11D)12正确答案: A3.21 以下程序的输出结果是main(){ int a=21,b=11;printf("%d\n",- -a+b,- -b+a);}A)30B)31C)32D)33正确答案: A3.22 假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为A)17B)16C)15D)14正确答案: C3.23 已知int a=6; 则执行a+=a-=a*a;语句后,a的值为A)36B)0C)-24D)-60正确答案: D3.24 设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是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.0正确答案: B3.25 sizeof(float)是A)一个双精度型表达式B)一个整型表达式C)一种函数调用D)一个不合法的表达式正确答案: B3.26 在C语言中,int,char和short三种类型数据在内存中所占用的字节数A)由用户自己定义B)均为2个字节C)是任意的D)由所用机器的机器字长决定正确答案: D3.27 以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x÷y÷z的C 语言表达式是A)x/y*zB)x*(1/(y*z))C)x/y*1/zD)x/y/z正确答案: A3.28 下列关于复合语句和空语句的说法错误的是A)复合语句是由“{”开头,由“}”结尾的B)复合语句在语法上视为一条语句C)复合语句内,可以有执行语句,不可以有定义语句部分D)C程序中的所有语句都必须由一个分号作为结束正确答案: C3.29 下列关于字符串的说法中错误的是A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志B)′\0′作为标志占用存储空间,计入串的实际长度C)在表示字符串常量的时候不需要人为在其末尾加入′\0′D)在C语言中,字符串常量隐含处理成以′\0′结尾正确答案: B二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
国家计算机二级考试C语言100套上机题第一套1.下列给定程序中,函数fun的功能是计算如下公式直到,并且把计算结果作为函数值返回。
例如,若形参e的值为1e-3,则函数返回值为0.551690。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
(1)3.0或(double)3(2)>(3) (t+1)2.下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。
和值通过函数值返回。
例如,若n=5,则应输出8.391667。
请改正程序中的错误,使其得出正确的结果。
(1)double fun(int n)(2)s=s+(double)a/b;3.请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。
int fun (int a[ ][M]){int i,j,max=a[0][0];for(i=0;i<2;i++)for(j=0;j<m;j++)< bdsfid="77" p=""></m;j++)<> if(max<a[i][j])< bdsfid="79" p=""></a[i][j])<>max=a[i][j];return max;}第二套1.下列给定程序中,函数fun的功能是:计算如下公式前n项的和并作为函数值返回。
例如,当形参n的值为10时,函数返回值为9.612558。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
(1) 0(2) n(3) (t*t)2.下列给定程序中函数fun的功能是:统计substr所指的子符串在str所指的字符串中出现的次数。
例如,若字符串为aaas 1kaaas,子字符串为as,则应输出2。
请改正程序中的错误,使它能得出正确的结果。
2011年全国计算机等级二级C语言模拟试题及答案(1)一、填空题1、C语言中基本的数据类型有:__________ 、___________ 、___________ 。
2、C语言中普通整型变量的类型说明符为_____________ ,在内存中占___________ 字节,有符号普通整型的数据范围是____________ 。
3、整数-35在机内的补码表示为__________ 。
4、执行下列语句int a=8; a+=a-=a*a;后,a的值是_________________ 。
5、有如下语句:char A[ ]={ ” a I a student ”该;字符串的长度是 ____________ ,A[3]= _______________ 。
6符号” a” a'区别是_____________ 。
7、所谓指针”就是__________ 。
“ &运算符的作用是 _________ 。
“ *运算符的作用是 _________ 。
8、有如下输入语句:scanf(“ a=%d,b=%d,c=%d,&a,&b,&为使变量a的值为1,b的值为3, c的值为2,从键盘输入数据的正确形式应是_______________ 。
二、选择题1、设整型变量a为5,使b不为2的表达式是()。
A.b=a/2B.b=6-(--a)C.b=a%2D.b=a>3?2:12、为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else 总是与()组成配对关系。
A.缩排位置相同的ifB.在其之前未配对的ifC.在其之前未配对的最近的ifD.同一行上的if3、以下程序的输出结果是()int x=10,y=10;printf(“ %d n”,x,--y);A.10 10B.9 9C.9 10D.10 94、设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i个元素的地址为( )。
2009年3月全国计算机等级考试二级C语言笔试卷选择题(1)下列叙述中正确的是A)栈是“先进先出”的线性表B)队列是“先进先出”的线性表C)循环队列是非线性结构D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构(2)支持子程序调用的数据结构是A)栈B)树C)队列D)二叉树(3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A)10 B)8 C)6 D)4(4)下列排序方法中,最坏情况下比较次数最少的是A)冒泡排序B)简单选择排序C)直接插入排序D)堆排序(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。
下面属于应用软件的是A)编译软件B)操作系统C)教务管理系统D)汇编程序(6)下面叙述中错误的是A)软件测试的目的是发现错误并改正错误B)对被调试的程序进行“错误定位”是程序调试的必要步骤C)程序调试通常也称为DebugD)软件测试应严格执行测试计划,排除测试的随意性(7)耦合性和内聚性是对模块独立性度量的两个标准。
下列叙述中正确的是A)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度(8)数据库应用系统中的核心问题是A)数据库设计B)数据库系统设计C)数据库维护D)数据库管理员培训(9)有两个关系R,S如下:R SA B C A Ba 3 2 a 3b 0 1 b 0c 2 1 c 2由关系R通过运算得到关系S,则所使用的运算为A)选择B)投影C)插入D)连接(10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域(11)以下选项中合法的标识符是A)1-1 B)1—1 C)-11 D)1-- (12)若函数中有定义语句:int k;,则A)系统将自动给k赋初值0 B)这时k中值无定义C)系统将自动给k赋初值-1 D)这时k中无任何值(13)以下选项中,能用作数据常量的是A)o115 B)0118 C)1.5e1.5 D)115L(14)设有定义:int x=2; ,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x)D)2*x,x+=2 (15)程序段:int x=12; double y=3.141593; printf(“%d%8.6f”,x,y);的输出结果是A)123.141593 B)12 3.141593 C)12,3.141593 D)123.141593 (16)若有定义语句:double x,y,*px,*py,执行了px=&x, py=&y;之后,正确的输入语句是A)scanf(“%f%f”,x,y); B)scanf(“%f%f”,&x,&y);C)scanf(“%lf%le”,px,py); D)scanf (“%lf%lf”,x,y);(17)以下是if语句的基本形式:if (表达式)语句其中“表达式”A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式(18)有以下程序#include <stdio.h>main(){int x;scanf(“%d”,&x);if(x<=3); elseif(x!=10)printf(“%d\n”,x);}程序运行时,输入的值在哪个范围才会有输出结果A)不等于10的整数B)大于3且不等于10的整数C)大于3或等于10的整数D)小于3的整数(19)有以下程序#include<stdio.h>Main(){ int a=1,b=2,c=3,d=0;if(a= =1 &&b++= =2)if(b!=2 || c--!=3)printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);}程序运行后的输出结果是A)1,2,3 B)1,3,2 C)1,3,3 D)3,2,1(20)以下程序中的变量已正确定义for(i=0;i<4;i++,i++for(k=1;k<3;k++);printf(*”);程序段的输出结果是A)******** B)**** C)** D)*(21)有以下程序#include<stdio.h>main(){char *s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);}注意,字母A的ASCII码值为65。
2011年二级C语言100题1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
答案:int fun(int score[],int m,int below[]){int i,k=0,aver=0;for(i=0;i<m;i++)aver+=score[i];aver/=m;for(i=0;i<m;i++)if(score[i]<aver){below[k]=score[i];k++;}return k;}2: 第2题请编写函数fun,它的功能是:求出1到100之内能被7或者11整除,但不能同时北7和11整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数。
答案:void fun(int *a, int *n){int i,j=0;for(i=2;i<1000;i++)if ((i%7==0 || i%11==0) && i%77!=0)a[j++]=i;*n=j;}3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
答案:void fun(int x, int pp[ ], int *n){int i=1,j=0;k=0,*t=pp;for(i=0;i<=x;i++)if(i%2!=0){t[j]=I;j++;}for(i=0;i<j;i++)if(x%t[i]==0){pp[k]=t[i];k++;}*n=k;}4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
本文由binggedbgo110贡献 doc文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
2011 年全国计算机等级二级 C 语言模拟试题及答案(3) 语言模拟试题及答案( ) 一.单项选择题 1. 设 int x=1,y=1;表达式(!x++ || y--)的值是 A.0 B. 1 C. 2 D.-1 2.main( ) { int n; ( n=6*4,n+6),n*2; printf(“n=%d\n”,n); } 此程序的输出结果是. A.30 B. 24 C. 60 D. 48 3.若有如下定义,则是对数组元素的正确的引用。
int a[10] , *p ; p=a ; p=a ; p=a ; p=a ; A. *&a[10] B. a[11] C. *(p+10) D. *p 4.设整型变量 n 的值为 2,执行语句“n+=n-=n*n;”后,n 的值是 A. 0 B. 4 C. - 4 D. 2 5.以下不能正确定义二维数组的语句是 A . int a[2][2]={{1},{2}}; B. int a[][2]={1,2,3,4}; C. int a[2][2]={{1},2,3}; D. int a[2][]={{1,2},{3,4}}; 6. 程序段的功能是将变量 u 、s 中的最大值赋给变量 t 。
A. if(u>s) t=u;t=s; B. t=u; if(t ) t=s; C. if(u>s) t=s;else t=u; D . t=s; if(u ) t=u; 7.下列程序段的输出结果是。
void main() { int k; for (k=1;k<5;k++〉 { if(k%2!=0) printf("#"); else printf(“*”) ; } } A. #*#* B . *#*# C. ## D. 以上都不对 8.设变量定义为 int a[3]={1,4,7},*p=&a[2], 则*p 的值是 (35) 。
2011年九月及三月计算机国二c语言个别考题分析九月:(1)下列叙述中正确的是( )。
A)算法就是程序B)设计算法时只需要考虑数据结构的设计C)设计算法时只需要考虑结果的可靠性D)以上三种说法都不对答:计算机算法是以一步接一步的方式来详细描述计算机如何将输入转化为所要求的输出的过程,或者说,算法是对计算机上执行的计算过程的具体描述。
一个算法必须具备以下性质:(1)算法首先必须是正确的,即对于任意的一组输入,包括合理的输入与不合理的输入,总能得到预期的输出。
如果一个算法只是对合理的输入才能得到预期的输出,而在异常情况下却无法预料输出的结果,那么它就不是正确的。
(2)算法必须是由一系列具体步骤组成的,并且每一步都能够被计算机所理解和执行,而不是抽象和模糊的概念。
(3)每个步骤都有确定的执行顺序,即上一步在哪里,下一步是什么,都必须明确,无二义性。
(4)无论算法有多么复杂,都必须在有限步之后结束并终止运行,即算法的步骤必须是有限的。
在任何情况下,算法都不能陷入无限循环中。
一个问题的解决方案可以有多种表达方式,但只有满足以上4个条件的解才能称之为算法。
(4)软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。
下面属于应用软件的是( )。
A)学生成绩管理系统B)C语言编译程序C)UNIX操作系统D)数据库管理系统答:1.用户直接使用的软件通常为应用软件, 而应用软件通常是通过系统软件来指挥计算机的硬件完成其功能的。
最重要的系统软件是操作系统(Operation System,OS),它完成指挥计算机运行的各个细节, 亦即, 操作系统是计算机系统中用于指挥和管理其自身的软件。
实质上, 使用计算机时, 我们并不直接使用计算机的硬件, 与我们直接打交道的是应用软件。
我们使用应用软件, 由应用软件在“幕后”与操作系统打交道, 再由操作系统指挥计算机完成相应的工作2.系统软件---操作系统操作系统(Operating System)是最基本、最重要的系统软件。
1 上 机 题 库 第一部分 填空题 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ 注意:源程序存放在考生文件夹下的BLANK1.C中。 1. 不得增行或删行, 也不得更改程序的结构! 2. 请在程序下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ 1. 给定程序中,函数FUN的功能是:计算出带有头接点的单向链表中各结点数据域之和作为函数值返回。 #include #include #define N 8 typedef struct list { int data; struct list *next; } SLIST; SLIST *creatlist(int *); void outlist(SLIST *); int fun( SLIST *h) { SLIST *p; int s=0; p=h->next; while(p) {
/**********************************found*********************************/
s+= p->___1___; data /**********************************found*********************************/ p=p->___2___; next } return s; 2
} main( ) { SLIST *head; int a[N]={12,87,45,32,91,16,20,48}; head=creatlist(a); outlist(head);
/**********************************found*********************************/
printf("\nsum=%d\n", fun(___3___)); head }
SLIST *creatlist(int a[ ]) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; i{ q=(SLIST *)malloc(sizeof(SLIST)); q->data=a[i]; p->next=q; p=q; } p->next=0; return h; } void outlist(SLIST *h) { SLIST *p; p=h->next; if (p==NULL) printf("The list is NULL!\n"); else { printf("\nHead "); do { printf("->%d", p->data); p=p->next; } while(p!=NULL); printf("->End\n"); } }
2. 给定程序中,函数FUN的功能是:求出形参SS所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中工有M个字符串,且串长#include #include #define M 5 #define N 20 void fun(char (*ss)[N]) { int i, j, k=0, n, m, len; 3
for(i=0; i{ len=strlen(ss[i]); if(i==0) n=len; if(len>n) {
/**********************************found*********************************/
n=len; k=___1___; i } } for(i=0; iif (i!=k) { m=n; len=strlen(ss[i]);
/**********************************found*********************************/
for(j=___2___; j>=0; j--) len ss[i][m--]=ss[i][j]; for(j=0; j/**********************************found*********************************/ ss[i][j]=____3____; '*' } } main( ) {char s[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"}; int i; printf("\nThe original strings are :\n"); for(i=0; iprintf("\n"); fun(ss); printf("\nThe result:\n"); for(i=0; i}
3. 人员记录由编号和出生年,月,日组成,N名人员的数据已在主函数中存入结构体数组std且编号唯一。函数fun 的功能是;找出指定编号人员的数据,作为函数值返回,有主函数输出,若指定编号不存在,返回数据中的编号为空串。 4
#include #include #define N 8 typedef struct { char num[10]; int year,month,day ; }STU;
/**********************************found*********************************/ ___1___fun(STU *std, char *num) STU { int i; STU a={"",9999,99,99}; for (i=0; i/**********************************found*********************************/ if( strcmp(____2_____,num)==0 ) std[i].num /**********************************found*********************************/ return (___3____); std[i] return a; } main( ) {STU std[N]={ {"111111",1984,2,15},{"222222",1983,9,21},{"333333",1984,9,1}, {"444444",1983,7,15},{"555555",1984,9,28},{"666666",1983,11,15}, {"777777",1983,6,22},{"888888",1984,8,19}}; STU p; char n[10]="666666"; p=fun(std,n); if(p.num[0]==0) printf("\nNot found !\n"); else { printf("\nSucceed !\n "); printf("%s %d-%d-%d\n",p.num,p.year,p.month,p.day); } }
4. 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递 5
增有序链接。函数fun 的功能:删除链表中数据域值相同的结点,使之保留一个。 #include #include #define N 8 typedef struct list { int data; struct list *next; } SLIST; void fun( SLIST *h) { SLIST *p, *q; p=h->next; if (p!=NULL) { q=p->next; while(q!=NULL) { if (p->data==q->data) { p->next=q->next;
/**********************************found*********************************/
free(___1___); q /**********************************found*********************************/ q=p->___2___; next } else { p=q; /**********************************found*********************************/ q=q->___3___; next } } } } SLIST *creatlist(int *a) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; i{ q=(SLIST *)malloc(sizeof(SLIST)); q->data=a[i]; p->next=q; p=q; } p->next=0;