永发信息网

【急求:2010 南开100题 上机题 2级C语言

答案:1  悬赏:70  手机版
解决时间 2021-10-18 14:32
【急求:2010 南开100题 上机题 2级C语言
最佳答案
南开二级C语言上机100题 1、 改错题1 下列给定程序的功能是:读入一个整数(2<=k《=10000》,打印它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出2、3、5、7、11。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include <conio.h> #include <stdio.h> ******************************* IsPrime(int n); ——————去掉分号 {int i,m; m=1; for ( i=2; i<n; i++) ****************************** if !(n%i) ——————if (!(n%i)) { m=0; break; } return (m); } main() { int j,k; clrscr(); printf("nPlease enter an integer number between 2 and 10000:");scanf("%d",&k); printf("nnThe prime factor(s) of %d is (are):",k); for (j=2;j<=k;j++) if ((!(k%j))&&(IsPrime(j)) printf("n %4d",j); printf("n"); ) 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> int fun (int score[],int m, int below[]) { ——————int i,k=0;float aver=0; for(i=0;i<m;i++) aver+=(score[i]); aver/=m; for (i=0;i<m;i++) if (score[i]<aver) {below[k]=score[i]; k++; retern(k);} } main() {int i, n, below[9]; int score [9]={10,20,30,40,50,60,70,80,90}; clrscr(); n=fun(score,9,below); printf("nBelow the average score are:"); for (i=0;i<n;i++) printf ("%d",below[i]); } 3、 改错2 下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或等于的字符一次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串为:aBcdeFgh。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序 #include <studio.h> #include <string.h> **************************************** void; fun(char *p,char *q,char *c)——去分号 *************************************** {int k=1; ——1改为0 *************************************** while(*p!=*q) —— != 改为 || *************************************** {if (*p<*q) c[k]=*q; ——小于号改为小于等于 else c[k]=*p; if (*p) p++; if (*q) q++; k++; } } main() {char a[10]="aBCDeFgh",b[10]="ABcd",c[80]={''}; fun(a,b,c); printf("The string a:"); puts(a); printf("The string b:"); puts (b); printf("The result:"); puts(c); } 4、 改错3 下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序 #include <stdio.h> #include <conio.h> void fun (char *s) { int i,j; for (i=0,j=0;s[i]!='\0';i++) **************************************** if (s[i]>='0' && s[i]<='9') s[j]=s[i]; ——————j改为j++ *************************************** s[j]="\0"; ——————s[j]='\0' } main() {char item[80]; clrscr(); printf("\nEnter a string:");gets(item); printf("\n\nThe string is :\%s\n",item); fun (item); printf("\n\nThe string of changing is :\%s\n",item); } 5、 改错4 下列给定程序中,函数fun的功能是:分别铜级字符串中大写字母和小写字母的个数。例如,给字符串s输入:AAaaBBb123CCccccd,则应该输出结果:upper=6,lower=8。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序 #include <conio.h> #include <stdio.h> ********************************** void fun (char *s,int a, int b) ————a应为*a,b应为*b { while(*s) { if (*s>='A' && *s<='Z') *********************************** a++; ————(*a)++; if (*s>='a' && *s<='z') ************************************ b++; ————(*b)++; s++; } } main() { char s[100];int upper=0,lower=0; clrscr(); printf("nPlease a string:");gets(s); fun(s,&upper, &lower); printf("n upper=%d lower=%dn",upper,lower); } 6、 改错5 假定整数数列中的数不重复,并存放在数组中。下列给定程序中,函数fun的功能是:删除数列中值为x的元素。n中存放的是数列中元素的个数。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序 #include <stdio.h> #define N 20 fun (int *a,int n, int x) {int p=0,i; a[n]=x; while (x!=a[p]) p=p+1; if (p==n) return -1; else {for (i=p;i<n;i++) ****************************************** a[i+1]=a[i]; ————a[i]=a[i+1]; return n-1; } } main() {int w[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i; n=10; printf("The original data:n"); for (i=0;i<n;i++) printf("%5d",w[i]); printf("nInput x (to delete):");scanf("%d",&x); printf("Delete:%dn",x); n=fun(w,n,x); if (n==-1) printf("***Nor be found!***nn"); else {printf("The data after deleted:n"); for (i=0,i<n;i++) printf("%5d",w[i]);printf("nn"); } } 7、 改错6 下列给定程序中,函数fun的功能是:根据整型形参m的值,计算如下公式的值。t=1-1/2×2-1/3×3-…-1/m×m 例如,若m中的值为5,则应输出:0.536389。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include <conio.h> #include <stdio.h> double fun (int m) { double y=1.0; int i; *************************************** for (i=2;i<m;i++) ———— “<”改为“<=” *************************************** y-=1/(i*i); ————“1”改为“1.0” return(y); } main () {int n=5; clrscr(); printf("\nRhe result is %1f\n",fun(n)); } 8、 改错7 下列给定程序中,函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include <stdio.h> #define N 20 void fun(int a[],int n) { int i,j,t,p; for (j=0;j<n-1;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() { int a[N]={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(2004.7.27) 下列给定程序中,函数fun的功能是:在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用fun函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为eABCDFGH。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include <stdio.h> fun(char *p) { char max,*q;int i=0; max=p[i]; while(p[i]!=0) { if(max<p[i]) {max=p[i]; ******************************* p=q+i; ——改为q=p+i; } i++; } ****************************** while(q<p) ——q<p改为q>p {*q=*(q-1); q--; } p[0]=max; } main() {char str[80]; printf("Enter a string:");gets(Str); printf("\nThe original string: ");puts(Str); fun(str); printf("\nThe string agter moving:");puts (str);ptintf("\n\n"); } 10、 改错9(2004.7.27) 下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如,若输入8名学生的成绩: 80.5 60 72 90.5 98 51.5 88 64 则低于平均分的学生人数为4(平均分为:75.5625)。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include <conio.h> #include <stdio.h> #define N 20 int fun (float *s,int n,float *aver) {float ave,t=0.0; int count=0,k,i; for (k=0;k<n;k++) ******************************* t=s[k]; ——t+=s[k]; ave=t/n; for (i=0;i<n;i++) if (s[i]<ave) count++; ****************************** *aver=&ave; ——去掉& return count; } main() {float s[30],aver; int m,i; clrscr(); printf("nPlease enter m:";scanf("%d",&m); printf("nPlease enter %d mark:n",m); for (i=0;i<m;i++) scanf("%f",s+i); printf("nThe number of students:%dn",fun(s,m,&aver)); printf("Ave=%fn",aver); ) 11、 改错10(2004.8.1) 下列给定程序中,函数fun的功能是:将s所指字符串中出现的t1所指子串全部替换成t2所指子字符串,所形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。例如,当s所指字符产中的内容为abcdabfab,t1所指子串中的内容为ab,t2所指子串中的内容为99时,结果,在2 所指的数组中内容应为99cd99f99。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include<conio.h> #include<stdio.h> #include<string.h> int fun (char *s, char *t1,char*t2,char*w) { int i; char *p,*r,*a; strcpy(w,s); while(*w) {p=w;r=t1; ******************************************** while(r) ——r改为*r if(*r==*p) {r++;p++} else break; if(*r=='') {a=w;r=t2; ******************************************* while(*r){*a=*r;a++;r++} ——改为while(*r){*a=*r;a++;r++;} w+=strlen(t2); } else w++; } } main() { char s[100],t1[100],t2[100],w[100]; clrscr(); printf("nPlease enter string S:");scanf("%s",s); printf("nPlease enter string t1:");scanf("%s",t1); printf("nPlease enter string t2:");scanf("%s",t2); if (strlen(t1)==strlen(t2)) { printf("nThe result is :%sn",w); } else printf("Error:strlen(t1)!=strlen(t2)n"); } 12、 改错11(2004.8.1) 给定程序MODI1.C中,fun函数的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之积。 请改正程序中的错误,或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include <stdio.h> int fun () { int a [3] [3], sum; int i, j; *********************************** _____; ——sum = 1; for (i=0;i<3;i++) { for (j=0;j<3;j++) ***************************************** scanf (〃%d〃 a [i] [j]); ——scanf("%d", &a[i][j]); } for (i=0; i<3; i++) sum=sum*a[i] [i]; printf (〃Sum=%dn〃, sum); } main () { fun (); } 13、 改错12(8.1) 下列程序的功能是:读入一个整数 k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数:2310,则应输出:2、3、5、7、11。 请改正程序中的语法错误,使程序能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include 〃conio.h〃 #include 〃stdio.h〃 ************************************************ IsPrime ( int n ); ——IsPrime(int n) { int i, m; m = 1; for ( i = 2; i < n/ i++ ) ********************************************* if !( n%i ) ——if(!(n%i)) { m=0; break ; } return ( m ); } main () { int j, k; clrscr (); printf (〃nPease enter an integer number between 2 and 10000:〃); scanf ( 〃%d〃,&k ); printf ( 〃nn The prime factor (s) of % d is ( 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=1+ 1/2 + 1/3 + 1/4 + … + 1/m 例如,若输入5,则应输出2.283333。 请改正程序中的语法错误,使程序能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include<conio.h> #include<stdio.h> double fun(int m) { double t=1.0; int i; for(i=2;i<=m;i++) ******************************************* t+=1.0/k; ——k改为i ********************************************* ____________; ——填return t; } main() { int m; clrscr(); printf(“nPlease enter 1 integer number:”); scanf(“%d”,&m); printf(“nThe result is %1fn”,fun(m)); } 15、 改错14(8.4) 下列程序中,fun和funx函数的功能是: 用二分法求方程2x×x×x-4x×x+3x-6=0的一个根,并要求绝对误差不超过0.001。例如,若给m输入-100,给n输入90,则函数求得的一个根为2.000。 请改正程序中的语法错误,使程序能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include<stdio.h> #include<math.h> double funx(double x) { return(2*x*x*x-4*x*x+3*x-6); } double fun(double m, double n) { ************************************** int r;——改为double r; r=(m+n)/2; ********************************** while(fabs(n-m)<0.001) —— "<" 改为" >= " {if(funx(r)*funx(n)<0 m=r; else n=r; r=(m+n)/2; ) return r; ) main() { double m,n,root; printf("Enter m n: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> ********************************** void fun(char str, char ch)------------------------1 { while(*str && *str!=ch) str++; ********************************** if (*str==ch)------------------------------------2 { str[0]=ch; ********************************* str[1]='0';------------------------------------3 } } main() {char s[81],c; clrscr(); printf("nPlease enter a string:n");gets(s) printf("nPlease enter the character to search:"); c=getchar(); fun(s,c); printf("nThe result is %sn",s); } 15 题Answer: 1. void fun(char *str, char ch) 2. if (*str==' 17、 改错16(8.5) 下列给定程序中,函数Creatlink的功能是:创建带头结点的单项链表,并为各结点数据域赋0到m-1的值。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序 #include <conio.h> #include <stdio.h> #include <stdlib.h> typedef struct aa { int data; struct aa *next; }NODE; NODE *Creatlink(int n, int m) {NODE *h=Null, *p,*s; int i; s=(NODE *)malloc(sizeof(NODE)); ******************************************** h=p;-------------------------------------1 p->next=NULL; for (i=1;i<=n;i++) {s=(NODE *)malloc(sizeof(NODE)); ******************************************** s->data=rand()%m;-----------------------2 s->next=p->next; p->next=s; p=p->next; } ******************************************** return p;--------------------------------3 } outlink(NODE *h) {NODE *p; p=h->next; printf("nnTHE LIST:nn HEAD"); while(p) {printf("->%d",p->data); p=p->next; } printf("n"); } main() { NODE *head; clrscr(); head=Creatlink(8,22); outlink(head); } 16 题Answer: 1. h=p=s; 2. s->data=rand()%(m-1); 3. return h; 18、 改错17(8.5) 下列给定程序中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序 #include <conio.h> #include <stdio.h> int fun(int k) {int m=0, mc=0,j; while ((k>=2)&&(mc<10)) ********************************* {if ((k%13=0)||(k%17=0))-------------------1 {m=m+k;mc++;} k--; } return m; ********************************** _____________-------------------------------2 main() {clrscr(); printf("%dn",fun(500)); } 17 题Answer: 1. if ((k%13==0)||(k%17==0)) 2. } 19、 改错18(8.5) 下列给定程序中,函数fun的功能是:实现两个整数的交换。例如给a和b分别输入60和65,输出为:a=65 b=60 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序 #include <conio.h> #include <stdio.h> ******************************** void fun (int a,b)--------------------------1 {int t; ******************************* t=b;b=a;a=t;-------------------------------2 } main() {int a,b; clrscr(); printf("Enter a,b:");scanf("%d%d",&a,&b); fun(&a,&b); printf("a=%d b=%dn",a,b); } 18 题Answer: 1. void fun (int *a,int *b) 2. t=*b;*b=*a;*a=t; 20、 改错19(8.5) 下列给定程序中,函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,一次构成一个新数放在t中。例如,当s中的数为7654321时,t是的数为642。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序 #include <conio.h> #include <stdio.h> ******************************** void fun (long s, long t)--------------------------1 {long sl=10; s/=10; *t=s%10; **************************** while (s<0)--------------------------------------2 {s=s/100; *t=s%10*sl+*t; sl=sl*10; } } main() {long s,t; clrscr(); printf("nPlease enter s:");scanf("%ld",&s); fun(s,&t); printf("The result is : %ldn",t); } 19 题Answer: 1. void fun (long s, long *t) 2. while (s>0) 21、 改错20(8.5) N个有序整数数列已放在一堆数组中,下列给定程序中,函数fun的功能是:利用折半查找算法找整数m再数组中的位置。若找到,则返回其下标值;反之,则返回-1。 折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到low>high,查找结束。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序 #include <stdio.h> #define N 10 ************************************ void fun(int a[],int m)--------------------------1 {int low=0,high=N-1,mid; while(low<=high) {mid=(low+high)/2; if (m<a[mid]) high=mid-1; *************************************** else if (m>=a[mid])----------------------------2 low=mid+1; else return(mid); } return(-1); } main() {int i,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m; printf("a数组中的数据如下:"); for(i=0;i<N;i++) printf("%d",a[i]); printf("Enter m:");scanf("%d",&m); k=fun(a,m); if(k>=0) printf("m=%d,index=%d\n",m,k); else printf("Not be found!\n"); } 20 题Answer: 1. int fun(int a[],int m) 2. else if (m>a[mid])
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
花卉栽培技术是什么?有什么种植技巧的呢?
膨胀珍珠岩板价格是怎么样的?有人知晓的吗
吴江区公安局交警大队横扇中队地址在什么地方
怎么样才能把烟和酒给戒了?
中北大学大同大学阳城教学点在哪里啊,我有事
ppr热水管多少钱一米?什么牌子好?
怎样用盐盐制金桔泡水喝
中国最大的百合产地是哪里?需要关注哪些点
托斯卡纳集成墙面怎么样?好用吗?
都嘟五金件家居装修
问一下如何根据房间面积选配风机盘管
水电路180号是上海市哪个区的
攀枝花哪卖立式磨机,有哪些类型?
星月菩提如何快速包浆
有哪个能够告诉我床头风水布局有哪些禁忌?
推荐资讯
空调变频与直频的区别在哪里?一般家用何种性
外地人在杭州买房条件都需要哪些?有没有人晓
孕妇晚上是吃梨子好还是苹果好?习惯了在睡觉
孕妇穿防辐射的围裙有用吗
韵达快递查询单号1900116309183怎么查不到
我想问橙翠园房价?哪位能说说看?
接电话有什么技巧?
四季梅种子采收方法,花开到什么程度收种子
鲜榨青瓜汁到底是加蜂蜜凉还是不加蜂蜜凉?
万通卡的游戏充值维护要多久
安阳市昼锦中学是什么区里的
100平米办公室简单装修最少需要多少钱?大概
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?