文档库 最新最全的文档下载
当前位置:文档库 › 改错编程题

改错编程题

改错编程题
改错编程题

实验二VC++流程控制语句(一)

二程序设计题

1、编写程序,输入一个不多于5位的整数,求出它是几位数,并分别打印出每一位数字,再按逆序打印出各位数字。

2、编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形。若能,则判断组成的是等腰、等边、直角还是一般三角形;若不能,则输出相应的信息。

1、参考程序

方法一:

#include

void main()

{

int m,a,b,c,d,e;

cout<<"输入一个不多于5位的数字:";

cin>>m;

a=m%10;//个位

b=m/10%10;//十位

c=m/100%10;//百位

d=m/1000%10;//千位

e=m/10000;//万位

if(e!=0) cout<

else if(d!=0) cout<

else if(c!=0)cout<

else if(b!=0)cout<

else cout<

}

//当输入数字是012时,其实输入的是八进制数,对应的十进制是10。

方法二:

#include

void main()

{

int a,b,c;//b表示所输入数的位数

cout<<"请输入一个不多于5位数的正整数:";

cin>>a;

cout<<"从个位到万位分别为:";

if(a==0) cout<

else{

for(b=0;a;b++)

{

c=a%10;

cout<<'\t'<

a=a/10;

}

cout<<" 共"<

}

}

2、参考程序

#include

void main()

{

int a,b,c;

cout<<"输入三边的长:";

cin>>a>>b>>c;

if(a+b>c&& a-b

{

cout<<"能构成三角形"<<'\n';

if(a==b&&b==c&&c==a)//错误的a==b==c

cout<<"能构成等边三角形"<<'\n';

else if(a==b||a==c||b==c)

cout<<"能构成等腰三角形"<<'\n';

else if(a*a+b*b==c*c||a*a+c*c==b*b||c*c+b*b==a*a)

cout<<"能构成直角三角形"<<'\n';

else

cout<<"能构成一般角形"<<'\n';

}

else

cout<<"不能构成三角形"<<'\n';

}

实验二VC++流程控制语句(二)

1、从键盘输入整数n,求n的阶乘。

2、从键盘输入若干个实数,以输入0结束。设计一程序,分别统计正数的个数和负数的个数,并求出正数之和、负数之和及总平均值

3、设计一个程序,求出满足以下条件的最小n值和s值:

s=1+2+3……….+n, 且s>=600

4、用二分法解方程f(x)=0的具体算法如下:

(1) 输入x1,x2,直至f(x1) 与f(x2)异号,说明方程在x1、x2之间有解。

(2) 求x1和x2的中点x0.

(3) 如果f(x0)与f(x1)同号,表明方程的解在x0与x2之间,用x0取代x1;否则方程的解在x0与x1之间,用x0取代x2.

(4) 如果f(x0)的值足够小,则方程的近似解为x0;否则重复执行步骤(2)、(3)、(4),直至f(x0)足够小。

(5) 输出方程的解x0.

要求用二分法求解方程x2+4x-4=0.

参考程序:

1、

#include

void main(void)

{

int i=1,n;

long int s=1;

cout<<"请输入一个整数:";

cin>>n;

while(i<=n)

{

s*=i;

i++;

}

cout<<"n!="<

}

2、

#include

void main(void){

float a,s1=0,s2=0;

int m=0,n=0;

cin>>a;

while(a){

if(a>0){

m++;

s1+=a;

}

else{

n++;

s2+=a;

}

cin>>a;

}

cout<<"\n正数有"<

cout<<"\n负数有"<

cout<<"\n正数之和为:"<

cout<<"\n负数之和为:"<

cout<<"\n总的平均为:"<<(s1+s2)/(m+n)<<'\n';

}

3、

#include

void main(){

int n=0,s=0;

while(s<600){

++n;

s+=n;

}

cout<<"n="<

}

4、

#include

#include

void main()

{

float x0,x1,x2;

double y0,y1,y2;

do{

cout<<"请输入方程的两个初始区间值:";

cin>>x1>>x2;

y1=x1*x1+4*x1-4;

y2=x2*x2+4*x2-4;

}while(y1*y2>0);

x0=(x1+x2)/2;

y0=x0*x0+4*x0-4;

do{

if(y0*y1>0) {x1=x0;y1=y0;}

else {x2=x0;y2=y0;}//可以不要y2=y0;

x0=(x1+x2)/2;

y0=x0*x0+4*x0-4;

}while(fabs(y0)>1e-5);

cout<<"方程x^2+4x-4=0的解为"<

}

实验二VC++流程控制语句(三)

二、改错题

答案:

增加#include

j=sqrt(i);修改为:int j=sqrt(i);

if(i%n=0) break; 修改为:if(i%n==0) break;

if(k/5=0) cout<<'\n'; 修改为:if(k%5==0) cout<<'\n';

三、编程设计题

1、设计一个程序,输出所有的水仙花数。所谓水仙化数是一个三为数,其各位数字的立方和等于该数本身。列如153是一个水仙化数。

水仙花数的算法分析:

1)用穷举法对100~999之间的每个数验证,验证公式为:x=h*h*h+d*d*d+n*n*n

2)分解一个3位数x的百位、十位和个位。

2、求出1000以内所有完全数,并输出。例如6就是一个完全数,6的因数共有4个:1、2、

3、6,除了6自身这个因数外,其他的3个因数都是它的真因数,把6的所有真因数都加起来,正好等于6这个自然数本身。具有这种性质的自然数叫做完全数。

参考程序:

1、

#include

void main()

{

int x,h,d,n;

cout<<"水仙花数为:";

for(int i=100;i<1000;i++)

{

h=i/100;

d=i/10%10;

n=i%10;

x=h*h*h+d*d*d+n*n*n;

if(i==x) cout<

}

}

2、

#include

void main()

{

int s;

for(int i=1;i<=1000;i++)

{

s=0;

for(int j=1;j<=i/2;j++)

if(i%j==0) s+=j;

if(s==i)

cout<

}

}

实验三函数与编译预处理(一)

三、改错题

答案:

增加#include

int isprime(n) 修改为:int isprime(int n)

if(n%i==0) break; 修改为:if(n%i==0) return 0;

if(!isprime(k)) 修改为:if(isprime(k))

四、编程设计题

1、 设计一程序,计算组合数:C (m,r )=m!/(r!*(m-r)!),其中m,r 为正整数,且m>r.分

别求出C(4,2).C(6,4).C(8,7)的组合数。求阶乘和组合数须用函数来实现。

2、阿克曼函数定义如下,其中m 、n 为正整数,设计一个程序,分别求出Acm (3,2)和Acm (2,2)的值。

1

0(,)(1,1)0(1,(,1))0,0n m Acm m n Acm m n Acm m Acm m n n m +=??=-=??-->>?

参考程序:

1、

#include

long int jc(int n)

{ if(n==1)return 1;

return n*jc(n-1);

}

long int zh(int m,int r){

int c;

if(m<=r){

cout<<"m 必须大于r!"<<'\n';

exit(1);

}

c=jc(m)/(jc(r)*jc(m-r));

return c;

}

void main(void){

cout<<"C(4,2)="<

cout<<"C(6,4)="<

cout<<"C(8,7)="<

}

2、

#include

long int Acm(int m,int n)

{

int c; if(m==0)return n+1;

if(n==0)return Acm(m-1,1);

if(n>0&&m>0)

{

c=Acm(m,n-1);

return Acm(m-1,c);

}

}

void main()

{

int m,n;

cout<<"Acm(5,3)="<

cout<<"Acm(4,2)="<

cout<<"Acm(5,5)="<

cout<<"请输入m和n的值:";

cin>>m>>n;

cout<<"Acm("<

}

实验三函数与编译预处理(二)

三、改错题

答案:

在main()的上面增加语句int gys(int x,int y);

return y; 修改为:return x;

三、编程设计题

1、设计一程序,将求两个实数的最大值函数放在头文件myfun.h中,在源程序文件mypro.cpp 中包含该头文件,并实现输入三个实数,求最大值。

2、设计一程序,定义重载函数area,分别求圆和长方形的面积。

3、用递归法将一个整数n转换成字符串。例如,输入整数567,应输出字符串“567”。n 的位数不确定,可以是任意的整数。

参考程序:

1、

//myfun.h

float max(float x, float y)

{ float z;

if(x>y) z= x;

else z=y;

return z;

}

//mypro.cpp

#include

#include"myfun.h"

void main()

{ float a,b,c;

cin>>a>>b>>c;

cout<<"最大值为:"<< max(max(a,b),c) <<'\n';

}

2、

#include

#define PI 3.14

double area(float r)

{ return PI*r*r; }

double area(float a,float b)

{ return a*b; }

void main()

{ float r=2.5, a=2,b=1.2;

cout<<"圆的面积为:"<

cout<<"长方形的面积为:"<

}

3、#include

void fun(int n)

{

int a,b;

a=n%10;

b=n/10;

if(b) fun(b);

cout<

}

void main()

{

int m;

cin>>m;

cout<<"转换后的字符串为:\"";

fun(m);

cout<<"\""<

}

实验四数组的应用(一)

一、程序设计题

1、定义一个10个整数的数组,从键盘输入数据,设计一程序,找出其中最大的偶数和最

大的奇数(若设有奇数时,输出“没有奇数!”,若没有偶数,输出“没有偶数!”)。2、输入一组非0整数(以输入0作为输入结束标志)到一维数组中。设计一程序,求出这

一组数的平均值,并分别统计出这一组数中正数和负数的个数。

参考程序:

1、

#include

void main()

{

int a[10],b[10],c[10];

int max1,max2,j=0,k=0,m,n,t;

cout<<"请输入10个整数:";

for(int i=0;i<10;i++)

cin>>a[i];

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

{

if(a[i]%2){ b[j++]=a[i]; n=j; }

else { c[k++]=a[i]; m=k; }

}

if(j==0) cout<<"没有奇数。";

else

{

max1=b[0];

cout<<"输入的奇数有:";

for(i=0;i

{

cout<

if(b[i]>max1)max1=b[i];

}

cout<<"其中最大的奇数为:"<

}

if(k==0) cout<<"没有偶数。";

else

{

max2=c[0];

cout<<"输入的偶数有:";

for(i=0;i

{

cout<

if(c[i]>max2) max2=c[i];

}

cout<<"其中最大的偶数为:"<

}

}

2、

#include

void main()

{

int a[100;

int,j=0,k=0,t;

float avg,s=0;

cout<<"请输入一组整数(0结束):";

int i=0;

do{

cin>>a[i];

s+=a[i];

i++;

}while(a[i-1]);

t=i-1;

cout<<"共输入"<

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

if(a[i]>0)j++;

else if(a[i]<0) k++;

avg=s/t;

cout<<"这组数的平均值为"<

cout<<"其中输入的正整数个数为:"<

cout<<"其中输入的负整数个数为:"<

}

实验四数组的应用(二)

四、编程题

1、设计一程序,用cin.getline()将一个字符串输入到字符数组s(char s[200])中,删除字符串的所有空格后输出。

参考程序

//方法一:

#include

#include

void main(){

char s[200],t[200];

int i=0,j=0;

cout<<"请输入字符串(回车结束):";

cin.getline(s,200);

cout<<"s="<

for(;i

if(s[i]!=' '&&i

t[j]='\0';

cout<<"t="<

}

//法二:

#include

#include

void main(){

char s[200];

int i=0;

cout<<"请输入字符串(回车结束):";

cin.getline(s,200);

cout<<"s="<

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

if(s[i]!=' ')cout<

cout<

}

C语言程序改错及填空题

下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。 #define NULL 0 struct stud { long num; char name[10]; float score; struct stud *next; }; /* …………… comment …………… */ int n; struct stud create() 序中有两处错误代码,请改正.注意,不得改变程序结构。 #include <> main() { int a[8],*p=a; int i,j; int tempmin,tempcode; printf("\n input the numbers:\n"); for (i=0;i<8;i++) scanf("%d",p+i);

tempmin=*p; for (i=0;i<7;i++) { for (j=i;j<8;j++) if (j==i||*(p+j)

C语言程序改错题

第12次上机程序改错第1题 【程序改错】 -------------------------------------------------------- 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。 例如:输入圆的半径值:19.527 输出为:s = 598.950017。 ------------------------------------------------------*/ #include #include /**********FOUND**********/ double fun( r) double fun(double r) { double s; /**********FOUND**********/ s=1/2*3.14159* r * r; s=1.0/2*3.14159*r*r; /**********FOUND**********/ return r; return s; } main() { float x;

printf ( "Enter x: "); scanf ( "%f", &x ); printf (" s = %f\n ", fun ( x ) ); } 第2题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include #include #include void fun (char *s, char *t) { /**********FOUND**********/ int i; int sl,i; sl = strlen(s); for (i=0; i

程序改错完整版---C语言

(一)功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。#include "stdio.h" #define N 20 void fun(int a[], int n) { int i, j, t, k; for (j = 0 ;j < n-1 ;j++) { /**********ERROR**********/ k = j for (i = j+1;i < n; i++) /**********ERROR**********/ if(a[i] >a[k]) /**********ERROR**********/ k=j; t = a[k] ; a[k] = 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"); } 【参考答案】 k = j; 【参考答案】 if(a[i] < a[k]) if(a[k] > a[i])

【参考答案】 k = i; (二)功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,…… 项值通过函数值返回 main ( )函数。 例如:若 n = 15,则应输出:The value is: 2209。 #include "conio.h" #include "stdio.h" long fun ( int n ) { long a=1, b=1, c=1, d=1, k; /**********ERROR**********/ for (k=4; k

齐齐哈尔大学C语言题库 程序改错(部分)

1.【程序改错】 题目:在一个一维整型数组中找出其中最大的数及其下标。 程序中共有4条错误语句,请改正错误。 #define N 10 /**********FOUND**********/ float fun(int *a,int *b,int n) int fun(int *a,int *b,int n) { int *c,max=*a; for(c=a+1;cmax) { max=*c; /**********FOUND**********/ b=c-a;} *b=c-a;} return max; } main() { int a[N],i,max,p=0; printf("please enter 10 integers:\n"); for(i=0;i

C语言程序改错题

第1题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include #include #include void fun (char *s, char *t) { /**********FOUND**********/ int i; sl = strlen(s); for (i=0; i

C语言改错题

题号:1 题目:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列 /************FOUND***********/ a[i]=a[i-1]; /************FOUND***********/ exit;} 正确答案:a[i+1]=a[i]; break;} 题号:2 题目:以下程序的功能是求如下表达式: /************FOUND***********/ print("%d",n) ; /************FOUND***********/ fun(int n) 正确答案:scanf(“%d”,&n); float fun(int n) 题号:3 题目:函数fun的功能是:根据整型形参m的值,计算如下公式的值。 /**********FOUND**********/ y-=1/(i*i); /**********FOUND**********/ return m; 正确答案:y-=1.0/(i*i); return c; 题号:4 题目:以下程序把一由小到大的有序数列放在a[1]到a[n]中,a[0]用做工作单元,程序把读入的x值插入到a数组中,插入后,数组中的数仍有序。 /************FOUND***********/ { a[i]=a[i+1]; /************FOUND***********/

for(i=0;i<=n;i++) 正确答案:{ a[i+1]=a[i]; for(i=1;i<=n;i++) 题号:5 题目:函数scopy的功能是:将一个字符串前面n个子字符送到一个字符型数组中去 ,然后再加上一个'\0'。不用系统提供的函数strcpy。请改正程序中的2个错误,使它能得出正确的结果。 /**************FOUND**************/ scanf("%d",n); /**************FOUND**************/ scopy(str1,str2); 正确答案:scanf("%d",&n); scopy(str1,str2,n); 题号:6 题目:函数fun的功能是:求n!。主函数的功能是计算: x!+y!+z!的值。请改正程 序中的错误,使它能得出正确的结果。 /**********FOUND**********/ scanf("%d,%d,%d",x,y,z); /**********FOUND**********/ printf("Sum=%d\ n",sum); 正确答案:scanf("%d,%d,%d",&x,&y,&z); printf("Sum=%ld\ n",sum); 题号:7 题目:编写函数fun求整数n以内(不包括n)3的倍数之和,在main函数中由键盘输 入n值,并输出运算结果。 /**********FOUND**********/ scanf("%d",n); /**********FOUND**********/ result=fun( ); 正确答案:scanf("%d",&n); result=fun(n); 题号:8 题目:函数fun的功能是:求1到20的阶乘的和。 /**********FOUND**********/ s+t=s; /**********FOUND**********/ printf("jiecheng=%d\n",s);

C语言程序改错题及答案

程序调试1、 #include #include void fun(char *s,char *t) { int i,sl; sl=strlen(s); for(i=0;i void main() { int n,i; scanf("%d",&n);

/****** 1 ******/ i=1;// i=2; while(n>1) if(n%i==0) { printf("%d\t",i); n/=i; } else /******** 2 *******/ n++;// i++; } 3、 #include #include void main() { int n,s=0; scanf("%d",&n); n=fabs(n); /******** 1 *******/ while(n>1) { // 1}n 2}n!=0 s=s+n%10; /******** 2 ******/ n=n%10;// n=n/10; } printf("%d\n",s); } 4、

C语言程序改错练习题

程序改错练习题 下面每个程序的划线处有语法或逻辑错误,请找出并改正,使程序符合题意。 1.求1?2?3?4? ?n main() { int sum; 正确:int sum=1; int n,i=1; scanf("%d",n); scanf(“%d”,&n); printf(“\n”); while(ia[j]) if(max

main() { float a,b; int c; float c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); printf("\nSum is %f",c); } 4. x , y两个数中,让x中存较大的数,y存较小的数 #include main( ){ int x , y=200 , z=0; x=180; if ( x

C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案

实验一Visual C++集成环境实验内容 (一)程序改错 1. (1)无法运行 (2)将第二个C程序重新存放到另一个工程文件中 (3)同一个工程文件只能有一个main函数 2. (1)/*一个简单的程序*/ (2)void main() (3)} 3. (1)int a,b,c; (2)a=2; (3)c=a*b; (二)完善程序 1. (1)year (2)month (3)day 2. (1)c (2)a*a+b*b (3)c 3. (1)4 (2)4*a (3)s 课后练习 1.D

2.D 3.A 4.C 5.C 6.C 7.stdio.h 8.main函数 实验二数据类型、运算符和表达式课前练习 1. 20 8 70 0 2. Abs3 Class _else sum my_class 、 3block a+b for fun(4) a-b 3.B 4.D 5.A 6.C 7.D 8.B 实验内容 (一)程序改错 1. (1)int x1,x2,x3,x4; (2)scanf("%d,%d",&a,&b); (3)c=x4*1000+x2*100+x3*10+x1; 2. 程序1: ① 2 2 ②error C2065: 'a1' : undeclared identifier 变量a1没有定义 sum=a+b+c ③ 1 error C2146: syntax error : missing ';' before identifier 'printf' printf语句之前缺少分号

sum=a+b+c; ④0 error(s), 0 warning(s) ⑤a=1 b=3 c=2 sum=6 ⑥语句以分号结束;变量要先定义后使用。程序2: ① 2 2 ②error C2065: 'sum' : undeclared identifier 变量sum没有定义 int sum=a+b; 1 error C2086: 'c' : redefinition 变量c重复定义 c=a+b+sum; ③a=1 b=3 sum=8 ④在同一个函数体内,变量要先定义后使用,但不能重复定义 程序3: ① 1 error C2106: '=' : left operand must be l-value 赋值符号左边参数错误 c=a+b; ②c=4 ③赋值符号左边只能是变量,不能是常量或表达式 3. (1)t=a; (2)a=b;; (3)printf("a=%d\tb=%d\n",a,b); (二)完善程序 1. (1) int n (2)”%d”,&n (3)s 2. (1)float s (2)(float)a/b (3)%f 3. (1)#include (2)pow(x,y) (3)“%lf”,s

C语言程序改错基本题

北京石油化工学院12级复习题 程序改错 一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1?2?3?4? ?n main() { long int sum; int n,i=1; scanf("%d",n); printf(“\n”); while(ia[j]) { max=a[j]; m=j; } printf(“下标:%d\n最大值:%d”, j, max) } *3. 求3+4 int a=3,b=4; main() { int a,c; c=a+b; printf(“c=%d”); } 4.用一个函数求两个数之和。

sum(x,y) { float z; z=x+y; return; } main() { float a,b; int c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); } 5.用指针作函数参数,对输入的两个整数按大小顺序输出。 swap(int *p1,*p2) { int *p; *p=*p1;*p1=*p2;*p2=*p; } main() { int a,b; int *q1,*q2; scanf("%d,%d",&a,&b); &q1=a,&q2=b; if(a

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所指的数组中。要求t1和t2所指字符串的长度相同。 18、从s所指字符串中,找出t所指字符串的个数作为函数值返回。 19、对n名学生的学习成绩,从高到地的顺序找出钱m(<10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 20、根据整形参数m,计算如下公式的值y=1/(100*100)+。 21、从低位开始依次取出长整型变量s中偶数位上的数,构成一个新数放在t 中。高位仍在高位,低位仍在低位。 22、将p所指字符串中的所有字符复制到b中,要求每复制3个字符之后插入一个空格。 23、把从主函数中输入的3个数,最大的数放在a中,中间的数放在b中,最小的数放在c中。 24、用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列1,1,2,3,5,。 25、将一个由八进制数字字符组成的字符串转换成十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。 26、按顺序给s所指数组的元素赋予2开始的偶数,然后再按顺序对每5个元素求平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,则多余部分忽略不计。

C语言程序改错及填空题

C语言程序改错及填空题

gc23.c下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在 每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。 #define NULL 0 struct stud { long num; char name[10]; float score; struct stud *next; }; /* …………… comment …………… */ int n; struct stud create() ////////struct stud *create(void) { struct stud *head,*p1,*p2; n=0; p1=p2=(struct stud *)malloc(sizeof(struct stud)); scanf("%ld,%s,%f",&p1->num,p1->name,& p1->score); /* ……………comment ……………

*/ head=NULL; while(p1!=0) //////////while(p1->num!=0) { n=n+1; if(n==1) head=p1; else p2->next=p1; p1=(struct stud *)malloc(size(struct stud)); scanf("%ld,%s,%f",&p1->num,p1->name,& p1->score); } p2->next=NULL; return(head); } gc57.c的功能是互换给定数组中的最大数和最小数。如将下面8个数:5,3,1,4,2,8,9,6 变成: 5,3,9,4,2,8,1,6 程序中,最大数与最小数的互换操作通过函数调用来实现,让指针max和min分别指向最大数和最小数。程序有二处错误,请改正。注意:不得增行和删行,也不得修改程序的结构。 main() {

C语言程序改错题及答案

C语言程序改错题及答 案 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

程序调试 1、 #include <> #include <> void fun(char *s,char *t) { int i,sl; sl=strlen(s); for(i=0;i #include <> void main() { char a[80]; int n[5]={0},i; gets(a); for(i=0; a[i]!=’\0’; i++) /***** 1 *****/ switch(tolower(a+i)) { // (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]++; break; // ‘u’ } for(i=0;i<5;i++) printf("%d\n",n[i]); } 11、在考生目录下,有程序,该程序中"/***** N *****/"的下 一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负) 该程序功能:输入n(0 void main() { int i,j,n; /***** 1 *****/ scanf("%d",n); // &n for(i=1;i<=n;i++) {

c语言程序改错题

程序改错 ------------------------------------- 1题目:在一个一维整型数组中找出其中最大的数及其下标。 程序中共有4条错误语句,请改正错误。-----------------*/ #define N 10 /**********FOUND**********/ float fun(int *a,int *b,int n) { int *c,max=*a; for(c=a+1;cmax) { max=*c; /**********FOUND**********/ b=c-a;} return max; } main() { int a[N],i,max,p=0; printf("please enter 10 integers:\n"); for(i=0;ix[i+1]) { t=x[j];x[j]=x[j+1];x[j+1]=t;} } main() { int i,n,a[100]; printf("please input the length of the array:\n"); scanf("%d",&n); for(i=0;ij;j++) 或for(j=0;jj;j++) 3 if(x[j]>x[j+1]) 或if(x[j+1]

C语言程序改错基本题库完整

石油化工学院12级复习题 程序改错 一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1234n main() { long int sum; int n,i=1; scanf("%d",n); printf(“\n”); while(ia[j]) { max=a[j]; m=j; } printf(“下标:%d\n最大值:%d”, j, max) } *3. 求3+4 int a=3,b=4; main() { int a,c; c=a+b; printf(“c=%d”); } 4.用一个函数求两个数之和。

sum(x,y) { float z; z=x+y; return; } main() { float a,b; int c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); } 5.用指针作函数参数,对输入的两个整数按大小顺序输出。 swap(int *p1,*p2) { int *p; *p=*p1;*p1=*p2;*p2=*p; } main() { int a,b; int *q1,*q2; scanf("%d,%d",&a,&b); &q1=a,&q2=b; if(a

C语言程序改错题汇总

程序改错题汇总 1、用"起泡法"对连续输入的十个字符排序后按从小到大的次序输出. 2、分别统计字符串中大写字母和小写字母的个数。 3、求1到10的阶乘的和。 4、判断m是否为素数,若是返回1,否则返回0。 5、用选择法对数组中的n个元素按从小到大的顺序进行排序。 6、求一个3行4列矩阵的外框的元素值之和。 7、以下程序把两个数按由大到小的顺序输出来。 8、求1到20的阶乘的和。 9、判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。(指针) 10、已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。下列给定程序中,函数fun的功能是:计算并输出该数列的前n项的平方根之和sum,n的值通过形参传入。 11、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 12、编写函数fun计算下列分段函数的值: x*x+x x<0且x≠-3 f(x)= x*x+5x 0≤x<10且x≠2及x≠3 x*x+x-1 其它 13、请编写函数fun,对长度为8个字符的字符串,将8个字符按降序排列。 14、实现交换两个整数的值。 15、读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。 16、先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。 17、计算数组元素中值为正数的平均值(不包括0)。 18、将s所指字符串中出现的、t1所指子串全部替换成t2所指子字符串,所形成的新串放在w 所指的数组中。在此处,要求t1和t2所指字符串的长度相同。 19、将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A, z转换为a),其它字符不变。 20、在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),后输出矩阵第一行与第三行元素之积,并在fun()函数中输出。 21、编写一个函数,该函数可以统计一个长度为3的字符串在另一个字符串中出现的次数 22、一个已排好序的一维数组,输入一个数number,要求按原来排序的规律将它插入数组中. 23、编写函数fun计算下列分段函数的值: x*20 x<0且x≠-3 f(x)= sin(x) 0≤x<10且x≠2及x≠3 x*x+x-1 其它 24、判断两个指针所指存储单元中的值的符号是否相同;若相同函数返回1,否则返回0。这两个存储单元中的值都不为0。 25、将一个正整数分解质因数。 26、输入n,计算s=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n 27、读入一个整数m( 5≤m≤20 ),函数getarr调用函数rnd获得m个随机整数,函数sortpb

计算机二年级C语言程序修改题解题思路

计算机二年级C语言程序修改题解题思路 标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]

计算机二级C语言程序修改题解题思路 12通信3班盛伟 上次计算机二级缺几分及格,所以只能参加今年3月份的二级考试了。我认认真真的做了50套程序改错题,这里我总结了一些对于此题解题的经验与想法,过级的略过,没过级的大家不妨看看,希望对大家有用哦! 首先大家有没有注意到每套程序改错题中到底哪里错了,在哪里改,这是个关键,也是我们需要思考的驻点。我可是真的发现了规律,当然这个规律我去年9月份备考二级的时候就已经发现了。请看下面。(每套题都是这样) 例如: /***************found***************/ d=d\10;(这就是错误的所在处,改错就在此处改)改为d=d/10; 在这里我们将/***************found***************/称为错误栏,那么每道题的错误处就在这个错误栏的下面,改正就好了。当然到底怎么改,改的过程我们需要注意什么问题,我想这是我们大家都很关心的问题,那就由我为大家说说解题思路吧。 我觉得第一步大家还是得锁定错误所在处,接着就应该看是否出现那些不易发现的“低级错误”,其实往往就是这些错误却很容易被我们忽略。这点我为大家总结了一些,供大家复习所用。我以例子的形式给大家展现出来:(1)符号错误:1.if(t==0)被写成if(t=0) 2.d=d/10;被写成 d=d\10;(2)大小写混乱:3.if(*a)被写成If(*a) 4. s=s+(double)a/b;被写成 s=s+(Double)a/b; 5.前文定义了int y,而下文却写成了Y=1;(3)漏加标点符号:6.printf(“%c” *a);错误在于没有加上逗号,应该改为printf(“%c”,*a); 7.for语句中有两个分号,但是题目往往会写成两个逗号,这是大家需要注意的地方。8.漏加分号如:result *=n-- 错误就在于末尾没有加上分号,应该改为result *=n--; 9.

相关文档