计算机二级C语言50套上机题及答案.docx
- 文档编号:5647072
- 上传时间:2022-12-30
- 格式:DOCX
- 页数:158
- 大小:75.46KB
计算机二级C语言50套上机题及答案.docx
《计算机二级C语言50套上机题及答案.docx》由会员分享,可在线阅读,更多相关《计算机二级C语言50套上机题及答案.docx(158页珍藏版)》请在冰豆网上搜索。
计算机二级C语言50套上机题及答案
2012年计算机二级C语言50套程序编写上机题及答案
1、请编写函数fun,其功能是:
统计s所指字符串中的数字字符个数,并作为函数值返回。
例如,s所指字符串中的内容是:
2def35adh253kjsdf7/kj8655x,
函数fun返回值为:
11
注意:
部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
void
intfun(char*s)
{
intcount=0;
while(*s!
='\0')
{
if(*s>=48&&*s<=57)
count++;
s++;
}
returncount;
}
main()
{char*s="2def35adh253kjsdf7/kj8655x";
printf("%s\n",s);
printf("%d\n",fun(s));
}
2、编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。
(注意:
主函数中用****作为结束输入的标志,函数fun中给出的语句仅供参考。
)
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
voidfun(char(*a)[81],intnum,char**max)
{
/*以下代码仅供参考*/
inti,k=0,len,maxlen;/*k为a数组中最长串所在元素的下标,初始为0,maxlen为其串长*/
maxlen=strlen(a[k]);
for(i=1;i
{len=strlen(a[i]);
if(maxlen
{k=i;maxlen=len;}
/*以下完成查找最长串*/
}
*max=a[k];
}
main()
{
charss[10][81],*ps;void
intn,i=0;
printf("输入若干个字符串:
");
gets(ss[i]);
puts(ss[i]);
while(!
strcmp(ss[i],"****")==0)
{
i++;
gets(ss[i]);
puts(ss[i]);
}
n=i;
fun(ss,n,&ps);
printf("\nmax=%s\n",ps);
}
3、请编写函数fun,它的功能是:
求出ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串:
123412132,输入字符为:
1,则输出:
3。
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#defineM81
intfun(char*ss,charc)
{
intcount=0;
while(*ss!
='\0')
{
if(*ss==c)
count++;
ss++;
}
returncount;
}
main()
{chara[M],ch;
void
printf("\nPleaseenterastring:
");gets(a);
printf("\nPleaseenterachar:
");ch=getchar();
printf("\nThenumberofthecharis:
%d\n",fun(a,ch));
}
4、规定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:
将字符串中的前导*号全部删除,中间和尾部的*号不删除。
例如,字符串中的内容为:
*******A*BC*DEF*G****,删除后,字符串中的内容应当是:
A*BC*DEF*G****。
在编写函数时,不得使用C语言提供的字符串函数。
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
voidfun(char*a)
{
inti,,len=0;
while(a[len]=='*')
len++;
i=len;
while(a[i]!
='\0')
{
a[i-len]=a[i];
i++;
}
}
main()
{chars[81];
void
printf("Enterastring:
\n");gets(s);
fun(s);
printf("Thestringafterdeleted:
\n");puts(s);
}
5、请编写一个函数voidfun(chara[],charb[],intn),其功能是:
删除一个字符串中指定下标的字符。
其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。
例如,输入一个字符串:
World,然后输入3,则调用该函数后的结果为:
Word。
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#defineLEN20
voidfun(chara[],charb[],intn)
{
a[n]=0;
strcpy(b,a);
strcat(b,a+strlen(a)+1);
}
main()
{charstr1[LEN],str2[LEN];
intn;
void
printf("Enterthestring:
\n");
gets(str1);
printf("Entertheindexofthechardeleted:
");
scanf("%d",&n);
fun(str1,str2,n);
printf("Thenewstringis:
%s\n",str2);
}
6、请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,函数求出w的低n-1位的数作为函数值返回。
例如:
w值为5923,则函数返回923;w值为923则函数返回23。
注意:
部分源程序存在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
unsignedfun(unsignedw)
{
unsignednum=w,n=1;
while(num!
=0)
{
num=num/10;
n=n*10;
}
n=n/10;
returnw%n;
}
main()
{
void
unsignedx;
printf("Enteraunsignedintegernumber:
");scanf("%u",&x);
printf("Theoriginaldatais:
%u\n",x);
if(x<10)printf("Dataerror!
");
elseprintf("Theresult:
%u\n",fun(x));
}
7、假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:
除了字符串前导和尾部的*号之外,将串中其它*号全部删除。
形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。
在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:
****A*BC*DEF*G********,删除后,字符串中的内容应当是:
****ABCDEFG********。
在编写函数时,不得使用C语言提供的字符串函数。
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
voidfun(char*a,char*h,char*p)
{
char*r,*q;
for(q=p;q>h;q--)
{
if(*q=='*')
{
r=q;
while(*r!
='\0')
{
*r=*(r+1);
r++;
}
}
}
}
main()
{chars[81],*t,*f;
void
printf("Enterastring:
\n");gets(s);
t=f=s;
while(*t)t++;
t--;
while(*t=='*')t--;
while(*f=='*')f++;
fun(s,f,t);
printf("Thestringafterdeleted:
\n");puts(s);
}
8、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。
请编写函数fun,函数的功能是:
找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。
注意:
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#defineN10
typedefstructss
{charnum[10];ints;}STU;
voidfun(STUa[],STU*s)
{
inti;
*s=a[0];
for(i=1;i { if((*s).s>a[i].s) *s=a[i]; } } main() {STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77}, {"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m; inti;void printf("*****Theoriginaldata*****\n"); for(i=0;i fun(a,&m); printf("*****THERESULT*****\n"); printf("Thelowest: %s,%d\n",m.num,m.s); } 9、请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。 二维数组中的值在主函数中赋予。 例如: 二维数组中的值为 13579 29994 69998 13570则函数值为61。 注意: 部分源程序存在文件PROG1.C文件中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #defineM4 #defineN5 intfun(inta[M][N]) { intsum=0,i; for(i=0;i sum=sum+a[0][i]+a[M-1][i]; for(i=1;i sum=sum+a[i][0]+a[i][N-1]; returnsum; } main() {intaa[M][N]={{1,3,5,7,9}, {2,9,9,9,4}, {6,9,9,9,8}, {1,3,5,7,0}}; inti,j,y;void printf("Theoriginaldatais: \n"); for(i=0;i {for(j=0;j printf("\n"); } y=fun(aa); printf("\nThesum: %d\n",y); printf("\n"); } 10、程序定义了N×N的二维数组,并在主函数中赋值。 请编写函数fun,函数的功能是: 求出数组周边元素的平均值并作为函数值返给主函数中的s。 例如: a数组中的值为 |01279| |19745| a=|23831| |45682| |59141|则返回主程序后s的值应为: 3.375。 注意: 部分源程序存在文件PROG1.C文件中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include #defineN5 doublefun(intw[][N]) { intsum=0,i; for(i=0;i sum=sum+w[0][i]+w[N-1][i]; for(i=1;i sum=sum+w[i][0]+w[i][N-1]; return(double)sum/(4*N-4); } main() {inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1}; inti,j;void doubles; printf("*****Thearray*****\n"); for(i=0;i {for(j=0;j {printf("M",a[i][j]);} printf("\n"); } s=fun(a); printf("*****THERESULT*****\n"); printf("Thesumis: %lf\n",s); } 11、假定输入的字符串中只包含字母和*号。 请编写函数fun,它的功能是: 删除字符串中所有的*号。 在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为: ****A*BC*DEF*G*******,删除后,字符串中的内容应当是: ABCDEFG。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include voidfun(char*a) { char*t; while(*a) { if(*a=='*') { t=a-1; while(*a){*(a)=*(a+1);a++;} *a='\0'; a=t; } a++; } } } main() {chars[81]; void printf("Enterastring: \n");gets(s); fun(s); printf("Thestringafterdeleted: \n");puts(s); } 12、请编写函数fun,其功能是: 将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。 例如,若输入: 17,则应输出: 46891012141516。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include voidfun(intm,int*k,intxx[]) { inti,j,num=0; for(i=2;i { for(j=2;j { if(i%j==0){xx[num++]=i;break;} } } *k=num; } } main() { intm,n,zz[100]; void printf("\nPleaseenteranintegernumberbetween10and100: "); scanf("%d",&n); fun(n,&m,zz); printf("\n\nThereare%dnon-primenumberslessthan%d: ",m,n); for(n=0;n printf("\nM",zz[n]); } 13、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。 请编写函数fun,函数的功能是: 找出成绩最高的学生记录,通过形参指针传回主函数(规定只有一个最高分)。 已给出函数的首部,请完成该函数。 注意: 部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include #defineN10 typedefstructss {charnum[10];ints;}STU; voidfun(STUa[],STU*s) { inti,j=0,max; max=a[0].s; for(i=1;i { if(max {max=a[i].s; *s=a[i];} } } } main() { void STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77}, {"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m; inti; printf("*****Theoriginaldata*****\n"); for(i=0;i fun(a,&m); printf("*****THERESULT*****\n"); printf("Thetop: %s,%d\n",m.num,m.s); } 14、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是: 把分数最高的学生数据放在b所指的数组中,注意: 分数最高的学生可能不止一个,函数返回分数最高的学生的人数。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #defineN16 typedefstruct {charnum[10]; ints; }STREC; intfun(STREC*a,STREC*b) { inti,num=0,max; max=a[0].s; for(i=1;i { if(max } for(i=0;i { if(max==a[i].s){b[num]=a[i];num++;} } returnnum; } main() {STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85}, {"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}, {"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91}, {"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}}; STRECh[N]; inti,n;FILE*out; n=fun(s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 语言 50 上机 答案