二级C语言上机100题库.docx
《二级C语言上机100题库.docx》由会员分享,可在线阅读,更多相关《二级C语言上机100题库.docx(153页珍藏版)》请在冰豆网上搜索。
![二级C语言上机100题库.docx](https://file1.bdocx.com/fileroot1/2023-1/7/4e03e72d-87b9-484d-9bf2-dc72a078f319/4e03e72d-87b9-484d-9bf2-dc72a078f3191.gif)
二级C语言上机100题库
第1题
填空题
给定程序中,函数fun的功能是:
将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。
例如,输入一个数:
27638496,新的数:
为739。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1。
C中。
不得增行或删行,也不得更改程序的结构!
答案:
/**********found**********/
{t=*n%10;
/**********found**********/
if(t%2!
=0)
{x=x+t*i;i=i*10;}
*n=*n/10;
}
/**********found**********/
*n=x;
改错题
给定程序MODI1。
C中函数fun的功能是:
计算n!
。
例如,给n输入5,则输出120。
000000。
请改正程序中的错误,使程序能输出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程
答案:
/************found************/
if(n==0)
return1.0;
while(n>1&&n<170)
/************found************/
result*=n--;
程序编写
请编写一个函数fun,它的功能是:
将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
例如,若输入字符串“-1234”,则函数把它转换为整数值-1234;函数fun中给出的语句仅供参考。
注意:
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
longfun(char*p)
{
/*以下代码仅供参考*/
inti,len,t;/*len为串长,t为正负标识*/
longx=0;
len=strlen(p);
if(p[0]=='-')
{t=-1;len--;p++;}
elset=1;
/*以下完成数字字符串转换为一个数字*/
while(*p)x=x*10-48+(*p++);
returnx*t;
}
第3题
填空题
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
所有学生数据以二进制方式输出的文件中。
函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1。
C中。
不得增行或删行,也不得更改程序的结构!
/**********found**********/
fp=fopen(filename,"rb+");
/**********found**********/
fseek(fp,-1L*sizeof(STU),SEEK_END);
/**********found**********/
fwrite(&n,sizeof(STU),1,fp);
fclose(fp);
改错题
给定程序MODI1。
C中的函数CreatLink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。
请改正函数CreatLink中指定部位的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构
/**********found***********/
p=(NODE*)malloc(sizeof(NODE));
h=p;
p->next=NULL;
for(i=1;i<=n;i++)
{s=(NODE*)malloc(sizeof(NODE));
s->data=rand()%m;s->next=p->next;
p->next=s;p=p->next;
}
/**********found***********/
returnh;
程序编写
请编写函数fun,函数的功能是:
统计一行字符创中单词的个数,作为函数值返回。
一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。
注意:
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
intfun(char*s)
{
intk=1;
while(*s){
if(*s=='')k++;
s++;
}
returnk;
}
第4题
填空题
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
所有学生数据以二进制方式输出的文件中。
函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1。
C中。
不得增行或删行,也不得更改程序的结构!
/**********found**********/
fp=fopen(filename,"rb");
fread(s,sizeof(STU),N,fp);
fclose(fp);
for(i=0;ifor(j=i+1;j/**********found**********/
if(s[i].sno>s[j].sno)
{t=s[i];s[i]=s[j];s[j]=t;}
fp=fopen(filename,"wb");
/**********found**********/
fwrite(s,sizeof(STU),N,fp);
改错题
给定程序MODI1。
C中函数fun的功能是:
在字符串繁荣最前端加入n个*号,形成新串。
并覆盖原串。
注意:
字符串的长度最长允许为79。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
/**********found***********/
p=s;
for(i=0;ido
{a[i]=*p;
i++;
}
/**********found***********/
while(*p++);
程序编写
请编写函数fun,函数的功能是:
统计各年龄段的人数。
N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[2]中,其余依次类推,把100岁(含100)以上年龄的人数都放在d[1]中。
结果在主函数中输出。
注意:
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
voidfun(int*a,int*b)
{
inti,j;
for(i=0;ifor(i=0;ij=a[i]/10;
if(j>10)b[M-1]++;elseb[j]++;
}
}
第5题
填空题
给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个的读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意源程序存放在考生文件夹下的BLANK1。
C中。
不得增行或删行,也不得更改程序的结构!
/**********found**********/
FILE*fp;
charstr[100],str1[100],str2[100];
inta1;doublef1;
fp=fopen("file1.txt","w");
fprintf(fp,"%s%d%f\n",s,a,f);
/**********found**********/
fclose(fp);
fp=fopen("file1.txt","r");
/**********found**********/
fscanf(fp,"%s%s%s",str,str1,str2);
改错题
给定程序MODI1。
C中函数fun的功能是:
对N名学生的学习成绩,按从高到低的顺序找出前m(m〈=10〉名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构
inti,j,k;
/**********found**********/
t=(STU*)calloc(sizeof(STU),m);
for(i=0;ifor(k=0;k{for(i=j=0;iif(b[i].s>b[j].s)j=i;
/**********found**********/
t[k]=b[j];
程序编写
请编写函数fun,函数的功能是:
删除一维数组中所有相同的数,使之只剩一个。
数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,一维数组中的数据是;2223445666677899101010。
删除后,数组中的内容应该是:
2345678910。
注意:
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
intfun(inta[],intn)
{
inti,j=1,k=a[0];
for(i=1;iif(k!
=a[i]){
a[j++]=a[i];
k=a[i];
}
a[j]=0;
returnj;
}
第6题
填空题
给顶程序中,函数fun的功能是根据形参i的值返回某个函数的值。
当调用正确时,程序输出:
x1=5.000000,x2=3.000000,x1*x1+x1*x2=4.000000
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存在考生文件夹下的BLANK1。
C中。
不得增行或删行,也不得更改程序的结构!
/**********found**********/
doublefun(inti,doublex,doubley)
{if(i==1)
/**********found**********/
returnf1(x);
else
/**********found**********/
returnf2(x,y);
改错题
给定程序MODI1。
C中函数fun的功能是:
比较两个字符串,将长的那个字符串的首地址作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构
{sl++;
/**********found**********/
ss++;
}
while(*tt)
{tl++;
/**********found**********/
tt++;
程序编写
请编写函数fun,函数的功能是:
移动字符串中的内容,移动的规则如下:
把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移动到字符串的前部。
例如,字符串中原有的内容为:
ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:
DEFGHIJKABC。
注意:
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语
{
inti;chart;
t=w[0];
for(i=0;iw[i]=w[i+1];
w[strlen(w)-1]=t;
}
第7题
填空题
程序通过定义并赋值的方式,利用结构体变量存储了一名学生的信息。
函数fun的功能是输出这位学生的信息。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存在考生文件夹下的BLANK1。
C中。
不得增行或删行,也不得更改程序的结构!
/**********found**********/
voidshow(STUtt)
{inti;
printf("\n%d%s%c%d-%d-%d",tt.num,tt.name,tt.sex,
tt.birthday.year,tt.birthday.month,tt.birthday.day);
for(i=0;i<3;i++)
/**********found**********/
printf("%5.1f",tt.score[i]);
printf("\n");
}
main()
{STUstd={1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0};
printf("\nAstudentdata:
\n");
/**********found**********/
show(std);
改错题
给定程序MODI1。
C中函数fun的功能是:
求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
for(i=0;i<2;i++){
/**********found**********/
m=i;
for(k=i+1;k/**********found**********/
if(a[k]>a[m])m=k;
程序编写
请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n>=2)位的整数,函数求出w的低n-1位的数作为函数值返回。
例如:
w值为5923,则函数返回923;w值为923则返回23。
注意:
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
{
if(w>10000)w%=10000;
elseif(w>1000)w%=1000;
elseif(w>100)w%=100;
elseif(w>10)w%=10;
returnw;
}
第8题
填空题
给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。
函数fun的功能是将该学生的各科成绩都乘以一个系数a。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
/**********found**********/
voidmodify(STU*ss,floata)
{inti;
for(i=0;i<3;i++)
/**********found**********/
ss->score[i]*=a;
}
main()
{STUstd={1,"Zhanghua",76.5,78.0,82.0};
floata;
printf("\nTheoriginalnumberandnameandscores:
\n");
show(std);
printf("\nInputanumber:
");scanf("%f",&a);
/**********found**********/
modify(&std,a);
改错题
longfun(intk)
{
/************found************/
if(k>0)
return(k*fun(k-1));
/************found************/
elseif(k==0)
程序编写
程序定义了NXN的二维数组,并在主函数中自动赋值。
请编写函数fun(inta[][N],intn),函数的功能是:
使数组左下三角元素中的值乘以n。
例如:
若n的值为3,a数组中的值为
则返回主程序后a数组中的值应为。
注意:
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
{
inti,j;
for(i=0;ifor(j=0;j<=i;j++)
a[i][j]*=n;
}
第9题
填空题
给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。
即若原链表结点数据域从头至尾的数据为:
10、4、2、8、6。
排序后链表结点数据域从头至尾的数据为2、4、6、8、10。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存在考生文件夹下的BLANK1。
C中。
不得增行或删行,也不得更改程序的结构!
/**********found**********/
q=p->next;
/**********found**********/
while(q)
{if(p->data>q->data)
{t=p->data;p->data=q->data;q->data=t;}
q=q->next;
}
/**********found**********/
p=p->next;
改错题
给定程序MODI1。
C中函数fun的功能是:
将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其它字符不变。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
/**********found***********/
while(*s)
{if(*s>='A'&*s<='Z'||*s>='a'&&*s<='z')
{if(*s=='Z')*s='A';
elseif(*s=='z')*s='a';
else*s+=1;
}
/**********found***********/
s++;
程序编写
标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。
例如,一维数组中的原始内容为:
1,2,3,4,5,6,7,8,9,10;p的值为3。
移动后,一维数组中的内容应为:
5,6,7,8,9,10,1,2,3,4。
注意:
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
{
inti,j=0,b[N];
for(i=p+1;ifor(i=0;i<=p;i++)b[j++]=w[i];
for(i=0;i}
第10题
填空题
给定程序中,函数fun的功能是:
判定形参的NXN(规定N为奇数)的矩阵是否是"幻方",若是,函数返回值为1;不是,函数返回值为0。
"幻方"的判定条件是:
矩阵每行、每列、主对角线及反对角线上的元素之和都相等。
例如,以下3X3的矩阵就是一个"幻方":
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
源程序存在考生文件夹下的BLANK1。
C中。
不得增行或删行,也不得更改程序的结构!
/**********found**********/
row=colum=0;
for(j=0;j{row+=a[i][j];colum+=a[j][i];}
/**********found**********/
if((row!
=colum)||(row!
=m1))return0;
}
/**********found**********/
return1;
改错题
给定程序MODI1。
C中函数fun的功能是:
根据整数形参m,计算如下公式的值。
例如,若主函数中输入5,则应输出-0.283333。
请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
for(i=2;i<=m;i++)
/**********found**********/
t=t-1.0/i;
/**********found**********/
returnt;
程序编写
请编写一个函数,函数的功能是删除字符串中的所有空格。
例如,主函数中输入"asdafaaz67",则输出为"asdafaaz67"。
注意:
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
{
char*p=str;
inti=0;
while(*p){
if(*p!
='')str[i++]=*p;
p++;
}
str[i]=0;
}
第11题
填空题
给定程序中,函数fun的功能是将带头结点的单向链表逆置。
即若原链表中从头至尾结点数据域依次为:
2、4、6、8、10,逆置后,从头至尾结点数据域依次为:
10、8、6、4、2;
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1。
C中,
不得增行或删行,也不得更改程序的结构!