2021-学习资料大全南开二级c语言上机100题_第1页
2021-学习资料大全南开二级c语言上机100题_第2页
2021-学习资料大全南开二级c语言上机100题_第3页
2021-学习资料大全南开二级c语言上机100题_第4页
2021-学习资料大全南开二级c语言上机100题_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

常识改变命运勤奋塑造成功

整理人落叶

时间2021-4-15

天才是百分之九十九的勤奋加百分之一的灵感

南开二级C语言上机100题

1、改错题1

下列给定程序的功能是:读入一个整数(2<=k《=10000》,打印它的所有质因子(即所有为

素数的因子).例如,若输入整数2310,则应输出2、3、5、7、11.

请改正程序中的错误,使程序能得到对的成果.

注重,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<conio.h>

#include<stdio.h>

IsPrime(intn);去掉分号

{inti,m;

m=l;

for(i=2;i<n;i++)

if!(n%i)-------------------if(!(n%i))

{m=0;break;}

return(m);

)

main()

{intj,k;

clrscr();

printf(nnPleaseenteranintegernumberbetween2and10000:");scanf("%d”,&k);

printf(nnnTheprimefactor(s)of%dis(are):",k);

for(j=2;j<=k;j++)

if((!(k%j))&&(IsPrime(j))printf(nn%4d",j);

printf(Mnn);

)

2、编程题1

m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为

函数值行会,将低于平均分的分数放在below所指的数组中.

例如,但score数组的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应

该时4,below中的数据应为10、20、30、40.

注重:部分源程序给出如下.

请勿改动主函数main和其他函数中的任何内容仅在函数fun的花括号中填入所编写的若干

语句.

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

intfun(intscore[],intm,intbelowf])

(

-------------------inti,k=0;floataver=0;

for(i=0;i<m;i++)

aver+=(score[i]);

avei-m;

for(i=0;i<m;i++)

if(score[i]<aver)

{below[k]=score[i];

k++;

retern(k);)

)

main()

{inti,n,below[9];

intscore[9]={10,20,30,40,50,60,70,80,90);

clrscr();

n=fun(score,9,below);

printf("nBelowtheaveragescoreare:");

for(i=0;i<n;i++)printf(n%d",below[i]);

)

3、改错2

下列给定程序中,函数fun的功能是:逐个对照a、b两个字符串对应位置中的字符,把

ASCH值大或等于的字符一次存放到c数组中,形成一个新的字符串.例如,若a中的字符串

为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串为:aBcdeFgh.

请改正程序中的错误,使程序能得到对的成果.

注重,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<studio.h>

#include<string.h>

void;fun(char*p,char*q,char*c)------去分号

{intk=l;------1改为0

while(*p!=*q)------!=改为||

{if(*p<*q)c[k]=*q;------小于号改为小于等于

elsec[k]=*p;

if(*p)p++;

if(*q)q++;

k++;

)

main()

{chara[10]="aBCDeFghH,b[l0]=,,ABcd,,,c[80]={n};

fun(a,b,c);

printf(MThestringa:");puts(a);

printf("Thestringb:");puts(b);

printf("Theresult:M);puts(c);

}

4、改错3

下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,

并取代原字符串.

请改正程序中的错误,使程序能得到对的成果.

注重,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<sldio.h>

#include<conio.h>

voidfun(char*s)

{inti,j;

for(i=0,j=0;s[i]!='\0';i++)

if(s[i]>='O'&&s[i]<='9')

s[j]=s[i];----j改为j++

s[j]="\O";-------------------s[j]=、(y

)

main()

{charitem[80];

clrscr();

printf(M\nEnterastring:");gets(item);

printf(M\n\nThestringis:\%s\n",item);

fun(item);

printf(n\n\nThestringofchangingis:\%s\nH,item);

5、改错4

下列给定程序中,函数fun的功能是:分别铜级字符串中大写字母和小写字母的个数.例如,

给字符串s输入:AAaaBBbl23CCccccd,则应该输出成果:upper=6,lower=8.

请改正程序中的错误,使程序能得到对的成果.

注重,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<conio.h>

#include<stdio.h>

voidfun(char*s,inta,intb)------------a应为*a,b应为*b

{while(*s)

{if(*s>='A'&&*sv=Z)

a++;------------(*a)++;

if(*s>=,a,&&*s<=,z,)

b++;(*b)++;

s++;

)

)

main()

{chars[100];intupper=0,lower=0;

clrscr();

printf(MnPleaseastring:");gets(s);

fun(s,&upper,&lower);

printf(nnupper=%dlower=%dn",upper,lower);

)

6、改错5

假定整数数列中的数不重复,并存放在数组中.下列给定程序中,函数fun的功能是:删除

数列中值为x的元素.n中存放的是数列中元素的个数.

请改正程序中的错误,使程序能得到对的成果.

注重,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<stdio.h>

#defineN20

fun(int*a,intn,intx)

{intp=0,i;

a[nl=x;

while(x!=a[pl)

p=p+l;

if(p==n)return-1;

else

{for(i=p;i<n;i++)

a[i+1]=a[i];------------a[i]=a[i+1];

returnn-1;

)

)

main()

{intw[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;

n=10;

printf("Theoriginaldata:nH);

for(i=0;i<n;i++)printf("%5d",w[i]);

printf(nnlnputx(todelete):u);scanf(M%d",&x);

printf(MDelete:%dn'\x);

n=fun(w,n,x);

if(n==-l)printf("***Norbefound!***nn");

else

{printf("Thedataafterdeleted:!!");

for(i=0,i<n;i++)printf("%5d",w[i]);printf(,'nn");

)

)

7、改错6

下列给定程序中,函数fun的功能是:根据整型形参m的值,计算如下公式的值.t=l-12X

2-13X3-…-ImXm

例如,若m中的值为5,则应输出:0.536389.

请改正程序中的错误,使程序能得到对的成果.

注重,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<conio.h>

#include<stdio.h>

doublefun(intm)

{doubley=1.0;

inti;

for(i=2;i<m;i++)------------“v”改为“<="

火火****木头义^2^火****|**|**火火*2^出

y-=l(i*i);“1”改为“1.0

return(y);

main()

{intn=5;

clrscr();

printf(n\nRheresultis%lf\n",fun(n));

8、改错7

下列给定程序中,函数fun的功能是:用挑选法对数组中的n个元素按从小到大的次序进行

排序.

请改正程序中的错误,使程序能得到对的成果.

注重,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

#defineN20

voidfun(inta[],intn)

{inti,j,t,p;

for(j=O;j<n-l;j++)

{p=j------加上";"

for(i=j;i,n;i++)------j改为j+1

if(a[i]<a[p])

P=j;-j改为i

t=a[p];a[p]=a[j];a[j]=t;

)

)

main()

(

inta[NJ={9,6,8,3,-1},i,m=5;

printf("排序前的数据:");

for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");

fun(a,m);

printf("排序后的数据:");

for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");

)

9、改错8(2021.7.27)

下列给定程序中,函数fun的功能是:在字符串str中找出ASCII码值最大的字符,将其放

在第一个位置上;并将该字符前的原字符向后次序移动.例如,调用fun函数之前给字符串

输入:ABCDeFGH,调用后字符串中的内容为eABCDFGH.

请改正程序中的错误,使程序能得到对的成果.

注重,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

fun(char*p)

{charmax,*q;inti=0;

max=p[i];

while(p[i]!=O)

{if(max<p[i])

{max=p[i];

p=q+i;------改为q=p+i;

)

i++;

)

while(q<p)------q<p改为q>p

{*q=*(q-l);

q-;

)

p[O]=max;

)

main()

{charstr[8OJ;

printf("Enterastring:");gets(Str);

printf("\nTheoriginalstring:");puts(Str);

fun(str);

printf(M\nThestringagtermoving:");puts(str);ptintf(n\n\n");

)

10、改错9(2021.7.27)

下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生人数,

此人数由函数值返回,平均分存放在形参aver所指的存储单元中.例如,若输入8名学生的

成绩:

80.5607290.59851.58864

则低于平均分的学生人数为4(平均分为:75.5625).

请改正程序中的错误,使程序能得到对的成果.

注重,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<conio.h>

#include<stdio.h>

#defineN20

intfun(float*s,intn,float*aver)

{floatave,t=0.0;

intcount=0,k,i;

for(k=0;k<n;k++)

t=s[k];------t+=s[k];

ave=tn;

for(i=0;i<n;i++)

if(s[i]<ave)count++;

*aver=&ave;------去掉&

returncount;

}

main()

{floats[30j,aver;

intm,i;

clrscr();

printf(MnPleaseenterm:";scanf("%d",&m);

printf(nnPleaseenter%dmark:n,',m);

for(i=0;i<m;i++)scanf(H%f*,s+i);

printf(MnThenumberofstudents:%dn'\fun(s,m,&aver));

printf('*Ave=%fn",aver);

)

11、改错10(2021.8.1)

下列给定程序中,函数fun的功能是:将s所指字符串中出现的11所指子串所有替换成t2

所指子字符串,所形成的新串放在w所指的数组中.在此处,要求tl和t2所指字符串的长度

一样.例如,当s所指字符产中的内容为abcdabfab,tl所指子串中的内容为ab,t2所指子串中

的内容为99时,成果,在2

所指的数组中内容应为99cd99f99.

请改正程序中的错误,使程序能得到对的成果.

注重,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

intfun(char*s,char*tl,char*t2,char*w)

(

inti;char*p,*r,*a;

strcpy(w,s);

while(*w)

{p=w;r=tl;

while(r)------r改为*r

if(*r==*p){r++;p++}

elsebreak;

if(*r==n)

{a=w;r=t2;

while(*r){*a=*r;a++;r++}----改为while(*r){*a=*r;a++;r++;}

w+=strlen(t2);

elsew++;

)

main()

chars[100J,tl|l00J,t2[lOOJ,w[l00];

clrscr();

printf(nnPleaseenterstringS:',);scanf(,,%s,',s);

printf(MnPleaseenterstringtl:");scanf(,'%s',,tl);

printf(HnPleaseenterstringt2:");scanf(,'%su,t2);

if(strlen(tl)==strlen(t2))

(

printf("nTheresultis:%sn",w);

)

elseprintf("Error:strlen(tl)!=strlen(t2)n");

}

12、改错11(2021.8.1)

给定程序MODI1.C中,fun函数的功能是:先从键盘上输入一个3行3列矩阵的各个元素的

值,然后输出主对角线元素之积.

请改正程序中的错误,或在标横线处填上恰当的内容并把横线删除,使它能得到对的成果.

注重:不要改动main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

intfun()

inta[3][3],sum;

inti,j;

;------sum=1;

for(i=0;i<3;i++)

{for(j=O;j<3;j++)

scanf("%d"a[ij|jj);------scanf("%d",&a[ij|j]);

)

for(i=0;i<3;i++)

sum=sum*a[i][i];

printf("Sum=%dn",sum);

)

main()

{fun();}

13、改错12(8.1)

下列程序的功能是:读入一个整数k(2WkW10000),打印它的所有质因子(即所有为素数的

因子).例如,若输入整数:2310,则应输出:2、3、5、7、11.

请改正程序中的语法错误,使程序能得到对的成果.

注重:不要改动main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include〃conio.h〃

#include〃stdio.h〃

IsPrime(intn);-----IsPrime(intn)

{inti,m;

m=1;

for(i=2;i<ni++)

if!(n%i)——if(!(n%i))

{m=0;break;}

return(m);

main()

{intj,k;

clrscr();

printf(〃nPeaseenteranintegernumberbetween2and10000:〃);scanf(〃%d〃,&k);

printf(〃nnTheprimefactor(s)of%dis(are):〃,k);

for(j=2;j<=k;j++)

if((!k%j))&&(IsPrime(j))}printf(〃n%4d〃,j);

printf(〃n〃);

)

14、改错13(8.4)

下列程序中,fun函数的功能是:根据形参m,计算如下公式的值.

t=l+12+13+14+...+1m

例如,若输入5,则应输出2.283333.

请改正程序中的语法错误,使程序能得到对的成果.

注重:不要改动main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<conio.h>

#include<stdio.h>

doublefun(intm)

(

doublet=1.0;

inti;

for(i=2;i<=m;i++)

t+=l.Ok;------k改为i

;----填returnt;

)

main()

(

intm;

clrscr();

printf(t4nPleaseenter1integernumber:^^);

scanfT%d”,&m);

printf(unTheresultis%lfh,,,fun(m));

15、改错14(8.4)

下列程序中,fun和funx函数的功能是:

用二分法求方程2xXxXx-4xXx+3x—6=0的一个根,并要求绝对误差不超过0.001.例

如,若给m输入一100,给n输入90,则函数求得的一个根为2.000.

请改正程序中的语法错误,使程序能得到对的成果.

注重:不要改动main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

#include<math.h>

doublefunx(doublex)

return(2*x*x*x-4*x*x+3*x-6);

doublefun(doublem,doublen)

intr;------改为doubler;

r=(m+n)2;

while(fabs(n-m)<0.001)------改为">=

{if(funx(r)*funx(n)<0m=r;

elsen=r;

r=(m+n)2;

)

returnr;

)

main()

(

doublem,n,root;

printf("Entermn:n");scanf("%1f%1f\&m,&n);

root=fun(m,n);

printf(',root=%6.3fn,',root);

)

16、改错15(8.5)

下列给定程序中,函数fun的功能是:判断字符ch是否与str所指串中的某个字符一样;

若一样,则什么也不做,若差别,则将器插在串的末了.

请改正程序中的错误,使程序能得到对的成果.

注重,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(charstr,charch)-------------------------1

{while(*str&&*str!=ch)str++;

if(*str==ch)-2

{str[O]=ch;

str[l]='O';-------------------------------------3

)

main()

{chars[81],c;

clrscr();

printf(nnPleaseenterastring:n");gets(s)

printf(nnPleaseenterthecharactertosearch:");

c=getchar();

fun(s,c);

printf(HnTheresultis%sn",s);

15题Answer:

1.voidfun(char*str,charch)

2.if(*str=-

17、改错16(8.5)

下列给定程序中,函数Creatlink的功能是:创建带头结点的单项链表,并为各结点数据域

赋0到m-1的值.

请改正程序中的错误,使程序能得到对的成果.

注重,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

typedefstructaa

{intdata;

structaa*next;

}NODE;

NODE*Creatlink(intn,intm)

{NODE*h=NuH,*p,*s;

int

s=(NODE*)malloc(sizeof(NODE));

h=p;---------------------------------------1

p->next=NULL;

for(i=l;i<=n;i++)

{s=(NODE*)malloc(sizeof(NODE));

s->data=rand()%m;------------------------2

s->next=p->next;

p->next=s;

p=p->next;

)

returnp;---------------------------------3

outlink(NODE*h)

{NODE*p;

p=h->next;

printf(nnnTHELIST:nnHEAD");

while(p)

{printf(*'->%dn,p->data);

p=p->next;

)

printf(,,nn);

)

main()

{NODE*head;

clrscr();

head=Creatlink(8,22);

outlink(head);

)

16题Answer:

1.h=p=s;

2.s->data=rand()%(m-1);

3.returnh;

18、改错17(8.5)

下列给定程序中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的

自然数之和.k的值由主函数传入,若k的值为500,则函数值为4622.

请改正程序中的错误,使程序能得到对的成果.

注重,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<conio.h>

#include<stdio.h>

intfun(intk)

{intm=0,mc=0,j;

while((k>=2)&&(mc<10))

{if((k%13=0)||(k%17=0))-1

{m=m+k;mc++;}

)

returnm;

----------------------------------------------------2

main()

{clrscr();

printf("%dn",fun(5OO));

}

17题Answer:

1.if((k%13==O)||(k%17==O))

2.)

19、改错18(8.5)

下列给定程序中,函数fun的功能是:实现两个整数的交流.例如给a和b分别输入60和

65,输出为:a=65b=60

请改正程序中的错误,使程序能得到对的成果.

注重,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<conio.h>

#include<stdio.h>

voidfun(inta,b)---------------------------1

{intt;

t=b;b=a;a=t;--------------------------------2

)

main()

{inta,b;

clrscr();

printf(nEntera,b:M);scanf(n%d%d",&a,&b);

fun(&a,&b);

pHntf("a=%db=%dnu,a,b);

18题Answer:

1.voidfun(int*a,int*b)

2.t=*b;*b=*a;*a=t;

20、改错19(8.5)

下列给定程序中,函数fun的功能是:从低位最先取出长整型变量s中偶数位上的数,一次

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论