2013年程序改错、填空、编写答案
C程序填空改错及答案
1、结果:75#include "stdio.h"fun( int m, int xx[] ){int i,j,k=0;xx[k++]=1;for( i=2; i<=m; i++)for( j=2; j<i; j++)if( _____________) // i%j==0 {xx[k++]=i;break;}_____________; //return k}main(){int zz[100];printf("%d\n",fun(100,zz));}2、结果:8.640500#include <stdio.h>#include <math.h>double fun(int n){/*下行有错*/int s=0; int i; //double s=0.0; int i; for(i=1;i<=n;i++)s+=log(1.0*i);s=sqrt(s);/*下行有错*/return ; //return s;}main(){printf("%lf\n",fun(30));}#include <stdio.h>void main(){int i,n=0;for(i=10006;i<=99996;i++)if(i%10==6 && i%3==0)n++;printf("%d\n",n);}/*求1到1000之内能被7或11整除、但不能同时被7和11整除的整数个数。
请编写程序。
*/#include <stdio.h>void main(){int i,n=0;for(i=1;i<=1000;i++)if((i%7==0||i%11==0)&&(!(i%7==0&&i%11==0))){n=n+1;}printf("%d\n",n);}#include<stdio.h>int fun(int m){int i,k;for(i=m+1;;i++){for(k=2;k<i;k++)/*下行有错*/if(i%k!=0) break; //if(i%k==0) break; if(k==i)/*下行有错*/return k; //return i;}}main(){int n;scanf("%d",&n);printf("%d\n",fun(n));}6、结果:5#include <stdio.h>#include <math.h>main(){int a,b,sum,count=0,i;/*下行有错 */for (a=1; a<=700; a--) // for (a=1; a<=700; a++) {sum=0;for(b=1;b<=a;b++){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){int i;double p=1.0;for(i=1;i<=m;i++) p=p*i;for(i=1;i<=n;i++)__________ //p=p/i; for(i=1;i<=m-n;i++) p=p/i;__________ //return p;}main(){ printf("%.2f\n",fun(12,8));}#include<stdio.h>main(){int p,q,r,s,n=0;for(p=1;p<=100;p++)for(q=p;q<=100;q++)for(r=q;r<=100;r++)for(s=r;s<=100;s++)if(1.0/p+1.0/q+1.0/r+1.0/s==1) n++;printf("%d",n);}#include<stdio.h>/*下行有错*/IsPrime(integer n) // int IsPrime(int n) { int i,m;m=1;for(i=2;i<n;i++)/*下行有错*/if(n%i) // if(n%i==0){m=0;break;}return(m);}main( ){ int j,k=2310,sum=0;for(j=2;j<=k;j++)if((!(k%j))&&(IsPrime(j)))sum+=j;printf("%d\n",sum);}#include<stdio.h>main(){int i,t=1,s=0;for(i=1;i<=101;i+=2){s=s+t*i;__________ // t=t*(-1); }printf("%d\n",s);}#include "stdio.h"int fun(int a,int b){int i,count=0,low,high;for ( i=a;i<=b;i++ ){low=i%10;high=i/100;if( _____________ ) // if(low==high )count++;}return count;}main(){printf("%d\n",_____________ ); //fun(300,900) }#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) count++;}printf("%d\n",count);}13、结果:23.197745#include<stdio.h>#include<math.h>double fun(int n){ double sum,s0,s1,s2,s;int k;sum=1.0;if(n<=2)sum=0.0;s0=0.0; s1=0.0; s2=1.0;for(k=4;k<=n;k++){ s=s0+s1+s2;sum+=__________;// sum+=sqrt(s); s0=s1;s1=s2;s2=s;}__________ //return sum;}main(){ printf("%f\n",fun(10));}#include<stdio.h>#include<math.h>main(){ int i,ge,shi,bai,n=0;for(i=1;i<1000;i++){ ge=i%10;shi=i/10%10;bai=i/100;if(i==pow(ge,3)+pow(shi,3)+pow(bai,3)) n++;}printf("%d\n",n);}#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>long fun(int g){switch(g){case 0: return 0;case 1: return 1;case 2: return 1;}return( __________);// return( fun(g-1)+fun(g-2)); }main(){long fib;int n=25;fib=__________ ;//fun(n);printf("%ld\n",fib);}#include<stdio.h>/*下行有错*/void IsPrime(int n) // int IsPrime(int n) { int i,m;m=1;for(i=2;i<n;i++)if(!(n%i)){ m=0;/*下行有错*/continue; //break;}return(m);}main( ){ int j,k=2310,sum=1;for(j=2;j<=k;j++)if((!(k%j))&&(IsPrime(j)))sum*=j;printf("%d\n",sum);}#include<stdio.h>double fun(int n){double s=1.0;int i;for(i=1;__________ ;i++) //i<=n s=s-1.0/(i*(i+1));__________ //return s;}main(){printf("%.4f\n",fun(7));}#include<stdio.h>age( int n ){ int c;if( n==1 ) c=10;else __________ //c=age(n-1)+2;return(c);}main(){ int n=10;printf("%d\n", __________ ); // age(n) }21、结果: 5118372#include <stdio.h>#include <math.h>main(){ long sum;int i;sum=0;for (i=5;i<=80;i++){/*下行有错*/if (fmod(i,2)==0) // if (fmod(i,2)==1) sum+=i*i*i;}printf("%ld\n",sum);}#include <stdio.h>main(){ int i,a,b,c,d,n=0;for (i=1000;i<=9999;i++){d=i%10;c=i/10%10;b=i/100%10;a=i/1000;if(a*a+b*b+c*c+d*d==100)n++;}printf("%d\n",n);}#include<stdio.h>int mcf(int a,int b){ int temp;while(b){__________a=b;b=temp;}return a;}main(){printf("%d\n",__________ ); // mcf(234,338) }#include <stdio.h>#include <math.h>int prime(int n){ int yes, i;if(n<=1) {return 0;}yes=1;for(i=2; i<=sqrt(n); i++) /*下行有错*/if(n%i!=0) //if(n%i==0) { yes=0; break;}return yes;}main(){int sum=0, i;for(i=2;i<500; i++)if(prime(i))/*下行有错*/sum+=1; //sum+=i;printf("%d\n", sum);}#include <stdio.h>main(){ int i,a,b,c,n=0;for (i=101;i<=999;i+=2){c=i%10;b=i/10%10;a=i/100;if((a+b+c)%12==0)n++;}printf("%d\n",n);}#include<stdio.h> main(){int i,s=1;for(i=9;i>=1;i--) s=2*(s+1) ; printf("%d",s);}#include <stdio.h>#include <math.h>int su(int x){int j,k;k=sqrt(x) ;for(j=2;j<=k;j++){if (x%j==0) break;}if (x>1&&j>k) return (1);else return (0);}void main(){ long sum=0;int a,i,j;for (a=11;a<=99;a++){ i=a%10;j=a/10;if (su(a)&&su(i*10+j)){sum=sum+a;printf("%5d",a);} }printf("\n %ld",sum);}#include <conio.h>#include <stdio.h>#include <math.h>main(){ long s;long k,n,sum=0,count=0;for (n=2;n<=750;n++){ if (n<10) k=10;else if (n<100) k=100;else k=1000;s=n*n;if (s%k==n) {count++;sum+=n;printf("%4d",n);} }printf("\n%5ld,%5ld",count,sum);}27下面的程序中,函数fun的功能是:根据形参m,计算下面公式的值。
2013年9月全国计算机等级《二级C语言程序设计》上机模考试卷(2)-中大网校
2013年9月全国计算机等级《二级C语言程序设计》上机模考试卷(2)总分:100分及格:60分考试时间:120分一、选择题(每小题1分,共40分)(1) 有下列程序:void sort(int a[],int n) { int i,j,t;for(i=0;i<n-l;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]一a[j];a[j]=t;} }main(){ int aa[10]:{1,2,3,4,5,6,7,8,9,10),i;sort(aa+2,5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序运行后的输出结果是( )。
A. 1,2,3,4,5,6,7,8,9,l0,B. 1,2,7,6,3,4,5,8,9,10,C. 1,2,7,6,5,4,3,8,9,10,D. 1,2,9,8,7,6,5,4,3,10,(2) 执行下列程序后,变量a,b,C的值分别是( )。
int x=5,y=4;int a,b,c;a=(--x==y++)?X:++y;b=++x:c=y:A. a=5,b=5,c=5B. a=4,b=5,c=5C. a=5,b=6,c=5D. a=1,b=5,c=6(3) 设有如下定义:int arr[]={6,7,8,9,10);int*ptr:ptr=arr;*(ptr2)=2;printf("%d,%d\n",*ptr,*(ptr2)):则下列程序段的输出结果为( )。
A. 8,10B. 6,8C. 7,9D. 6,2(4) 以下所列的C语言常量中,错误的是()。
A. 0xFFB. 1.2e0.5C. 2LD. ‘72’(5) 数字字符0的ASCII值为48,运行以下程序的输出结果是( )。
2013全国计算机等级考试新大纲二级C语言题库及参考答案
参考答案第一套题二、程序填空题本题是根据给定的公式来计算函数的值。
第一处:程序中使用双精度double类型进行计算,所以函数的返回值类型也为double,所以应填:double。
第二处:当i等于1时,则返回f1函数的值,所以应填:f1。
第三处:如果i不等于1,则返回f2函数的值,所以应填:f2。
三、程序修改题解题思路:第一处: 试题要求返回字符串的首地址,所以应改为:char *fun(char *s,char *t)第二处: 取字符串指针ss的下一个位置,所以应改为:ss++;。
第三处:取字符串指针tt的下一个位置,所以应改为:tt++;。
四、程序设计题解题思路:本题是考察字符串的操作。
1. 由于函数fun1是将字符串中字符循环左移一个位置,并通过实参w返回循环左移一个位置的字符串。
2. 利用循环for语句来操作多少个字符(m)需要循环左移。
参考答案:void fun(char *w, int m) /* 可调用fun1函数左移字符*/{int i;for(i = 0 ; i < m ; i++) fun1(w);}第二套题一、选择题解题思路:第一处:计算好的平均值通过形参av返回,所以应填:*av。
第二处:计算小于平均值且最接近平均值的位置j,所以应填:i。
第三处:返回该数,所以应填:x[j]。
三、程序修改题解题思路:第一处:函数的返回是浮点型数,所以应改为:float fun(int n)。
第二处:for的终止条件应是i<=n。
四、程序设计题解题思路:本题是利用两重循环给二维数组右上三角元素中的值乘以m。
参考答案:int fun ( int a[][N], int m ){int i, j;for(i = 0 ; i < N ; i++)for(j = i ; j < N ; j++)a[i][j] *= m ;}第三套题一、选择题解题思路:第一处:如果n是奇数,则中间的元素不动,所以应填:1。
省等级考试C程序改错,程序填空(修正版、附答案)
说明:在程序中用/* */包围的部分是题目的答案,表示用相应的语句修改程序或完成程序。
共有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) 更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口的②。
c语言题库改错题及详解答案
c语言题库改错题及详解答案C语言是一种广泛使用的计算机编程语言,它以其强大的功能和灵活性而闻名。
在学习和掌握C语言的过程中,练习题库中的改错题是提高编程技能的有效方式。
以下是一些常见的C语言改错题及其详解答案。
1. 题目:编写一个程序,计算并输出1到10的累加和。
错误代码:```cint main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum = sum + i;}print("Sum is %d", sum);return 0;}```错误点: `print` 函数应为 `printf`。
正确代码:```c#include <stdio.h>int main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum += i; // 可以简化为 sum += i;}printf("Sum is %d\n", sum);return 0;}```2. 题目:编写一个程序,判断输入的年份是否为闰年。
错误代码:```cint main() {int year;printf("Enter a year: ");scanf("%d", &year);if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```错误点:逻辑判断的括号使用不正确。
正确代码:```c#include <stdio.h>int main() {int year;printf("Enter a year: ");scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```3. 题目:编写一个程序,实现字符串的反转。
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;}```详解答案:在调用一个函数之前,需要确保该函数已经被定义。
2013秋C语言试卷标准答案(A卷)-20130114
一、单项选择题,每题 2 分,共 15 题。
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. D. 具有前述三个特征 B. _123 C. C. D. D. 80 A. a[10]=2; C. &a[i]和 a[i] C. b=fun(a); D. 嵌套调用和递归调用均可。 B. 地址 C. int *(q[5]); 3.0 x>10&x<20 else 总是与其之前最近的 if 配对
(共 35 题。
1.答案:m/10%10*100+m/100*10+m%10 2.答案:0 3.答案:36 4.答案:11 5. 答案:3
(共 15 分)
四、程序改错题, 每题 5 分。
(共 10 分)
注:共 4 题,每题中存在 5 个错误。限选 2 题。题目间评分不累计。 1.题目:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
a=0; //改为:sum=0; //改为: for(i=0;i<3;i++) //改为:scanf(“%d”,&a[i][j]); //改为:sum=sum+a[i][i]; 或 sum+=a[i][i]; //改为:printf("sum=%d\n",sum);
for(i=0;i<3;i++);
#define N=11
//改为:#define N 11 // 改为:for(i=N-2;i>=0;i--)
for(i=N-1;i>=0;i--)
a[i]=a[i-1];//改为:a[i+1]=a[i]; exit;}//改为:break;} for(i=0;i<=N;i++) //改为:for(i=0;i<N;i++)
实验3、循环结构程序设计(有答案)
循环结构程序设计1.程序填空下面程序的功能为:计算1~100之间的偶数之和,完成以下的程序并运行出正确的结果。
# include <stdio.h>void main(){int i,s=0;/**************found*************/i=2 ;while(i<=100){s=s+i;/**************found**************/i+=2 ;}printf(“s=%d”,s);}运行结果:S=25502.程序改错(1) 下面程序的功能为:计算10!,修改以下的程序并上机运行通过。
#include <stdio.h>void main(){int n,t;for(n=1,t=1,t<10,t++);n=n*t;printf(“10!=%d\n”,n);}正确的程序:#include <stdio.h>void main(){int n,t;for(n=1,t=1;t<=10;t++) //句尾不能有“;”n=n*t;printf(“10!=%d\n”,n);}运行结果:10!=3628800(2) 下面程序的功能为:计算1~100之间能被3和7整除的数之和,修改以下的程序并上机运行通过。
#include <stdio.h>void main(){int i,s;s=0;while(i<=100);{if(i%3==0||i%7==0)s+=i;i=i+1;}printf(“s=%d”,s);}正确的程序:#include <stdio.h>void main(){int i,s;s=0; i=1;while(i<=100) //句尾不能有“;”{if(i%3==0&&i%7==0)s+=i;i=i+1;}printf(“s=%d”,s);}运行结果:S=2103、有一个分数序列:2/1、3/2、5/3、8/5、13/8、……,编写一个C程序,求出这个数列的前30项之和。
2013计算机等级考试二级C语言程序改错题
2013计算机等级考试二级C语言程序改错题1、下列给定程序中,函数fun的功能是:将s所指字符串的郑旭和反序进行连接,形成的新串放在t所指的数组中2、函数fun的功能是:用下面的公式求π的近似值,知道最后一项的绝对值小于指定的数为止。
3、函数fun的功能是:传入一个整数m,计算如下公式的值。
T=1/2-1/m。
4、函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。
、从参数1-55,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的属猪5中,这些数的个数作为函数值返回。
规定函数中a1放个位数,a2放十位数。
6、求出s所指字符串中最后一次出现的t所指字符串的地址,并通过函数值返回,在主函数中输出从此地址开始的字符串;若未能找到,则函数值为null。
7、按以下递归公式求函数的值fun(n)={10 (n=1)。
8、函数fun和funx的功能是:用二分法求方程2x-4x+3x-6=0的一个根,并要求绝对误差不超过0.001。
9、首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的升序字符接在c所指的数组的尾部。
10、计算整数n的阶乘。
11、计算函数F(x,y,z)=(x+y)的值。
其中x和y的值不相等,z和y的值不相等。
12、利用折半查找法查找整数m在数组中的位置。
若找到,返回其下标值;否则,返回-1。
13、求三个数的最小公倍数。
14、将s所指字符串中最后一次出现的鱼t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。
要求t1和t2所指字符串的长度相同。
15、逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII值大或相等的字符一次存放到c所指的数组中,形成一个新的字符串。
16、根据以下公示求π值,并作为函数值返回。
17、将s所指字符串中出现的与t1所指字符串相同的子串全部替换为t2所指字符串,所形成的新串放在w所指的数组中。
java程序改错12道及答案
{
/***********FOUND***********/
if(i%2==0)
s=s+i;
i=i+2;
}
/***********FOUND***********/
product=i;
}
System.out.println("偶数之和是 : "+sum);
System.out.println("奇数之积是 : "+product);
3)while(i<=10)或while(i<11)
4)}
/*-------------------------------------------------------
【程序改错】
---------------------------------------------------------
题目2:计算 1/1+1/2+1/3+...+1/100 的值
-------------------------------------------------------*/
public class Prog1
{
public static void main( String args[ ])
{
/***********FOUND***********/
public static void main (args[])
{
/***********FOUND***********/
int n=100,sum=1;
while(n>0)
-程序改错部分试题及答案
第1题/*i【程序改错】功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
------------------------------------------------------------------------------------ * #include <stdio. h>ttdefine N 11main(){int i,number,a[N] = {l,2,4,6,8t9t12,15,149,156);printf(^please enter an integer to insert in the array:\n n):/**********FOUND**********/scanf(”%d&number)printf("The original array:\rT);for(i=0;i<N-l;i++)printf (^%5(1 M,a[i]);printf(*\n n);/**********FOUND**********/for(i=N-l;i>二0;i--)if(number<=a[il)/**********FOUND**********/a[i]=a[i-l]:else{a[i+l]=number;/**********FOUND**********/exit;}if(number<a[0]) aL0]二number;printf(^The result array:\n”);for(i=0;i<N;i++)printf(n%5d w,a[il);printf(H\n H);}第2题/♦ ------------------------------------------------------------------------------------ 【程序改错】功能:求如下表达式:S = 1 + ——+ ——+ .................. + ------------1+2 1+2+3 1+2+3+ ......... +n------------------------------------------------------------------------------------ */ #include <stdio.h>main()int n;double fun ();printf ("Please input a nilmber:R):/**********FOUND**********/print("^d^.n);printf(H%10. 6f\n w,fun(n));}/♦♦********FOUND**********/fun(int n){int i,j,t;double s;s=0;/**********POUND**********/while(i=l;i<=n;i++);{t=0;for(j=l;j<=i;j++)t=t+j;/ **********P*OL1ND**********/=s+l/t;}return s;}第3题/* ---------------------------------------------------------- 【程序改错】功能:判断m是否为素数,若是返回1,否则返回0。
2013年计算机二级上机真题及标准答案
return sqrt(s);
}
★第18套 函数fun,计算 前n项之和。若x=2.5,n=15时,函数值,函数值1.917914
填空题: 1 -1 t
改错题: for(i=1;i<=3;i++) if(k>=0&&k<=6)
程序题:
double fun(int n)
改错题: c=tolower(c); c=c+5;
程序题:
double fun(int n)
{ int i;
double s=0,a=0;
for(i=1;i<=n;i++)
{
a+=sqrt(i);
s+=a;
}
return s;
}
★第16套 函数fun的功能是进行字母转换。若形参ch中是小写英文字母,则转换成对应的大写英文字母;若ch中是大写英文字母,则转换成对应的小写英文字母
i+=2;
}
}
★第8套 给定程序中,函数fun,找出100-999之间所有整数中各位上数字之和为X的整数,然后输出;符合条件的整数个数作为函数值返回
填空题: 999 t/10 x
改错题: void fun(long s,long *t) while(s>0)
程序题:
}
return n;
}
★第5套 给定程序中,函数fun的功能:在形参ss所指字符串数组中,串长超过K的把右边的字符删除,保留左边K个,SS字符串共有N个字符串,串长小于M
填空题: [M] N【5.1.3】0
改错题: t=1; return(2*s);
2013年9月全国计算机等级《二级C语言程序设计》上机模考试卷(5)-中大网校
2013年9月全国计算机等级《二级C语言程序设计》上机模考试卷(5)总分:100分及格:60分考试时间:120分一、选择题(每小题1分,共40分)(1) 下列叙述中正确的是( )。
A. 在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式B. 实型变量中允许存放整型数C. 若a和b类型相同,在执行赋值a=b后,b中的值将放入a中,但b中的值不变D. 在C程序中,求余算符“%”两边的类型相同时才能进行运算(2) 软件生命周期中,花费最多的阶段是( )。
A. 详细设计B. 软件编码C. 软件测试D. 软件维护(3) 假定X和Y为double型,则表达式x=2,y=x+3/2的值是( )。
A. 3.500000B. 3C. 2.000000D. 3.000000(4) 有如下程序:main(){ int x=1,a=0,b=0;switch(x){case 0:b++;case 1:a++;case 2:a++.b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是( )。
A. a=2,b=1B. a=1,b=1C. a=1,b=0D. a=2,b=2(5) 设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是( )。
A. x&&yB. x<=yC. x||y+z&&y—ZD. !((x<y)&&!z||1)(6) 有下列程序:main(){ char s[]="abcde";s+=2:printf("%d\n",s[0]);}执行后的结果是( )。
A. 输出字符a的ASCII码B. 输出字符c的ASCII码C. 输出字符cD. 程序出错(7) 设有以下定义union data{int d1;float d2;)demo;则下面叙述中错误的是( )。
A. 变量demo与成员d2所占的内存字节数相同B. 变量demo中各成员的地址相同C. 变量demo和各成员的地址相同D. 若给demo.d1赋99后,demo.d2中的值是99.0(8) 要求通过while循环不断读入字符,当读入字母N时结束循环,若变量已正确定义,下列正确的程序段是( )。
程序改错题答案
}
}
7循环输入x,n,调用递归函数计算,显示x的n次方。
当输入n小于0时,结束循环。
#include <stdio.h>
float f(float x,int n)
{ /******* 1 ******/
if(n==0)
return 1;
else
/****** 2 ******/
scanf("%d",&mm);
for(i=0;a[i]!='\0';i++) /*各字符与mm作一次按位异或*/
a[i]=a[i]^mm;
puts(a);
/*** 各字符与mm再作一次按位异或 ***/
/******** 3 *******/
for(i=0;a[i]!='\0';i++)
/****** 4 ******/
void main()
{ int i,n;
struct axy { float x,y;};
/***** 1 *****/
struct axy*a;
/***** 2 *****/
scanf("%d",&n);
a=(struct axy*) malloc(n*sizeof(struct axy));
for(i=0;i<n;i++)
/******** 3 *******/
if(a[i]==b[j]) break;
/******* 4 ********/
if(j<7)
printf("%d ",a[i]);
C语言程序改错题及答案
if(x<min) min=x;
}
printf("%f,%f\n",max,min);
}
10、.在考生目录下,有Modify.c程序,该程序中"/***** N *****/"的下
一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。
该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。
for(i=0;i<sl;i++)
t[i]=s[i];
for(i=0;i<sl;i++)
/********1********///t[sl+i]=s[s1-1-i];
t[sl+i]=s[sl-i];
/********2********/
t[sl]="\0";//t[sl+s1]=’\0’;
}
void main()
/***** 2 *****/
for(i=1;i<strlen(str);i++)//i=0
if(str[i]>='a'&& str[i]<='z') str[i]=str[i]-32 ;
puts(str);
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{ int n,i;
/***** 1 *****/
char str;// char*str
(完整word版)C语言程序设计2013期末试题(含答案)
已经反复修改调试过了,应该没问题了。
如果对答案有什么疑问可以直接私戳我qq553915228 李添锐一、写出下列程序段的运行结果(40分)1.(4分)int i=1, j=2, k=4;printf("%f,", i-(float)(j/k));printf("%d, ", j<3<k);k+=(i+k)/10+0.5 ;printf("%d,",k);printf("%d", (j=1)?2:0);输出:1.000000,1,(此处有空格)4,22.(4分)char a=0x12303F;printf("%d,",a);a='a'-'B'+'E';printf("%c",--a);输出:63,c3.(4分)int i = 3, j = 2;if (!i&&i--)i+=2;i++;printf("%d,", i);do{j+=i;i/=2;if(j>8) break;} while(i=3);printf("%d\n", j);输出:4,9(此处需要换行即\n)4.(4分)intp[7]={11,13,15,17,18,20,23},i=0,k=0;for (;p[i]%2;){switch(p[i]%5){case 1: k+=p[i++]; break;case 3: k+=p[i];default: i++;}}printf("%d,%d",i,k);输出:4,245.(4分)char s[]="1234", *p;for (p=s+3; p>s; p--){printf("%s,", p);}输出:4,34,234,6.(4分)int f(){static int j=1; int k=1;return ((++j)+(++k));}int main(){int i;for (i=0; i<3; i++)printf("%d,", f());return 0;}输出:4,5,6,7.(4分)void fun(int i){if (i){fun(i-3);printf("%d,",i);}}int main(){fun(9);return 0;}输出:3,6,9,8.(4分)union{struct { int a,b,c; } s;int a[3];}u;int main(){u.s.a=0; u.s.b=1; u.s.c=2;*(u.a+1)=3; u.a[2]=4;printf("%d,%d", u.s.a, u.s.b);return 0;}输出0,39.(4分)int s[3][3]= {1,2,3,4,5,6,7,8,9}; int sum;sum = *(s[0]) + *(s[1]+1) + *(s[2]+2);printf("%d", sum);return 0;输出:1510.(4分)FILE *fp; int e; long len; char c; fp=fopen("pi.tmp","w");fputs("3.1415926", fp);fclose(fp);fp=fopen("pi.tmp","r");fscanf(fp,"%d%c",&e,&c);len=ftell(fp);fseek(fp, -1L, SEEK_END);len = ftell(fp)-len;printf("%ld",len);输出:6二、改错题(20分)已知数据文件“c:\data.dat”以二进制方式存有300个整数,函数readDat( )把这些数存入数组a中,函数fun( )的功能是:依次从数组a中取出一个数,若该数连续大于它之前的五个数且该数是偶数(若之前不满五个数,则不统计),统计满足此条件的个数cnt,并把这些数按从大到小的顺序存入数组b中。
实验六参考答案
第一套1、程序填空题1)【参考答案】第一处:* 第二处:'Z' 第三处:tt2)【参考答案】第一处:char 第二处:ch<='9' 第三处:'0'2、程序改错题【参考答案】第一处:c=c-32;改为c=c+32; 第二处:c=c-5;改为c=c+5;2、程序设计题【参考答案】void fun(char *s){ int i=0;/*假如s[i]不为字符串结束符,则继续循环,否则退出循环*/while (s[i]!='\0')/*假如s[i]为大写字母Z 且在字符串中下标为奇数的位置上,则转换成小写字母z*/{ if ((s[i]=='Z') && (i%2==1))s[i]='z';/*假如s[i]为除大写字母Z 以外的字母,则直接转换成该字母的小写字母状态的下一个字母*/else if ((s[i]>='A' && s[i]<'Z') && (i%2==1))s[i]=s[i]+33;i++;}}【解题思路】将s 所指字符串中下标为奇数位置上的大写字母转换为字母序列中的下一个小写字母,若该位置上是小写字母,则不转换;若该位置上是大写字母Z,则仅转换成小写字母z。
判断字符为大写字母的方法是:判断字符的ASCII 值是否大于A小于Z。
判断下标为奇数,用i%2 等于1 来判断。
1、程序填空题1)【参考答案】第一处:n >0 第二处:n%10+'0' 第三处:str[i]= ′\0′2)【参考答案】第一处:s[i] >= ′0′ &&s[i]< = ′9′第二处:s[i]- ′0′第三处:n2、程序改错题【参考答案】第一处:if(('a'<=tt[i]) || (tt[i]<='z'))改为if(('a'< =tt[i]) && (tt[i]< ='z'))第二处:tt[i]+=32;改为tt[i]-=32;3、程序设计题【参考答案】long fun(char *p){ long n=0;攀枝花学院计算机基础教研室第1页共3页int flag=0;/*通过循环语句移动指针,取出指针所在位置上的字符*/while(*p!='\0'){ if(*p=='-') /*判断其是否为负号*/flag=1;else if (*p=='+') /*判断其是否为正号*/flag=0;else /*判断其是否为数字字符*/n=n*10+(*p-'0'); /*将数字字符转化为相应的数值*/p++;}if (flag==1) n=-n;return n;}【解题思路】通过循环语句移动指针,取出指针所在位置上的字符,先判断其为正负号还是为数字字符,如果为数字字符则将其转化为相应的数值,否则作正负标记。
c语言程序填空含答案
【程序填空】功能:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
len=length(str...);I.nt length ........(p)N.++..;P.++..;【程序改错】功能:将一个字符串中的大写字母转换成小写字母。
bool (char)......fun(char *c)fun= c;(return *c)..........puts(*p);(putchar(*p)).............【程序设计】功能:编写函数实现两个数据的交换,在主函数中输入任意三个数据,调用函数对这三个数据从大到小排序。
------------------------------------------------*/ #include<stdio.h>void wwjt();void swap(int *a,int *b){/**********Program**********//********** End **********/ }main(){int x,y,z;scanf("%d%d%d",&x,&y,&z);if(x<y)swap(&x,&y);if(x<z)swap(&x,&z);if(y<z)swap(&y,&z);printf("%3d%3d%3d",x,y,z);wwjt();}void wwjt(){FILE *IN,*OUT;int m,n;int i[2];IN=fopen("in.dat","r");if(IN==NULL){printf("Read FILE Error"); }OUT=fopen("out.dat","w"); if(OUT==NULL){printf("Write FILE Error"); }for(n=0;n<3;n++){for(m=0;m<2;m++){fscanf(IN,"%d",&i[m]);}swap(&i[0],&i[1]);fprintf(OUT,"%d\n",i[0]);fprintf(OUT,"%d\n",i[1]);}fclose(IN);fclose(OUT);}/*-------------------------------------------------------【程序填空】功能:输入3个数a,b,c,按从小到大的顺序输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2013年程序改错、填空、编写题的答案(一)程序改错题。
一、各数位数的取法1、b=int((x-a*1000)/100)C= int((x-a*1000-b*100)/10)2、a=int(x/1000)If a=d and b=cN=n+13、n=0C=int(mod(I,100)/10)If int(sqr(i))=sqrt(i) and int(sqr(x))=sqrt(x) N=n+14、min=9999C=int(mod(x,100)/10)Max=x5、if mod(x,6)=0 and mod(x,9)<>0S=s+x6、b=int((x-a*100)/10)If a<>8 and b<>8 and c<>87、y=b*10+a?y二、整除与余数1、IF MOD(x,5)<>0 and MOD(x,7)<>0n=n+1?n2、if mod(n,6)=0 or mod(n,8)=0S=s+sqrt(n)3、X=x*8N=n+14、 do while k<20If mod(x,4)=0 or mod(x,6)=05、FOR n=2 to a-1IF MOD(a,n)=0exit?n6、if mod(x,2)=0 and not(mod(x,3)=0 andmod(x,5)=0)S=s+x7、 max=d?d改为?max8、for d=1 to bLoop改为c=dk=a*b/c9、IF MOD(n,i)=0IF MOD(n,s)=0 and MOD(n,3)=010、IF AT("7",STR(x),2)>0s=s+x11、p=2后面加上 N=0N=1改为N=n+1三、求素数类。
1、FOR j=2 to i-1Loop改为:EXIT2、FOR j=2 to i-1K=k+13、FOR i=2 to INT(SQRT(s-1))IF flag=14、FOR i=2 to x-1IF a*a+b*b+c*c+d*d=100 and x>maxmax=x5、j=mod(i,10)*10+int(i/10)f1=1for k=2 to i-1 if mod(i,k)=0f1=0exitendifendforif f1=1f2=1for k=2 to j-1if mod(j,k)=0f2=0exitendifendforif f2=1max=iendifendifendfor?max四、数列、数组类。
1、s=s+aIF s>98765432、a=1FOR n=1 to 1000IF a+n>60003、for k=1 to 22f3=f4、 s=100s=s+2*h5、FOR i=1 to 99?round(s,4)6、s=5if s>75364321exit7、 n=1f=1/(f+1)8、f1=f1+f2f2=f2+f19、if s>0.68五、勾股数类。
1、for a=1 to c-1if b=b1 and b<an=n+12、for a=1 to c-1b=INT(sqrt(c*c-a*a))IF max<a+b+c3、for c=100 to 300FOR b=1 to c-1FOR a=1 to b-1if A*A+B*B=C*Cn=n+1六、组合关系。
1、for yi=1 to 100if yi+er*2+wu*5=1002、min1=100if yi+er*2+wu*5=100max1=t3、min=300For i=1 to nLoop改为exit4、If dm*3+xm*2+mj/2=1001S=s+15、min=140z=abs(x)+abs(y)if 3*x-7*y=1 and abs(x)<40 and z<min 6、IF MOD(y,10^m)=x?s7、b=INT(c/a)max=b(二)、程序填空题。
(二级考生使用)1、if a^3+b^3+c**3=in=n+12、If mod(x,2)=0 and mod(c*b,3)=bS=s+x3、S1=1S2=s2+i4、c=substr(j,3,1)d=right(j,1)5、(答案不对。
正确答案2133)do while j<=is=s+j6、STORE 0 to xdo while .t.x=x+1do casecase MOD(x,2)=0loopcase y>123699exit7、if a+b+c+d=i*9i=i+18、(答案不对)s=0FOR n=1 to 19p=1FOR i=1 to np=p*iendfs=s+pENDFOR?LTRIM(STR(s,30))9、N=n+1I=i+110、if mod(a,b)=0?n11、S1=1S2=s2+i12、do while x<=150x=x+213、Store x+2 to xLoopY=y*x14、 s=s*iexit15、if mod(x,2)=0 and mod(c+b,10)=as=s+116、y=7-xx=x+117、do while m<=12n=n+118、if flag=0s=s+119、if flag=0s=s+n20、在x=100后一行加上S=0If mod(x,3)=0S=s+1(三)、程序编写题。
一、整除与余数1、求出100到500之间同时满足除5余4和除7余2条件的数的和。
正确答案3678S=0for i=100 to 500if mod(i,5)=4 and mod(i,7)=2s=s+Iendifendfor?s2、求出100到500之间同时满足除3余2和除5余3条件的数的个数。
正确答案26N=0for i=100 to 500if mod(i,3)=2 and mod(i,5)=3n=n+1endifendfor?n3、编写程序,求1到5000之间的能被5整除的前若干个偶数之和,当和值大于500时退出,输出该和值。
正确答案 550s=0for i=2 to 5000 step 2if mod(i,5)=0s=s+iendifif s>500exitendifendf?s4、求在[2,1000]之间的所有同构数之和(某正整数的平方,其低位与该数本身相同,则称该数为同构数。
例如25^2=625,625的低位25与原数相同,则称25为同构数)。
正确答案1113s=0for i=2 to 1000k=i^2l=len(alltrim(str(i))) && 测试是几位数if val(right(str(k),l))=is=s+iendifendfor? s5、统计1000~9999之间的所有满足以下条件的四位数的个数。
该数是一个完全平方数,且第1、2位数字之和为12,第3、4位数字之积为24。
正确答案1n=0for x=1000 to 9999a=int(x/1000)b=int(mod(x,1000)/100)c=int(mod(x,100)/10)d=mod(x,10)if int(sqrt(x))=sqrt(x) and a+b=12 and c*d=24n=n+1endifendfor?n6、某些分数的分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子的两位数字相加作分子,而将该分数的分母的两位数字相加作分母,得到的新分子跟原分子相等。
例如,63/84=(6+3)/(8+4)。
试求所有具有这种特点的真分子(非约简真分数)的分子与分母之和的和。
正确答案10134s=0for x=10 to 99for y=10 to 99a=int(x/10)b=mod(x,10)c=int(y/10)d=mod(y,10)if x<yif (a+b)/(c+d)=x/yd=x+ys=s+dendifendifendfendf?s7、自然数对是指两个自然数的和与差都是平方数,如8和17的和8+17=25与其差17-8=9都是平方数,则称8和17是自然数对(8,17)。
假定(a,b)与(b,a)是同一个自然数对且假定a>=b,求所有小于或等于100(即:a<=100,b<=100,a<>b,a 和b均不为0)的自然数对中b之和。
正确答案1160s=0for a=1 to 100for b=1 to a-1if sqrt(a+b)=int(sqrt(a+b)) andsqrt(abs(a-b))=int(sqrt(abs(a-b)))s=s+bendifendfendf?s8、某一正整数,进行递减,每次将该数减半后再减一,当对该数进行第10次减半时发现该数只剩下1不能再减了,求该数。
正确答案1534x=1for i=1 to 9x=(x+1)*2endf?x9、一个数如果刚好与它所有的因子之和相等,则称该数为一个“完数”,如:6=1+2+3,则6就是一个完数。
求出1000以内的完数的个数。
正确答案4n=0for i=1 to 10000s=0for j=1 to i-1if mod(i,j)=0s=s+jendifendforif i=sn=n+1endifendfor?n二、取数类:1、编写程序,计算在[0,60]的范围内有多少个数,其每位数的乘积大于每位数的和。
31n=0for i=1 to 60a=int(i/10)b=mod(i,10)if a*b>a+bn=n+1endifendfor?n2、求五位数各位数字的平方和为100的最大的五位数。
正确答案94111s=0mx=0for i=10000 to 99999a=int(i/10000)b=int(mod(i,10000)/1000)c=int(mod(i,1000)/100)d=int(mod(i,100)/10)e=mod(i,10)if a^2+b^2+c^2+d^2+e^2=100 and i>mxmx=iendifendfor?mx3、编写程序,求三位数的偶数中,所有各位数字之和是15的倍数的数的和。
正确答案20454S=0for x=100 to 999 step 2a=int(x/100)b=int(mod(x,100)/10)c=mod(x,10)if mod(a+b+c,15)=0s=s+xendifendfor?s4、编写程序,求四位数的奇数中,所有各位数字之积(且不为0)是125的倍数的数的和。
正确答案161095s=0for x=1001 to 9999 step 2a=int(x/1000)b=int(mod(x,1000)/100)c=int(mod(x,100)/10)d=mod(x,10)if mod(a*b*c*d,125)=0 and a*b*c*d<>0s=s+xendifendfor?s5、编写程序,求满足下列条件的所有四位数abcd的个数,该四位数是8的倍数,且a+b=b+c,即第1位数加上第2位数等于第2位数加上第3位数。