二级C语言程序设计上机题汇总.docx
- 文档编号:15774646
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:31
- 大小:23.75KB
二级C语言程序设计上机题汇总.docx
《二级C语言程序设计上机题汇总.docx》由会员分享,可在线阅读,更多相关《二级C语言程序设计上机题汇总.docx(31页珍藏版)》请在冰点文库上搜索。
二级C语言程序设计上机题汇总
二级(C语言程序设计)上机题汇总
一、程序调试题
(一)程序填空
练习一:
/*该程序功能:
对x=1,2,。
。
。
。
。
,10,f(x)=x*x*-5*x+sin(x)的最大值。
*/
#include
#include
#definef(x)x*x-5*x+sin(x)
voidmain()
{intx;floatmax;
____max=f
(1);____
for(x=2;x<=10;x++)
___if(max printf("%f\n",max); } 练习二: /*该程序功能: 输入三个整数,按由小到大的顺序输出这三个数。 */ #include voidswap(__int*pa,int*pb____) {/*交换两个数的位置*/ inttemp; temp=*pa; *pa=*pb; *pb=temp; } voidmain() { inta,b,c,temp; scanf("%d%d%d",&a,&b,&c); if(a>b) swap(&a,&b); if(b>c) swap(&b,&c); if(__a>b___) swap(&a,&b); printf("%d,%d,%d",a,b,c); } 练习三: /*该程序功能: 将输入的十进制正整数n通过函数Dec2Bin转换为二进制数,并将转换结果输出。 */ #include voidDec2Bin(intm) { intbin[32],j; for(j=0;m! =0;j++) { bin[j]=__m%2___; m=m/2; } for(;j! =0;j--) printf("%d",____bin[j-1]______); } voidmain() { intn; scanf("%d",&n); Dec2Bin(n); } 练习四: /*该程序功能: 输入数组x[7],调用函数f,去除数组中的负数,输出结果为: 1346*/ #include voidf(int*a,int*m) {inti,j; for(i=0;i<*m;i++) if(a[i]<0){ for(j=i--;j<*m-1;j++)a[j]=a[j+1]; ___*m=*m-1;___ } } voidmain() {inti,n=7,x[7]={1,-2,3,4,-5,6,-7}; _f(x,&n);_____ for(i=0;i printf("\n"); } 练习五: /*该程序功能: 输出6~1000之间的完数(1个数的因子和等于其自身的数: 6=1+2+3,28=1+2+4+7+14,则6,28都是完数)*/ #include voidmain() {inti,j,s; for(i=6;i<=1000;i++){ ___s=1;___ for(j=2;___j if(s==i)printf("%d\n",s); } } 练习六: /*该程序功能: 输入整数n(n>0),求m使得2的m次方小于或等于n,2的m+1次方大于或等于n。 */ #include voidmain() {intm=0,t=1,n; while(__scanf(“%d”,&n),n<=0___); while(! (t<=n&&t*2>=n)){ ___t=t*2;___ m++; } printf("%d\n",m); } 练习七: /*该程序功能: 函数f将数组循环左移k个元素,数组x[7]调用函数f后的输出结果为: 4567123*/ #include voidf(int*a,intn,intk) {inti,j,t; for(i=0;i _t=a[0]; for(j=1;j a[n-1]=t; } } voidmain() {inti,x[7]={1,2,3,4,5,6,7}; f(x,7,3); for(i=0;i<7;i++)printf("%5d",x[i]);printf("\n"); } 练习八: /*该程序功能: 调用函数f,求二维数组a中全体元素的和.*/ #include floatf(_float*x[],intm,intn_____) {floaty=0;inti,j; for(i=0;i returny; } voidmain() {floata[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*b[3]; inti; for(i=0;i<3;i++)b[i]=__a[i]__; printf("%.2f\n",f(b,3,4)); } 练习九: /*该程序功能: 求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。 */ #include #include voidmain() { intn,s=0; scanf("%d",&n); ____n=fabs(n);____ while(n! =0){ ____s+=n%10;____ n=n/10; } printf("%d\n",s); } 练习十: /*该程序功能: 数组的第1,2项均为1,此后各项值均为该项前二项之和。 计算数组第30项的值。 */ #include __longf(intn); voidmain() { printf("%ld\n",f(30)); } longf(intn) { if(_____n==1||n==2) return1; else returnf(n-1)+f(n-2); } 练习十一: /*该程序功能: 输入m,n(要求输入均大于0,且m>=n),输出它们的最大公约数*/ #include voidmain() {intm,n,k; while(scanf("%d%d",&m,&n),m<=0||n<=0||m for(k=n;n%k! =0||m%k! =0;k--); printf("%d\n",k); } 练习十二: /*程序功能: 输入一个整数后,输出该数的位数,如3114,则输出4。 */ #include voidmain() {intn,k=0; scanf(“%d”,&n); while(n! =0){ k++; n=n/10; } printf(“%d\n”,k); } 练习十三: /*程序功能: 调用函数f,计算代数多项式1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*xx,当x=1.7时的值。 */ #include floatf(float,float*,int); voidmain() {floatb[5]={1.1,2.2,3.3,4.4,5.5}; printf("%f\n",f(1.7,b,5)); } floatf(floatx,float*a,intn) {floaty=a[0],t=1;inti; for(i=1;i returny; } 练习十四: /*程序功能: 调用函数f,从字符串中删除所有的数字字符。 */ #include #include #include voidf(char*s) {inti=0; while(s[i]! ='\0') if(isdigit(s[i]))strcpy(s+i,s+i+1); elsei++; } (二)程序修改 练习一: /*该程序功能: 运行是输入n,输出n各位数字之和(如n=1308则输出12,n=-3204则输出9)。 */ #include #include voidmain() {intn,s=0; scanf("%d",&n); n=fabs(n); /********1*******/ while(n>1){//n>1改成n! =0 s=s+n%10; /********2******/ n=n%10;//n=n%10;改成n=n/10; } printf("%d\n",s); } 练习二: /*该程序功能: 输入m,n(要求输入均大于0,且m>=n),输出它们的最小公倍数*/ #include voidmain() {intm,n,k; /********1*********/ while(scanf("%d%d",&m,&n),m<0&&n<0);//m<0&&n<0改成m<=0||n<=0||m for(k=m;k%n! =0;) /********2********/ k=k+n;//k=k+n;改成k=k+m; printf("%d\n",k); } 练习三: /*该程序功能: 输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的大写字母,输出该字符串。 */ #include #include #include voidmain() {intn,i; /*****1*****/ charstr;//charstr;改成char*str; scanf("%d\n",&n);str=(char*)malloc(n);gets(str); /*****2*****/ for(i=1;i if(str[i]>='a'&&str[i]<='z')str[i]=str[i]-('a'-'A'); puts(str); } 练习四: /*该程序功能: 输人1个字符串,按字母出现次序输出其中所出现过的大写英文字母。 如运行时输入字符串“FONTNAMEandFILENAME”应输出“FONTAMEIL”。 */ #include voidmain() {charx[80],y[26];inti,j,ny=0; gets(x); for(i=0;x[i]! ='\0';i++) if(x[i]>='A'&&x[i]<='Z'){ for(j=0;j /*****1*****/ if(y[i]==x[j])continue;//y[i]==x[j]改成y[j]==x[i]continue;改成break; if(j==ny){y[ny]=x[i];ny++;} } /*****2*****/ for(i=0;i<26;i++)//i<26;改成i printf("%c",y[i]); printf("\n"); } 练习五: /*程序功能: 将一个char型数的高4位和低4位分离,分别输出,如22(二进制: 00010110)输出1,6*/ #include voidmain() { chara,b1,b2,c; scanf("%d",&a); /******1******/ b1=a<<4;/*b1存放高4位*///b1=a<<4;改成b1=a>>4; c=~(~0<<4); /******2******/ b2=a|c;/*b2存放低4位*///b2=a|c;改成b2=a&c; printf("%d,%d",b1,b2); } 练习六: /*在考生目录下的Paper子目录下,有Modify.c文件,该文件中”/*****N*****/”的下一行中有错误,请改正(注意: 不得加行,减行,加句,减句,否则后果自负)。 该程序功能: 输入x和正数,eps计算多项式1-x+x*x/2! -x*x*x/3! ….的和直到末项的绝对值小于eps为止。 */ #include #include voidmain() {floatx,eps,s=1,t=1,i=1; scanf("%f%f",&x,&eps); do{ /*****1*****/ t=-t*x/++i;//t=-t*x/++i;改成t=-t*x/i++; s+=t; /*****2*****/ }while(fabs(t)>=eps)//while(fabs(t)>=eps); printf("%f\n",s); } 练习七: /*程序功能: 输入n,输出n的所有质数因子,(如n=13860,输出2、2、3、3、5、7、11)。 */ #include voidmain() {intn,i; scanf(“%d”,&n); /********1*******/ i=1;//i=1;改成i=2; while(n>1) if(n%i==0){ printf(“%d\t”,i); n/=i; } else /*******2********/ n--;//n--;改成i++; } 练习八: /*程序功能: 输入a,n,分别为3,6,则输出表达式的值3+33+333+3333+33333+333333*/ #include voidmain() {inti,a,n;longt=0; /********1*******/ s=0;//s=0;改成longs=0; scanf("%d%d",&a,&n); for(i=1;i<=n;i++){ /********2*******/ t=t*10+i;//t=t*10+i;改成t=t*10+1; s=s+t; } s=s*a; printf("%ld\n",s); } 练习九: 程序功能: 输入n,再输入n个点的平面坐标,然后输出那些距离坐标原点不超过5的点的坐标值。 #include #include #include voidmain() { inti,n; /*****1*****/ structaxy{floatx,y;}a;//structaxy{floatx,y;}*a; scanf("%d",&n); a=(structaxy*)malloc(n*2*sizeof(float)); for(i=0;i /*****2*****/ scanf("%f%f",a[i].x,a[i].y);//scanf("%f%f",&a[i].x,&a[i].y); for(i=0;i if(sqrt(a[i].x*a[i].x+a[i].y*a[i].y)<=5) printf("%f,%f\n",a[i].x,a[i].y); } 练习十: 程序功能: 分别统计字符串中所有英文字母中的各元音字母个数。 #include #include voidmain() {chara[80];intn[5]={0},i;gets(a); for(i=0;a[i]! ='\0';i++) /*****1*****/ switch(toupper(a[i])){//switch(tolower(a[i])) case'a': n[0]++;break; case'e': n[1]++;break; case'i': n[2]++;break; case'o': n[3]++;break; /*****2*****/ case'U': n[4]++;//case'u': n[4]++; } for(i=0;i<5;i++)printf("%d\n",n[i]); 练习十一: /*考生的目录Paper子目录下,有Modify.c文件,该文件中/*****N*****/的下一行中请改正。 该程序功能: 运行时输入10个数,然后分别输出其中的最大,最小的值。 */ #include voidmain() {floatx,max,min;inti; /********1*******/ for(i=0;i<=10;i++){//i<=10;改成i<10; scanf("%f",&x); /*******2********/ if(i=1){max=x;min=x;}//i=1改成i==0 if(x>max)max=x; if(x } printf("%f,%f\n",max,min); } 二、程序设计题 练习一: /*设计程序: z=f(x,y)=10*cos(x-4)+5*sin(y-2),若x,y取值区间为[0,10]的整数,找出 使z取最小值的x1,y1,并将x1,y1以格式“%d,%d”写到考生目录中Paper下目录下的新建文件design.dat中*/ #include #include voidmain() { FILE*p; intx,y,x1,y1;floatz,z1; /*考生在这里添加程序*/ p=fopen("design.dat","w"); z1=0; for(x=0;x<=10;x++) for(y=0;y<=10;y++) {z=10*cos(x-4)+5*sin(y-2); if(z {z1=z;x1=x;y1=y;} } fprintf(p,"%d,%d",x1,y1); fclose(p); } 练习二: /*设计程序: 计算多项式a0+a1*sin(x)+a2*sin(x*x)+a3*sin(x*x*x)+......的值,并将其值 以格式"%.6f"写到考生目录中Paper下目录下的新建文件design.dat中*/ #include #include voidmain() { FILE*p; inti;floatx=2.345,t=1.0,y=0.0; floata[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9}; /*考生在这里添加程序*/ y=a[0]; p=fopen("design.dat","w"); for(i=1;i<10;i++) {t=t*x; y+=a[i]*sin(t);} fprintf(p,"%.6f",y); fclose(p); } 练习三: /*设计程序: 计算多项式a0+a1*x+a2*x*x+a3*x*x*x+...的值,并将其值一格式"%f"写到考生目录中Paper下目录下的新建文件design.dat中*/ #include #include voidmain() {FILE*p;inti;floatx=1.279,t=1,y=0; floata[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; /*考生在这里添加程序*/ y=a[0]; p=fopen("design.dat","w"); for(i=1;i<10;i++) {t=t*x; y+=a[i]*t;} fprintf(p,"%f",y); fclose(p); } 练习四: /*设计程序: 累加a字符串各个字符的ASCII码值,然后将累加和以形式“%d”写到考生目录中Paper下目录下的新建文件design.dat中*/ #include voidmain() {FILE*p;ints=0,i=0; char*a="r235%^%34cdDW,."; /*考生在这里添加程序*/ p=fopen("design.dat","w"); for(;a[i]! ='\0';i++) s+=a[i]; fprintf(p,"%d",s); fclose(p); } 练习五: /*设计程序: 寻找并输出11到999之间的数m,它满足m,m*m,m*m*m均为回文数。 所谓回文数是指各位数字左右对称,例如121,676,94249等。 满足上述条件的数如m=11,m^2=121,m^3=1331皆为回文数。 请编制函数intJSValue(longm)实现此功能,如果是回文数,则函数返回为1,反之则返回0。 */ #include #include #include intJSValue(longm) { /*考生在这里添加程序*/ inta[10],i=0,n; while(m) {a[i]=m%10; m=m/10; i++;} for(--i,n=i;i>n/2;i--) if(a[i]! =a[n-i]) return0; return1; } voidmain() { FILE*p;longm; p=fopen("design.dat","w"); for(m=11;m<1000;m++) { if(JSValue(m)&&JSV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言程序设计 上机 汇总