最新二级C语言上机题库100题答案1.docx
《最新二级C语言上机题库100题答案1.docx》由会员分享,可在线阅读,更多相关《最新二级C语言上机题库100题答案1.docx(90页珍藏版)》请在冰豆网上搜索。
![最新二级C语言上机题库100题答案1.docx](https://file1.bdocx.com/fileroot1/2023-4/18/5e688eec-6ba9-4ec0-8444-5ba34d2ed2bb/5e688eec-6ba9-4ec0-8444-5ba34d2ed2bb1.gif)
最新二级C语言上机题库100题答案1
1填空:
【1】j=0
【2】*(pf+j)-32
【3】j++
改错:
(1)错误:
{if(*p<=*q)
正确:
{if(*p>=*q)
(2)错误:
k++
正确:
k++;
编程:
voidfun(inta,intb,long*c)
{
*c=(b%10)*1000+(b/10)*100+(a%1
}
2填空:
【1】disc<0
【2】(-b+sqrt(disc))/(2*a)
【3】(-b-sqrt(disc))/(2*a)
改错:
(1)错误:
intj=1;
正确:
doublej=1.0;
(2)错误:
y+=1/(i*i);
正确:
y+=j/(i*i);
编程:
voidfun(inttt[M][N],intpp[N])
{
inti,j,max;
for(j=0;j{
max=tt[0][j];
/*假设各列中的第一个元素最大*/
for(i=0;iif(tt[i][j]>max)
/*如果各列中的其他元素比最大值
还大,则将更大的元素看做当前该列中最
大的元素*/
max=tt[i][j];
pp[j]=max;
/*将各列的最大值依次放入pp数组中*/
}
}
3填空:
【1】n>0
【2】n%10+'0'
【3】str[i]=′\0′
改错:
(1)错误:
fun(intn);
正确:
fun(intn)
(2)错误:
if(n=1)
正确:
if(n==1)
编程:
intfun(char*s,intnum)
{chart;
inti,j;
for(i=1;i/*下标值从1开始,用循环依次取
得字符串中的字符*/
for(j=i+1;j/*将字符与其后的每个字符比较*/
if(s[i]>s[j])
/*如果后面字符的ASCII码值小于该
字符的ASCII码值*/
{t=s[i];
/*则交换这两个字符*/
s[i]=s[j];
s[j]=t;
}
}
4填空:
【1】xx[i]%10
【2】bb[n++]=xx[i]
【3】n
改错:
(1)错误:
intfun(intn)
正确:
doublefun(intn)
(2)错误:
result*=n++;
正确:
result*=n--;
编程:
doublefun(intn)
{doubles=0.0;
inti;
for(i=0;i/*从0~n中找到既能被5整除同时
又能被11整除的数,并将这些数求和*/
if(i%5==0&&i%11==0)
s=s+i;
s=sqrt(s);
/*对s求平方根*/
returns;
}
5填空:
【1】(-b+sqrt(disc))/(2*a)
【2】-b/(2*a)
【3】sqrt(fabs(disc))/(2*a)
改错:
(1)错误:
longk=1;
正确:
longk=0;
(2)错误:
while(num)
正确:
while(num);
编程:
intfun(intt)
{
inta=1,b=1,c=0,i;
/*a代表第n-2项,b代表第n-1项,
c代表第n项*/
/*如果求得的数c比指定比较的数小,
则计算下一个Fibonacci数,
对a,b重新置数*/
do
{
c=a+b;
a=b;
b=c;
}
while(c/*如果求得的数c比指定比较的数大时,
退出循环*/
c=a;
/*此时数c的前一个Fibonacci数为
小于指定比较的数的最大的数*/
returnc;
}
6填空:
【1】inta[][N]
【2】s/(n*n)
【3】sqrt(f)
改错:
(1)错误:
voidfun(chars,chart[])
正确:
voidfun(char*s,chart[])
(2)错误:
if(i%2=0||s[i]%2!
=0)
正确:
if(i%2==0||s[i]%2!
=0)
编程:
longfun(intn)
{
inti;
longs=0;
for(i=2;i<=n-1;i++)
/*从2~n-1中找n的所有因子*/
if(n%i==0)
s+=i*i;
/*将所有因子求平方加*/
returns;
/*将平方和返回*/
}
7填空:
【1】j--
【2】*(p2+n)='\0'
【3】*p2
改错题
(1)错误:
k=n;
正确:
k=i;
(2)错误:
s[j]=i;
正确:
s[j++]=i;
编程题
fun(inta[][N],intn)
{
inti,j;
for(i=0;ifor(j=0;j<=i;j++)
a[i][j]=a[i][j]+n;
}
8.填空题
【1】*p
【2】bb[*p-'0']++
【3】num[j]=bb[i]
【解析】填空1:
通
改错题:
(1)错误:
for(i=0;i正确:
for(i=0;i<2;i++)
(2)错误:
k=m;
正确:
m=k;
编程题:
intfun(intscore[],intm,intup[])
{
inti,j=0;
floatav=0.0;
for(i=0;iav=av+score[i]/m;
/*求平均值*/
for(i=0;iif(score[i]>av)
/*如果分数高于平均分,则将此分数
放入up数组中*/
up[j++]=score[i];
returnj;
/*返回高于平均分的人数*/
}
9.填空题
【1】*p
【2】default:
b[10]++;
【3】p++;
.改错题
(1)错误:
ifhigh%j==0
正确:
if(high%j==0)
(2)错误:
if(yes==0)
正确:
if(yes
.编程题
voidfun(intx,intpp[],int*n)
{
inti,j=0;
for(i=2;i<=x;i=i+2)
/*i的初始值为2,步长为2,确保i
为偶数*/
if(x%i==0)
/*将能整除x的数存入数组pp中*/
pp[j++]=i;
*n=j;
/*传回满足条件的数的个数*/
}
10.填空题
【1】″%ld″,&n
【2】n=-n;
【3】″%ld″,n
.改错题
(1)错误:
intfun(chart[])
正确:
voidfun(chart[])
(2)错误:
t[j]=t[i++];
正确:
t[j]=t[i];
.编程题
voidfun(intm,intk,intxx[])
{
inti,j,n;
for(i=m+1,n=0;n/*找大于m的非素数,循环k次,
即找出紧靠m的k个非素数*/
for(j=2;j
/*判断一个数是否为素数*/
if(i%j==0)
{
xx[n++]=i;
/*如果不是素数,放入数组xx中*/
break;
/*并跳出本层循环,判断下一个数*/
}
}
11.填空题
【1】″%s″,str1
【2】%c
【3】str2
.改错题
(1)错误:
while(x[i]==0)
正确:
while(x[i]!
=0)
(2)错误:
sum=sum\c;
正确:
sum=sum/c;
.编程题
intfun(int*s,intt,int*k)
{
inti;
*k=0;
/*k所指的数是数组的下标值*/
for(i=0;iif(s[*k]>s[i])
*k=i;
/*找到数组的最小元素,把该元素
的下标赋给k所指的数*/
returns[*k];
/*返回数组的最小元素*/
}
12.填空题
【1】″%d″,&n
【2】str2[i]=str1[i];
【3】str2
.改错题
(1)错误:
if((s[i]>='A'&&s[i]<='Z')&&(s[i]>='a'&&s[i]<='z'))
正确:
if((s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z'))
(2)错误:
s[j]="\0";
正确:
s[j]='\0';
.编程题
intfun(inta[][N])
{
inti,j;
for(i=0;ifor(j=i;ja[i][j]=0;
/*将数组右上半三角元素中的值
全部置成0*/
}
13.填空题
【1】n/100%10
【2】″yes!
″
【3】″no!
″
.改错题
(1)错误:
for(j=0;j正确:
for(j=0;j(2)错误:
a[p]=t;
正确:
a[j]=t;
.编程题
intfun(intw[][N])
{
inti,j,k=0;
ints=0;
for(i=0;ifor(j=0;jif(i==0||i==N-1||j==||
j==N-1)
/*只要下标中有一个为0或N-1,
则它一定是周边元素*/
{s=s+w[i][j]*w[i][j];
/*将周边元素求平方和*/
}
returns;
/*返回周边元素的平方和*/
}
14.填空题
【1】xx[i]%10
【2】bb[n++]=xx[i]
【3】n
.改错题
(1)错误:
voidfun(charp)
正确:
voidfun(char*p)
(2)错误:
p=q+i;
正确:
q=p+i;
.编程题
doublefun(STREC*h)
{
doublemin=h->s;
while(h!
=NULL)
/*通过循环找到最低分数*/
{if(min>h->s)
min=h->s;
h=h->next;
}
returnmin;
}
15.填空题
【1】s[i]>=′0′&&s[i]<=′9′
【2】s[i]-′0′
【3】n
.改错题
(1)错误:
intave,t=0;
正确:
floatave,t=0.0;
(2)错误:
if(s[i]正确:
if(s[i]>ave)
(3)错误:
aver=ave;
正确:
*aver=ave
.编程题
char*fun(char*s,char*t)
{
inti,j;
for(i=0;s[i]!
='\0';i++);
/*求字符串的长度*/
for(j=0;t[j]!
='\0';j++);
if(i<=j)
/*比较两个字符串的长度*/
returns;
/*函数返回较短的字符串,若两个字
符串长度相等,则返回第1个字符串*/
else
returnt;
}
16.填空题
【1】i<*num
【2】n++
【3】*num=n
【解析】填空1
.改错题
(1)错误:
intfun(intm)
正确:
doublefun(intm)
(2)错误:
for(i=1;i正确:
for(i=2;i<=m;i++)
.编程题
voidfun(int*a,int*n)
{
inti,j=0;
for(i=1;i<=1000;i++)
/*求1到1000之内能被5或13整除、
但不能同时被5和13整除的所有整数,
并放入数组a中*/
if((i%5==0||i%13==0)&&
i%65!
=0)
a[j++]=i;
*n=j;
/*传回满足条件的数的个数*/
}
17.填空题
【1】bb[i]=0
【2】bb[5]++
【3】p++;
.改错题
(1)错误:
while(k>=2)&&(mc<6)
正确:
while((k>=2)&&(mc<6))
(2)错误:
if((k%7=0)||(k%11=0))
正确:
if((k%7==0)||(k%11==0))
(3)错误:
m=k;
正确:
m=m+k;
.编程题
voidfun(char*ss)
{
inti;
for(i=0;ss[i]!
='\0';i++)
/*将ss所指字符串中所有下标
为偶数位置的字母转换为小写*/
if(i%2==0&&ss[i]>='A'&&
ss[i]<='Z')
ss[i]=ss[i]+32;
}
18.填空题
【1】alf[i]=0
【2】*p+=32
【3】p++
.改错题
(1)错误:
intfun(longs,long*t)
正确:
voidfun(longs,long*t)
(2)错误:
s=s%100;
正确:
s=s/100;
.编程题
fun(inta[][M])
{
inti,j,min=a[0][0];
for(i=0;i<4;i++)
for(j=0;jif(min>a[i][j])
min=a[i][j];
/*求出二维数组的最小值*/
returnmin;
}
19.填空题
【1】sum+=x[i]
【2】avg*1000
【3】(avg+5)/
.改错题
(1)错误:
for(i=0;j<3;j++)
正确:
for(j=0;j<3;j++)
(2)错误:
mul=mul*a[i][j];
正确:
mul=mul*a[i][i];
.编程题
intfun(STREC*a,STREC*b)
{
inti,j=0,min=a[0].s;
for(i=0;iif(min>a[i].s)
min=a[i].s;
/*找出最小值*/
for(i=0;iif(min==a[i].s)
b[j++]=a[i];
/*找出成绩与min相等的学生的记录,
存入结构体b中*/
returnj;
/*返回最低成绩的学生人数*/
}
20.填空题
【1】*(p1+i)
【2】*p2
【3】*p2++
.改错题
(1)错误:
charfun(chartt[])
正确:
char*fun(chartt[])
(2)错误:
if((tt[i]>='A')&&(tt[i]<='Z'))
正确:
if((tt[i]>='a')&&(tt[i]<='z'))
.编程题
voidfun(int*w,intp,intn)
{
inti,j,t;
for(i=p;i<=n-1;i++)
/*循环右移n-p次*/
{t=w[n-1];
for(j=n-2;j>=0;j--)
/*实现循环右移*/
w[j+1]=w[j];
w[0]=t;
}
}
21.填空题
【1】--I
【2】s[i]-′0′
【3】t*10+k
.改错题
(1)错误:
if(d%2!
=0)
正确:
if(d%2==0)
(2)错误:
t=d*s1+t;
正确:
*t=d*s1+*t;
.编程题
intfun(STRECa[])
{
inti,j;
STRECt;
for(i=1;i/*用冒泡法进行排序,进行N-1次比较*/
for(j=0;j/*在每一次比较中要进行N-1次两两
比较*/
if(a[j].s>a[j+1].s)
/*按分数的高低排列学生的记录,低分
在前*/
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
22.填空题
【1】inta[][N],intb[],intn
【2】b[i]【3】b[i]
.改错题
(1)错误:
for(k=4;k正确:
for(k=4;k<=n;k++)
(2)错误:
s2=s;
正确:
s2=s;}
.编程题
voidfun(intm,int*k,intxx[])
{
inti,j,t,n=0;
for(i=2;i/*找出大于1小于整数m的素数*/
{
t=1;
for(j=2;j
if(i%j==0)
{
t=0;
break;
}
if(t==1)
xx[n++]=i;
}
*k=n;
/*返回素数的个数*/
}
23.填空题
【1】i==0||i==n-1||j==0||j==n-1
【2】4*n-4
【3】s/k
.改错题
(1)错误:
*t=calloc(m,sizeof(STU));
正确:
t=calloc(m,sizeof(STU));
(2)错误:
for(i=j=0;i正确:
for(i=j=0;i(3)错误:
t[k].s=b[j].s;
正确:
t[k]=b[j];
.编程题
intfun(STREC*a,STREC*b,
intl,inth)
{
inti,j=0;
for(i=0;iif((a[i].s>=0&&a[i].s(a[i].s>h&&a[i].s<=100))
/*将分数低于l,高于h的学生记录
存于结构体数组b中*/
b[j++]=a[i];
returnj;
/*返回分数范围内的学生人数*/
}
24.填空题
【1】i=0
【2】j--
【3】b[j]=′\0′
.改错题
(1)错误:
for(k=m;k>0;k--)
正确:
for(k=m-1;k>=0;k--)
(2)错误:
pt=j;
正确:
pt-=j;
.编程题
STRECfun(STREC*a,intb)
{
inti;
STRECstr={"\0",-1};
for(i=0;iif(a[i].s==b)
str=a[i];
returnstr;
}
25.填空题
【1】i=1
【2】k%i==0&&i%2==0
【3】--j
.改错题
(1)错误:
if(strcmp((pstr+i),(pstr+j))<0)
正确:
if(strcmp(*(pstr+i),*(pstr+j))<0)
(2)错误:
*(pstr+j)=*p;
正确:
*(pstr+j)=p;
.编程题
voidfun(char*s,chart[])
{
inti,j=0,k=strlen(s);
for(i=0;it[j++]=s[i];
t[j]='\0';
}
26.填空题
【1】k=2
【2】s+=(2*k-1)/s1
【3】s
.改错题
(1)错误:
while((j>=0)||(ch>aa[j]))
正确:
while((j>=0)&&(ch>aa[j]))
(2)错误:
aa[j]=ch;
正确:
aa[j+1]=ch;
.编程题
doublefun(STREC*a,STREC*b,STREC*c,int*n,int*m)
{
inti;
doubleav=0.0;
*n=0;
*m=0;
for(i=0;iav=av+a[i].s;
av=av/N;
/*求平均值*/
for(i=0;iif(av<=a[i].s)
{
b[*n]=a[i];
/*将高于等于平均分的学生存入b
所指存储单元中,并统计人数*/
*n=*n+1;
}
else
{
c[*m]=a[i];
/*将低于平均分的学生存入c所指
存储单元中,并统计人数*/
*m=*m+1;
}
returnav;
/*返回平均分*/
}
27.填空题
【1】1
【2】k<=n
【3】s*=f/p
.改错题
(1)错误:
printf("%4d",xx[ij]);
正确:
printf("%4d",xx[i][j]);
(2)错误:
printf('\n');
正确:
printf("\n");
.编程题
doublefun(intn)
{
inti;
doubles=0.0;
for(i=1;i<=n;i++)
/*计算S=(1+1/2)+(1/3+1/4)+…+
(1/(2n-1)+1/2n)*/
s=s+(1.0/(2*i-1)+1.0/(2*i));
returns;
}
28.填空题
【1】intx[]
【2】sum+=x[i]
【3】sum/n
.改错题
(1)错误:
intA=1;
正确:
floatA=1;
(2)错误:
for(i=1;i<=n;i++)
正确:
for(i=2;i<=n;i++)
.编程题
doublefun(intm)
{
inti;
doubles=1.0;
for(i=1;i<=m;i++)
s=s-log(i);
/*计算s=1-ln
(1)-ln
(2)-ln(3)-
…-ln(m)*/
return(s*s);
/*对s求平方并返回*/
}
29.填空题
【1】sum*x+*p-'0'
【2】sum%y
【3】sum=sum/y
.改错题
(1)错误:
intfun(void)
正确:
voidfun(void)
(2)错误:
printf("%f",m[j]%5);
正确:
printf("%f",m[j]/5);
.编程题
voidfun(char*s,chart[])
{
inti,j=0;
for(i=0;s[i]!
='\0';i++)
if(i%2!
=0&&s[i]%2==0)
/*将s所指字符串中下标为奇数同时
ASCII值为偶数的字符