国家计算机二级考试 C语言 上机题无答案99道docx.docx
《国家计算机二级考试 C语言 上机题无答案99道docx.docx》由会员分享,可在线阅读,更多相关《国家计算机二级考试 C语言 上机题无答案99道docx.docx(34页珍藏版)》请在冰豆网上搜索。
![国家计算机二级考试 C语言 上机题无答案99道docx.docx](https://file1.bdocx.com/fileroot1/2023-1/31/d4154b63-e289-41db-a6fb-1f0182aa5397/d4154b63-e289-41db-a6fb-1f0182aa53971.gif)
国家计算机二级考试C语言上机题无答案99道docx
1调用fun函数建立班级通讯录,记录学生的编号姓名电话,人数和信息从键盘读入,信息写到myfile5.dat的二进制文件。
STYPEFILEfp
Fun函数先将字符串s中字符按正序存放到t串中,然后把s中字符逆序连到t后.for(i=0;it[2*sl]=0
将两个两位数的正整数a,b合并成一个整数放在c中,合并方式,将a的十位和个位数放在c的千位十位,b的十位个位放在c的百位个位,例a=45,b=12,则c=4152.
*c=(a/10)*100+(b/10)*100+(a%10)*10+(b%10);
2.从键盘输入文本到文件myfile4.txt中,-1为字符串输入结束标志,将内容显示在显示屏上,文件的读写由ReadText和WriteText实现。
*fwstrstr
从低位开始取长整型变量s中奇数位上的数构成新数放在t中,高在高位低在低位。
例s中数为7654321,t中为7531
voidfun(longs,long*t)
sl=sl*10;
将两个两位数的正整数a,b合并成一个整数放在c中,合并方式,将a的十位和个位数放在c的个位百位,b的十位个位放在c的千位十位,例a=45,b=12,则c=1524
*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);
3函数fun的功能是:
将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后读出显示在屏幕上
fpfclose(fp)fname
给定程序MODI1.C中fun函数的功能是:
将n个无序整数从小到大排序
for(i=j+1;ip=i;
将两个两位数的正整数a,b合并成一个整数放在c中,合并方式,将a的十位和个位数放在c的个位百位,b的十位个位放在c的十位千位,例a=45,b=12,则c=2514.
*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);
4调用函数fun将制定源文件中复制到指定的目标文件中,复制成功时返回值为1,失败返回0
“r”fsft
将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。
高位仍在高位,地位仍未地位。
if(d%2==0)s/=10
将两个两位数的正整数a,b合并成一个整数放在c中,合并方式,将a的十位和个位数放在c的十位千位,b的十位个位放在c的百位个位,例a=45,b=12,则c=5142
*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);
5函数fun的功能是:
把形参x的值放入一个新结点并插入到连表中,插入后各结点数据域的值仍保持递增有序。
xps
计算正整数num的各位上的数字之积。
例,若输入:
252,则输出应该是:
20.若输入:
202,则输出应该是:
0.
longk=1num/=10
编写一个函数:
计算n门课程的平均分,计算结果作为函数返回值。
例:
若成绩是:
90.5,72,80,61.5,55则函数的值为;71.80.
inti;floatave=0.0;for(i=0;i6一个单向链表,再main函数中多次调用fun函数,每调用一次fun函数,输出链表为不结点中的数据,并释放该结点,使链表缩短。
nextt->datat
函数fun的功能是:
将字符串的字符按逆序输出,但不改变字符串的内容。
例,若字符串为abcd,则应输出:
dcba.。
fun(char*a)
printf(“%c”,*a);
编写一个函数,其功能是:
比较两个字符串的长度,函数返回较长的字符串。
若两个字符串长度相同,则返回第一个字符串,例,输入beijingshanghai函数将返回shanghai.
inti;char*p=s,*q=t;for(i=0;*p&&*q;i++){p++;q++}if(*p==0&&*q==0)returns;if(*p)returns;elsereturnt;
7链表中的各结点按数据域递增有序链接。
函数fun的功能是:
删除链表中数据域之相同的结点,使之只保留一个。
qnextnext
函数fun的功能是:
用选择法对数组中的n个元素从小大的顺序进行排序。
p=j;p=i;
编写一个函数,它的功能是:
求1到m之间能被7或11整除的所有证书放在数组a中,通过n返回这些数的个数。
例,若传送给m的值为50,则程序输出:
711142122283335424449
intI;*n=0;for(i=7;i<=m;i++)
if((i%7==0)ll(i%11==0))a[(*n)++]=i;
8函数fun的功能是:
在单向链表中,查找数据域中为ch的结点。
找到后通过函数值返回该结点再练表中所处的顺序号;若不存在值为ch的结点,函数返回0值。
0nhead,ch
函数fun的功能是:
删除p所指字符串中的所有空白字符。
输入字符串时用“#”结束输入。
for(i=0,t=0;p[i];i++)
c[t]=0;
编写一个函数,它的功能是:
将ss所指字符串中所有下标为奇数位置上的字母转换为大写。
如,若输入“abc4EFg”则应输出“aBc4EFg”
inti;for(i=1;i{if(ss[i]>=‘a’&&ss[i]<=’z’)ss[i]-=32;}
9函数fun的功能是:
统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。
*nnexthead
例如,当字符串中的内容为:
“abcdabfabcdx”,t中的内容:
“ab”时,输出结果应是:
abcdx.当字符串中的内容为:
”abcdabfabcdx”,t中的内容为:
“abc”时,则程序输出未找到信息:
notbefound!
.
a=0;if(*r==*p)
将s所指字符串中除了下标为偶数,同时ASCII值也为偶数的字符外,其余的全部删除;串中剩余自负所形成的一个新串放在t所指的数组中。
inti,j=0;for(i=0;i10计算出带有头结点的单向连表中各结点数据域中值之合作为函数值返回。
datanexthead
当s所知字符串中的内容为:
“abcdabfab”,t1所指子串中的内容为:
“ab”,t2所指子串的内容为:
“99”时,结果在w所指的数组中的内容应为:
“99cd99f99”.
while(*r)*a=*r;a++;r++;
将s所指字符串中除了下标为偶数的字符删除,串中剩余字符形成的新串放在t所知数组中。
输“ABCDEFGHIJK“得”BDFHJ”。
inti,j=0;for(i=1;i11找出制定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。
STUstd[i].numstd[i]
从s所指字符串中,找出与t所指字符字符串相同的子串的个数作为函数值返回。
当s所指字符串中的内容:
“abcdabfab”,t所指字符字符串的内容为:
”ab“,则函数返回整数3.
r++;p++;if(*r==0)
将s所指字符串中ASCII值为偶数的字符删除,串中剩余自负所形成的一个新串放在t所指的数组中。
inti,j=0;for(i=0;i12找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。
std[i].yearstd[i]n
读入一个整数k(2<=k<=10000),打印他的所有质因子,例,若输入:
2310,则输出:
2,3,5,7,11.
IsPrime(intn)
if(!
(n%i))
找出成绩最高的学生记录,通过形参指针传回主函数(只有一个最高分),已给出首部。
inti,max=a[0].s,j=0;for(i=1;i13将该学生的各科成绩都乘以一个系数a。
STUscore[i]&std
求k!
(k<13),所求阶乘的值作为函数值返回,例,若k=10,则输出:
3628800.
If(k>0)elseif(k==0)
使数组左下三角元素中的值乘以n。
inti,j;for(i=0;i14将形参指针所知结构体数组中的三个元素按num成员进行升序排列
*stdPERSONstd
将m(1《=m《=10)个字符串连接起来,组成一个新串,放入pt所知存储区中。
intk,q,i;pt[i]=str[k][i];
使数组左下三角元素中的值全部置成0.
intI,j;for(i=0;ia[i][i]=0;
15将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输入。
*stdstd[i].agemax.name
实现两个整数的交换
voidfun(int*a,int*b)
求二维数组中最小元素。
并依次放入pp所指一维数组中。
inti,j,min,k;for(i=0;itt[j][i]){min=tt[j][i];k=j;}pp[i]=tt[k][i];}
16利用结构体变量存储一名学生信息,函数功能是输出此学生信息。
tttt.score[i]std
求出数组中最大数和次最大数,并把最大数和a[0]中的数对调,次最大数和a[1]中的数对调。
m=i;
if(a[k]>a[m])m=k;
编写函数unsignedfun(unsignedw),w是大于10的无符号整数,若w是n(n>=2)位的整数,函数求出w的低n-1位的数作为值返回。
例w为5923,则返回923;w为923,返回23.
if(w>10000)w%=10000;elseif(w>1000)w%=1000;elseif(w>100)w%=100;elseif(w>10)w%=10;returnw;
17对形参ss所指字符串数组中的M个字符串按长度由短到长排序。
Ss所指数组中共M个字符串,且串长i+1k=jt
判断ch中的字符是否与str所指串中某字符相同;相同什么也不做,不同则将其插在串的最后。
voidfun(char*str,charch)
if(*str!
=ch)
函数的功能是把s所指字符串中的内容逆置。
例。
输入:
abcdefg,则输出:
gfedcba.
charb[N];inti=0,j;memset(b,0,N);for(j=strlen(s)-1;j>=0;j--)b[i++]=s[j];strcpy(s,b)
18求形参ss所指字符串数组中最长字符串的长度,其余字符串左边用*补齐,使其与最长字符串等长,字符串数组中共M个字符串,串长klenss[i][j]
计算整数n的阶乘。
result*=(double)n—
resultresult;
从s所指字符串中删除给定字符,同一字母大小按不同字符处理。
char*p=s;inti=0;while(*p){if*p!
=()s[i++]=*p;p++;}s[i]=0;
19求形参ss所指字符串数组中最长字符串的长度,其余字符串右边用*补齐,使其与最长字符串等长,字符串数组中共M个字符串,串长ss[i]n+j1
将p所指字符串中每个单词的最后一个字母改成大写。
if(*p==’’)
*(p-1)=toupper(*(p-1));
对长度为7个字符的字符串,除首尾字符外,将其余5个字符按ASCII码降序排列.
charch;inti,j;for(i=1;i<6;i++)for(j=i+1;j<6;j++){if(*(s+i)<*(s+j)){ch=*(s+j);*(s+j)=*(s+i);*(s+i)=ch;}}
20求ss所知字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。
Ss所知字符串数组中共有M个字符串,且串长《N。
[N]len*n=len
根据形参m,计算:
t=1+1/2+1/3+1/4+…+1/m
t+=1./i;returnt;
编写函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
intcnt=0;char*p=str,*q;while(*p){q=strstr(p,substr);if(q==NULL)break;p=q+strlen(substr);cnt++;}returncnt;
21求ss所知字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。
Ss所知字符串数组中共有M个字符串,且串长《N
M将tt所指字符串中的小写母都改为对应的大写母,其它字符不变。
如,输入“Ab,cD“则输出”AB,CD
if((‘a’<=tt[i])
&&(tt[i]<=’z’))tt[i]-=32
将所有大于1小于整数m的非素数存入xx所知数组中,非素数的个数通过k传回。
若输入:
17,则输出:
46891012141516.
inti,cnt=0;for(i=2;iif(isp(i))xx[cnt++]=i;*k=cnt;
22将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。
j++s[i]=t1[i]j
用冒泡法对6个字符串按由小到大的顺序进行排序。
for(j=i+1;j<6;j++)
*(pstr+i)=*(pstr+j);
求出ss所指字符串中指定字符的个数,并返回此值。
例,输入:
123412132,输入字符1,则输出3.
intcnt=0;char*p=ss;whihle(*p){if(*p==c)cnt++;p++;}returncnt;
23在形参s所指字符串中的每个数字字符之后插入一个*号。
S所指字符串为:
def35adh3kjsdf7,执行结果为:
def3*5*adh3*kjsdf7*.
&&0s[j]
根据整型形参m,计算如下公式的值。
y=1+1/2*2+1/3*3+1/4*4+…..+1/m*m.
for(i=2;i<=m;i++)
y+=1.0/i/i;
实现B=A+A’,即把矩阵A加上A的转置,存放在矩阵B中。
计算结果在main函数中输出。
intc[3][3];inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++){c[i][j]=a[i][j];b[i][j]=a[i][j]+c[i][j];}
24统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。
例,形参s所指的字符串为:
abcdef35adgh3kjsdf7.输出结果4.
s[i]’9’*t=n
通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。
例a值8,b值3,程序运行后a值3,b值8.
t=*x;*x=y;
returnt;
求出1到1000之间能被7或11整除,但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。
inti,j*n=0;for(i=7;i<1000;i++)if(((i%7)==0ll(i%ll)==0)&&(i%77)!
=0)a[(*n)++]=i;
25把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:
字符串的长度大于等于2)。
例s所指字符串:
abcdefgh,执行结果:
ahcbedgf.
1s[k]c
求s=aa…..aa-…-aaa-aa-a(此处aa…..aa表示n个a,a和n的值在1至9之间)
longs=0,t=0;
t=t/10;
编写函数voidfun(char*tt,intpp[]),统计在tt所指字符串中’a’到’z’26个小写字母各自出现的次数,并依次放在pp所指的数组中。
char*p=tt;inti;for(i=0;i<26;i++)pp[*p-‘a']+=1;p++;
26对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。
例s所指字符串为baawrskjghzlicda,执行后p所指字符数组的字符串为aachjlsw.
t=ii0
用下面的公式求求∏的近似值,直到最后一项的绝对值小于指定的数(参数num)为止:
∏/4≈1-1/3+1/5-1/7+…例,程序运行,输入0。
0001,则输出3。
1414.
while((fabs(t))>=num)
t=s/n;
编写函数voidfun(chara[],charb[],intn),功能是删除一个字符串中指定下标的字符,其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。
strncpy(b,a,n);b[n]==0;strcat(b,a+n+1);
27在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则函数不做任何处理。
例s所指字符串为baacda,c中字符为a,执行后s所指字符串为baaaacdaa
00c
在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中,给定程序功能为计算数组元素中值为正数的平均值(不包括0)。
doublesum=0.;
sum/=c;
根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。
S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n),例若n值为11,函数值为1.833333
inti,j,t;floats=0;for(i=1;i<=n;i++){t=0;for(j=1;j<=i;j++)t+=j;s=s+1./t;}results;
28有N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边置为0.
i++mm
计算并输出high以内最大的10个素数之和。
high的值由主函数传给fun函数。
若high值为100,则函数值732.while((2<=high)&&(n<10))yes=0;break;
利用以下所示的简单迭代方法求方程:
cos(x)-x=0的一个实根。
Xn+1=cos(Xn)
floatxo,x1=o.o;do{xo=x1;x1=cos(xo);}while(fobs(xo-x1)>0.000001);returnx1;
29将N×N矩阵中元素的值按列右移一个位置,右边被移出矩阵的元素绕回左边。
NN-10
计算并输出下列级数的前N项之和Sn,直到S(n+1)大于q为止,q的值通过形参传入Sn=2/1+3/2+4/3+.+(N+1)/N
例q值为50.0,则函数值49.394948
s=s+(n+1.)/n;
returnt;
求Fibonacci数列中大于t的最小的一个数,结果由函数返回。
其中Fibonacci数列F(n)的定义为:
F(0)=0,F
(1)=1F(n)=F(n-1)+F(n-2)例,当t=1000时,函数值1597.
intf0=0,f1=1,f;do{f=f0+f1;f0=f1;f1=f;}while(f30有N*N矩阵,将矩阵的外围元素顺时针旋转。
0j--j
计算s=f(-n)+f(-n)+…+f(0)+f
(1)+f
(2)+…+f(n)的值。
doublef(doublex)
函数的功能是计算;√ln
(1)+ln
(2)+ln(3)+……+ln(m)(开根号)s作为函数值返回。
doubles=0.0;inti;for(i=1;i<=m;i++)s+=log(1.0*i);s=sqrt(s);returns;
31有N*N矩阵,以主对角线未对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0.
[N]t[i][j]t[j][i]
计算函数F(x,y,z)=(x+y)/(x-y)/(z+y)/(z-y)的值。
X不等于y,z不等于y
#defineFU(m,n)((m)/(n))
return(value)
将字符串中的前导*号全部删除,中间和尾部的*号不删除。
intj=0;char*p=a;while(*p==‘*’)p++;while(*p){a[j++]=*p;p++;}a[j]=0;
32将N*N矩阵主对角线元素中的值与反向对角线对应位置上元素中的值进行交换
t[][N]i=0;i利用折半查找算法查找整数m在数组中的位置。
若找到,返回其下标值;反之,返回-1.
fun(inta[],intm)把void删除
elseif(m>a[mid])
除了尾部的*号之外,将字符串中其他*号全部删除。
形参p以指向字符串中最后一char*q=a;intj=0;while(*q&&q
33将N*N矩阵的主对角线元素与反向对角线元素之和,并作为函数值返回。
sum=0t[i][j]1
用二分法求方程2x3-4x2+3x+6=0的一个根,并要求绝对误差不超过0.001.
doublerwhile(fabs(m-n)>0.001)
除了字符串前导和尾部的*号之外,将字符串中其他*号全部删除。
形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。
intj=0;char*q=a;while(*q&&q=‘*’a[j++]=*h;h++)}while(*P)a[j++]=*p++;a[j]=0;
34把形参a所指数组中的奇数按原顺序依次存放到a[0],a[1],a[2]……中,把偶数删除,奇数个数通过函数值返回。
1i++j
求出两个非零正整数的最大公约数,并返回函数值
t=a;a=b;b=t;return(b)
编写函数,删除字符串中所有的*号。
intj=0;char*p=a;while(*p){if(*p!
=‘*’)a[j++]=*p;p++;}a[j]=0;
35把形参a所指数组中的奇数按原顺序依次存放到a[0],a[1],a[2]……中,把奇数删除,偶数个数通过函数值返回
a[i]%2a[j]j
函数功能是:
按以下递归公式求函数值
fun(n)={10(n=1)
fun