省等级考试C程序改错,程序填空(修正版、附答案)
全国计算机等级考试二级C改错题答案

答案:(1)double sum=0.0;(2)sum/=c;
所属年份:2011.9
下列给定程序中函数fun和funx的功能是:用二分法求方程 的一个根,并要求绝对误差不超过0.001。
例如,若给m输入-100,n输入90,则函数求得的一个根为2.000。
答案:(1)fun(int x,int y, int z) (2)return j;
所属年份:2011.3
下列给定程序中函数fun的功能是:从N个字符串中找出最长的串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。
答案:(1)char *fun(char (*sq)[M]) (2)return sp;
下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。
例如,若输入252,则输出应该是20。若输入202,则输出应该是0。
答案:(1)long k=1;(2)num /=10;
所属年份:2010.9;2011.9;
下列给定程序中函数fun的功能是:把从主函数中输入的3个数,最大的数放在a中,中间的数放在b中,最小的数放在c中。
答案:(1)return 3;(2)return 1;
所属年份:2010.9;2011.3;2011.9;
下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。
t=1/2-1/3-…-1/m
例如,若输入5,则应输出-0.283333。
答案:(1)t-=1.0/i;(2)return t;
所属年份:2012.3;
下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
c语言改错题及答案

c语言改错题及答案【篇一: c 语言二级上机(t 填空 ,改错 ,编程 )题库及答案】100套题目(每套题目包含 3 道题:一道程序填空题、一道程序修改题、一道程序设计题),真实考试的时候,考生输入准考证后计算机随机为你抽取一套考试,每个考生考试时只需考一套题目(包含三道题)二级 c 语言上机试题汇编※※※※※※※※※※※※※※※※※※※※※※※第01套:给定程序中,函数 fun 的功能是:将形参 n 所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针 n 传回所指变量。
例如,输入一个数:27638496 ,新的数:为739 。
请在程序的下划线处填入正确的内容并把下划线删除 , 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的blank1.c中。
不得增行或删行,也不得更改程序的结构!给定源程序:#include stdio.hvoid fun(unsigned long *n){ unsigned long x=0, i; int t;i=1;while(*n)/**********found**********/{ t=*n % __1__;/**********found**********/if(t%2!= __2__){ x=x+t*i; i=i*10; }*n =*n /10;}/**********found**********/*n=__3__;}main(){ unsigned long n=-1;while(n99999999||n0){ printf(please input(0n100000000): ); scanf(%ld,n); }fun(n);printf(\nthe result is: %ld\n,n);}【参考答案】(1)10 (2) 0 (3) x解题思路:第一处: t 是通过取模的方式来得到*n 的个位数字,所以应填:10 。
全国计算机等级考试二级C改错题答案

所属年份:下列给定程序中,函数的功能是:先将字符串中的字符按正序存放到字符串中,然后把中的字符按逆序连接到字符串的后面。
例如,当中的字符串为""时,则中的字符串应为""。
答案: () ( ; <) ()[*]'\'所属年份:;下列给定程序中,函数的功能是:读入一个字符串(长度<),将该字符串中的所有字符按码值升序排序后输出。
例如,若输入"",则应输出""。
答案: ()((); >; ) () ([] > [])所属年份:下列给定程序中函数的功能是:统计所指的子符串在所指的字符串中出现的次数。
例如,若字符串为 ,子字符串为,则应输出。
答案: ()([]) ()([] '\')所属年份:;下列给定程序中函数的功能是:用冒泡法对个字符串进行升序排列。
答案: () ( ; < ; ) ()*( ) *( );所属年份:下列给定程序中函数的功能是:根据整型形参,计算如下公式的值。
例如,若的值为,则应输出。
答案: ()(<) ()(*);所属年份:;下列给定程序中函数的功能是:删除指针所指字符串中的所有空白字符(包括制表符、回车符及换行符)。
输入字符串时用''结束输入。
答案: ()([]) ()[] '\';所属年份:;下列给定程序中,函数的功能是:根据整型参数,计算如下公式的值。
=(×)+(×)+(×)+…+(×)例如,若=,则应输出。
答案: () ( ) ()(<)所属年份:下列给定程序中,函数的功能是:根据整形参的值,计算如下公式的值。
例如,若中的值为,则应输出。
答案: ()( ; < ; ) () ( * );所属年份:; 下列给定程序中函数的功能是:求三个数的最小公倍数。
例如,若给主函数中的变量、、分别输入 ,则输出结果应当是。
大学C语言期末考试练习题程序改错(带详解答案)

y=3.5+x;
printf(“y=%d”);
}
正确的:
int x; float y;
printf(“y=%f”,y);
6 编程计算下面分段函数, 输入 x, 输出 y
x 1 x 0 y 2x 1 0 x 10
3x 11 x 10
main() { int x,y;
第三处改为:if(n%3==0)
第四处改为:sum=sum+n;
8. 求表达式 c ab 的值
#include <stdio.h>
#include <math.h>
int fun(int x, int y);
main()
{ int a,b; float f; scanf(“%d,%d”,a,b); //与改错第 1 题中的 scanf 错误相同 if(ab>0){ // C 语言中乘号不能省略,且用*表示乘法运算 fun(a,b); // 调用带有返回值的函数,应将函数的返回值保存在变量里
} 第四行改为:for(j=0;j<5;j++) 第五行改为:scanf(“%d”,&a[j]); 第七行改为:for(j=1;j<5;j++) 第八行改为:if(max<a[j]) 第十三行改为:printf(“下标:%d\n 最大值:%d”, m,max)
3.用一个函数求两个数之和。 sum(x,y) //函数定义的一般形式 p173-174 { float z; z=x+y; return; //return 语句后面可以返回 0、常量、变量和表达式的值。 } main() { float a,b; int c; / /若定义变量的语句有错误,常见考点有两个:(1)变量的类型,(2)在定
C程序填空改错及答案(可编辑修改word版)

15、结果:52
#include<stdio.h> int fun(int a,int b) { int r,t;
if(a<b) { t=a; a=b; b=t; } r=a%b; while(r!=0) { a=b;
b=r; /*下行有错*/ r=a/b; // r=a%b; } /*下行有错*/ return a; // return b; } main() { int a; a=fun(780,208); printf("%d\n",a); }
#include<stdio.h> void main() {
int num,a,b,c,count=0; /*下行有错*/ while(num=101;num<1000;num++) // for(num=101;num<1000;num++) {
a=num/100; b=num%100/10; c=num%10; /*下行有错*/ if(num+c*100+b*10+a=1333) // if(num+c*100+b*10+a==1333)
if(a%b==0) sum=sum+a/b; } for(i=2;i<=9;i++) if(sum==a*i) /*下行有错 */ count+=i; //count+=1; } printf("%d\n",count); }
7、结果:495.00
#include<stdio.h> float fun(int m, int n) {
C语言改错题-含答案

第1题【程序改错】功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。
例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。
------------------------------------------------------*/#include <conio.h>#include <stdio.h>#include <string.h>void fun (char *s, char *t){/**********FOUND**********/int i;sl = strlen(s);for (i=0; i<sl; i++)/**********FOUND**********/t[i] = s[sl-i];for (i=0; i<sl; i++)t[sl+i] = s[i];/**********FOUND**********/t[2*sl] = "0";}main(){char s[100], t[100];printf("\nPlease enter string s:"); scanf("%s", s);fun(s, t);printf("The result is: %s\n", t);}答案:1). int i,sl;2). t[i] = s[sl-i-1];3). t[2*sl] = '\0'; 或 t[2*sl] = 0;第2题【程序改错】功能:求出以下分数序列的前n项之和。
和值通过函数值返回main 函数。
2/1+3/2+5/3+8/5+13/8+21/13 ……例如:若n = 5,则应输出:8.391667。
------------------------------------------------------*/#include <conio.h>#include <stdio.h>/**********FOUND**********/fun ( int n ){int a, b, c, k; double s;s = 0.0; a = 2; b = 1;for ( k = 1; k <= n; k++ ){/**********FOUND**********/s = (double)a / b;c = a;a = a + b;b = c;}/**********FOUND**********/return c;}main( ){int n = 5;printf( "\nThe value of function is: %lf\n", fun ( n ) );}答案:1). double fun(int n)2). s = s + (double)a / b; 或 s += (double)a / b; 或 s += a /(double)b; 或s=s+a/(double)b;3). return s;第3题【程序改错】功能:读入一个整数m( 5≤m≤20 ),函数getarr调用函数rnd获得m个随机整数,函数sortpb将这m个随机整数从小到大排序。
c语言改错题题库及详解答案

c语言改错题题库及详解答案C语言是一种广泛使用的计算机编程语言,它以其高效性、灵活性和强大的功能而受到程序员的青睐。
然而,即使是经验丰富的程序员也难免会在编写C语言程序时犯一些错误。
下面是一个C语言改错题题库及其详解答案,帮助学习者识别并改正常见的编程错误。
题目1:错误的变量初始化```cint main() {int a;printf("%d", a); // 错误:变量a未初始化return 0;}```详解答案:在C语言中,如果一个变量在使用前没有被显式地初始化,它的值是不确定的。
为了修复这个错误,我们应该在声明变量时对其进行初始化。
```cint main() {int a = 0; // 正确的初始化printf("%d", a);return 0;}```题目2:错误的数组索引```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[5]); // 错误:数组索引越界return 0;}```详解答案:数组索引是从0开始的,所以对于一个有5个元素的数组,有效的索引范围是0到4。
访问数组的第6个元素会导致越界错误。
```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[4]); // 正确的索引return 0;}```题目3:错误的循环使用```cint main() {int i;for (i = 0; i <= 10; i++) {printf("%d ", i);} // 错误:循环条件错误return 0;}```详解答案:循环条件应该是`i < 10`,以确保循环不会无限执行。
```cint main() {int i;for (i = 0; i < 10; i++) {printf("%d ", i);}return 0;}```题目4:错误的函数调用```cint main() {int result = add(5, 3); // 错误:add函数未定义printf("%d", result);return 0;}```详解答案:在调用一个函数之前,需要确保该函数已经被定义。
C语言程序改错答案

C语⾔程序改错答案题⽬:下题是⼀段有关结构体变量传递的程序.答案:1). a.c='a';2). printf("%d,%c",a.x,a.c);3). b.c='y';题⽬:下列程序中,函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后⾯。
例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“ABCDEEDCBA”。
答案:1). for(i=0;i2). t[sl+i]=s[sl-i-1];3). t[sl+i]='\0';题⽬:编写函数fun其功能是在键盘上输⼊⼀个3⾏3列矩阵的各个元素的值(值为整数),然后输出矩阵第⼀⾏与第三⾏元素之积,并在fun()函数中输出。
答案:1). sum=1;2). for(i=0;i<3;i+=2) 或 for(i=0;i<3;i=i+2) 或 for(i=0;i<3;i++,i++)3). sum=sum*a[i][j]; 或 sum*=a[i][j];题⽬:函数fun的功能是:⽤下⾯的和式求圆周率的近似值。
直到最后⼀项的绝对值⼩于等于0.0001。
π 1 1 1— = 1 - — + — - — + ...2 3 5 7请改正程序中的错误,使它能得出正确的结果。
答案:1). #include "math.h"2). float s=0,t=1,p=1; 或 float s=0,p=1,t=1; 或 float p=1,s=0,t=1; 或 float p=1,t=1,s=0; 或 float t=1,p=1,s=0; 或 float t=1,s=0,p=1;3). while(fabs(t)>1e-4) 或 while(0.00010.0001)4). printf("pi=%f\n",★s★*★4★);题⽬:给定程序MODI1.C中函数fun的功能是:将长整型数中每⼀位上为奇数的数依次取出,构成⼀个新数放在t中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
说明:在程序中用/* */包围的部分是题目的答案,表示用相应的语句修改程序或完成程序。
共有31套试题。
0.⒈已知 f(n)=f(n-1)+2f(n-2)-5f(n-3), f(0)=1,f(1)=2,f(2)=3,求 f(0)+f(1)+……+f(30)。
程序中有一处错误。
(1) 输入原程序并运行,记录运行结果,将结果填入答题窗口的①。
(程序名由考生自定)(2) 更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口的②。
#include <stdio.h>main(){long f0=1,f1=2,f2=3,f,s,i;s=f0+f1+f2;for (i=1; i<=30; i++) /*for (i=3; i<=30; i++)*/{ f=f2+2*f1-5*f0;s+=f;f0=f1;f1=f2;f2=f; }printf("%ld\n",s);}⒉已知24有8个因子,而24正好能被8整除,求[1,100]之间有多少个整数能被其因子的个数整除?在下列程序中填上缺少的语句或另外编写具有同样功能的程序,运行程序,将结果填入答题窗口的①。
#include "stdio.h"#include "math.h"main(){ int i,j,k,n=0;for(i=1;i<=100;i++){ k=0;for(j=1;j<=i;j++)if(fmod((float)i,(float)j)==0.0)k++;if( ________ ) /*i%k==0*/n++;}printf("%d\n",n);}1.⒈求解方程 x^2- 7912x +12976 = 0 的最大实根。
程序中有一处错误。
(1) 输入原程序并运行,记录运行结果,将结果填入答题窗口的①。
(程序名由考生自定)(2) 更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口的②。
#include <stdio.h>#include <math.h>main(){float b,c,d,x;b=-7912.0;c=12976.0;d=b*b-4*c;d=sqrt(d);x=(-b-d)/2; /*x=(-b+d)/2;*/printf("%8.2f\n",x);}⒉已知一数列,第一、第二、第三个数分别为1、2、3,从第四个数起等于前3个数之和,求该数列的第25个数。
在下列程序中填上缺少的语句或另外编写具有同样功能的程序,运行程序,将结果填入答题窗口的①。
#include <stdio.h>main(){long int x[26],i;x[1]=1.0;x[2]=2.0,x[3]=3.0;for(i=4;i<=25;i++){__________; /*x[i]=x[i-1]+x[i-2]+x[i-3];*/}printf("%12ld\n",x[25]);}2.⒈已知1990年元旦是星期一,问1990年到2010年元旦中有几个是星期一(包括 1990年元旦星期一.)?(星期日用0表示,星期一-六分别用1-6表示。
)程序中有一处错误。
(1) 输入原程序并运行,记录运行结果,将结果填入答题窗口的①。
(程序名由考生自定)(2) 更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口的②。
#include <stdio.h>main(){int i,d,n=0; /*int i,d,n=1;*/d=0;for (i=1990; i<2010; i+=1){if ((i%4==0 && i%100!=0)||(i%400==0)) d+=366;else d+=365;if ((1+d)%7==1) n++; }printf("%d\n",n);}⒉求三位数中的素数的个数。
在下列程序中填上缺少的语句或另外编写具有同样功能的程序,运行程序,将结果填入答题窗口的①。
#include <math.h>main(){int x,s=0,k;for(x=101;x<1000;x++){for(k=2;k<=sqrt(x);k++){if(x%k==0) break;}if(k>sqrt(x)); /*s=s+1;*/}printf("%d\n",s);}3.⒈下列程序中fun()函数的功能是通过形参得到圆的面积。
试求半径为13.437 的圆的二分之一面积。
程序中有1个错误。
(1) 输入原程序并运行,记录运行结果,将结果填入答题窗口的①。
(程序名由考生自定)(2) 更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口的②。
#include <stdio.h>double fun(double r){double s;s=1/2*3.14159*r*r; /*s=1.0/2*3.14159*r*r;*/return(s);}main(){double r=13.437;printf("%10.4f\n",fun(r));}⒉某一正整数,进行递减,第一次减去该数的一半再减一,以后每次都减去前一次剩下的数后再减一,直到第十次减后,剩1。
求该数。
在下列程序中填上缺少的语句或另外编写具有同样功能的程序,运行程序,将结果填入答题窗口的①。
#include <stdio.h>main(){int times,last,next;times=10;next=1;while(times>0){last=(next+1)*2;next=last;__________; /*times--;*/}printf("%d\n",last);}4.⒈下列程序的功能是:已知a、b、c,求二元一次方程 ax^2+bx+c=0的最大的根的程序。
(1) 输入原程序并运行,记录运行结果,将结果填入答题窗口的①。
(程序名由考生自定)(2) 更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口的②。
#include <stdio.h>#include <math.h>#define a 1.3#define b -4#define c -11main(){double x;double d;d=sqrt(b*b-4*a*c);x=-b+d;if (x<-b-d) x=-b-d;x=x/2*a; /*x=x/(2*a);*/printf("%10.4f\n ",x);}⒉一个正整数如果等于它的因子之和,该数称为"完数",例如6的因子为1,2,3而6=1+2+3,因此6是完数。
求1000内的完数的个数。
在下列程序中填上缺少的语句或另外编写具有同样功能的程序,运行程序,将结果填入答题窗口的①。
#include <stdio.h>main(){int i,j,s,sum=0;for(j=2;j<=1000;j++){s=j;for(i=1;i<j;i++)if(__________) s=s-i; /*j%i==0*/if(s==0) sum++;}printf("%d\n",sum);}5.⒈水仙花数是一个三位正整数,它等于其各位数字的立方和,例如,153=1^3+5^3+3^3,153是一个水仙花数。
求最大的水仙花数。
程序中有一处错误。
(1) 输入原程序并运行,记录运行结果,将结果填入答题窗口的①。
(程序名由考生自定)(2) 更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口的②。
#include <stdio.h>main(){int i,a,b,c,max;for(i=1;i<100;i+=2) /*for(i=100;i<1000;i++)*/{a=(i/100);b=(i%100)/10;c=i%10;if(i==a*a*a+b*b*b+c*c*c){max=i;}}printf("%d\n",max);}⒉一场10000m的跑步竞赛在400m的环形跑道上进行,假设第一名速度是末名1.25倍,问第一名在跑完全程的过程中,与末名相遇多少次?(注:①起跑时算一次;②不妨设第一名跑一圈需1单位时间。
)程序中有一处错误。
在下列程序中填上缺少的语句或另外编写具有同样功能的程序,运行程序,将结果填入答题窗口的①。
#include <stdio.h>main(){int i,k=1,m=1;float t;t=10000.0/400;for (i=1; i<=t*10; i+=1)if ((1.25-1)*i/10>=m) { m++; ; } /*k++;*/printf("%d\n",k);}6.⒈水仙花数是一个三位正整数,它等于其各位数字的立方和,例如,153=1^3+5^3+3^3,153 是一个水仙花数。
求所有水仙花数之和。
程序中有一处错误。
(1) 输入原程序并运行,记录运行结果,将结果填入答题窗口的①。
(程序名由考生自定)(2) 更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口的②。
#include <stdio.h>main(){int i,a,b,c,s,max;s=0;for(i=1;i<100;i+=2) /*for(i=100;i<1000;i++)*/{a=(i/100);b=(i%100)/10;c=i%10;if(i==a*a*a+b*b*b+c*c*c){s=s+i;}}printf("%d\n",s);}⒉下列程序是求正整数a,b的最大公约数n。
在下列程序中填上缺少的语句或另外编写具有同样功能的程序,运行程序,将结果填入答题窗口的①。
#include <stdio.h>main(){long int m,a,n,b,t;a=987510324;b=946328304;m=a;n=b;if(a<b){t=m; m=n; n=t;}while(m%n!=0){t=m%n;; /*m=n;*/n=t;}printf("%d\n",n);}7.⒈下面的程序是求1000以内的质数的个数。