程序改错题

17
4. 赋值出错

类型不匹配

char *p, *r; if(r==p) ----> if(*r==*p) int *a; int t=20; a=t; ----> a=&t; void fun(int *a, int *b) {



指针类赋值出错


交换时出错

int t; t=a; b=a; a=t;
参考答案: 1. t==0 2. *zero=count;
23





main() { unsigned n; int zero,max; printf("\nInput n(unsigned): "); scanf("%d",&n); max=fun(n,&zero); printf("\nThe result: max=%d\n zero=%d\n",max,zero); }
符号遗漏:; ) } 符号出错: / % == 变量定义或初始化出错 赋值出错 字符或字符串出错 ‘ 函数定义出错 for循环的格式出错 输入输出格式出错 return语句出错
3
1.符号遗漏

遗漏分号、括号,经常出现在以下地方:
Hale Waihona Puke 语句后面遗漏分号,如:k++ break 表达式遗漏括号,如:while k>1, if !(n%i) 函数后面遗漏大括号{}
#include <stdio.h> void fun (long s, long *t) // 87653142 { int d; long sl=1; *t = 0; while ( s > 0) { d = s%10; /************found************/ if (d%2=0) { *t=d* sl+ *t; sl *= 10; } /************found************/ s \= 10; } }



#include <stdio.h> double fun ( int m ) { double y = 1.0 ; int i; /**************found**************/ for(i = 2 ; i < m ; i++) /**************found**************/ y += 1 / (i * i) ; return( y ) ; 参考答案: } 1. <= main( ) 2. 1.0 { int n = 5 ; printf( "\nThe result is %lf\n", fun ( n ) ) ; }


#include <stdio.h> int fun(unsigned n,int *zero) { int count=0,max=0,t; do { t=n%10; /*************found**************/ if(t=0) count++; if(max<t) max=t; n=n/10; }while(n); /*************found**************/ zero=count;; return max; }

int fun( int m)

int i=20; char ch;

相关练习

93.2,47.2
4
93.2


下列给定程序中函数fun的功能是:计算并输 出high以内最大的10个素数的和。high的值 由主函数传给fun函数。 例如,若high的值为100,则函数的值为732。
5



程序改错题
1
改错题分类



错误的性质分两类:语法错误和逻辑错误 在做题之前先运行一下程序,如果有书写错误, 系统会提示,简化答题过程 错误提示行来提示下一行(下面第二行)有错, 提示行不得删除,即使是空行也不行。 题目修改完后,保存,运行,退出
2
题型
1. 2. 3. 4.
5.
6. 7. 8. 9.
12
3. 变量定义或初始化出错


没有定义变量就使用 定义的变量没有初始化即使用

int j; j++;



变量定义出错,如:int sum=0.0; 初始化的值不对,如:求和s=0, 求积p=1是正 确的 变量定义的类型和使用的类型不匹配。 33.2 35.2
13
第33.2套


下列给定程序中函数fun的功能是:先将s所指 字符串中的字符按逆序存放到t所指字符串中, 然后把s所指串中的字符按正序连接到t所指串 之后。 例如:当s所指的字符串为"ABCDE"时,t所 指的字符串应为"EDCBAABCDE"。
25
第49.2套


下列给定程序中函数fun的功能是:将s所指字 符串的正序和反序进行连接,形成的新串放在 t所指的数组中。 例如

当s所指字符串为:"ABCD"时,t所指字符串中的 内容应为:"ABCDDCBA"。
26







#include <stdio.h> #include <string.h> /************found************/ void fun (char s, char t) { int i, d; d = strlen(s); for (i = 0; i<d; i++) t[i] = s[i]; for (i = 0; i<d; i++) t[d+i] = s[d-1-i]; /************found************/ t[2*d-1] = '\0'; } main() { char s[100], t[100]; printf("\nPlease enter string S:"); scanf("%s", s); fun(s, t); printf("\nThe result is: %s\n", t); }
---- > t=*a; *b=*a;*a=t;

}

例:59.2
38.2
18
第59.2套


下列给定程序中,函数fun的功能是:实现两 个整数的交换。 例如,给a和b分别输入60和65,输出为:a= 65 b=60。
19



#include <stdio.h> /*************found**************/ void fun(int a, b) { int t; /*************found**************/ t=b;b=a;a=t; }
24
5. 字符或字符串出错

字符符号出错,如:

char ch=“a”; -------> ch=„a‟
str[i]=“\0” -------> str[i]=„\0‟ char ch=0; ch=„\0‟; ch=„0‟; //0字符 //结束符

字符串结束符出错


字符赋值出错


字符o和数字0的区别 例:49.2
参考答案: 1. ==,== 2. }
9
第23.2套


下列给定程序中函数fun的功能是:将长整型 数中各位上为偶数的数依次取出,构成一个新 数放在t中。高位仍在高位,低位仍在低位。 例如,当s中的数为87653142时,t中的数: 8642。
10

参考答案: 1. int *a, int *b 2. t=*b; *b=*a; *a=t
20



void main() { int a,b; printf("Enter a, b: "); scanf("%d%d",&a,&b); fun(&a, &b); printf("a=%d b=%d\n ", a,b); }
参考答案: 1. d%2==0 2. s/=10
11



main() { long s, t; printf("\nPlease enter s:"); scanf("%ld", &s); fun(s, &t); printf("The result is: %ld\n", t); }
参考答案: 1. int i, sl 2. s[sl-i-1]
15
第35.2套


下列给定程序中函数fun的功能是:根据整型 形参m,计算如下公式的值。 例如,若m的值为5,则应输出1.463611。
1 1 1 1 y 1 …… 2 2 3 3 4 4 m m
16
21
第38.2套


下列给定程序中,函数fun实现的功能是:统 计一个无符号整数中各位数字值为0的个数, 通过形参传回主函数,并把该整数中各位上最 大的数字值作为函数值返回。 例如,若输入无符号整数30800,则数字值为 0的位的个数为3,各位上数字值最大的是8。
合集下载

C语言程序改错

C语言程序改错

C语言程序改错〖第1题〗『程序改错』(5分)(题号:422)/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

--------------------------------------------------------注意:不可以增加或删除程序行,也不可以更改程序的结构。

------------------------------------------------------*/#include"stdio.h"main( ){/**********FOUND**********/long a,b,c,d,e,x,scanf("%ld",&x);a=x/10000;/**********FOUND**********/b=x/10000/1000;c=x%1000/100;d=x%100/10;e=x%10;/**********FOUND**********/if (a==0)printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);else if (d!=0) printf("there are 2, %ld %ld\n",e,d);else if (e!=0) printf(" there are 1,%ld\n",e);getch();}答案:1). long a,b,c,d,e,x;2). b=x%10000/1000; 或 b=x/1000%10;3). if (a!=0) 或 if (!a)〖第2题〗『程序改错』(5分)(题号:411)/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后除以10的余数代替该位数字。

程序改错69题

程序改错69题

程序改错注意:不可以增加或删除程序行,也不可以更改程序的结构。

1-44题每小题有2处错误。

1.计算1!+2!+3!+ (10)SET TALK OFFS=0N=1DO WHILE N>=10STOR 1 TO I,PDO WHILE I<=NP=P*NI=I+1ENDDOS=S+PN=N+1ENDDO?SSET TALK ONRETURN2.计算并在屏幕上显示出"九九乘法表",显示格式如下:1×1=11×2=2 2×2=41×3=3 2×3=6 3×3=9… …1×9=9 …8×9=72 9×9=81 SET TALK OFFCLEARX=1DO WHILE X<=9Y=1DO WHILE Y<=9??STR(X)+"×"+STR(Y)+"="+STR(X*Y) Y=Y*1ENDDO?X=X+1ENDDOSET TALK ONRETURN3.根据输入的数据,计算不大于该数的奇数累加和。

SET TALK OFFCLEARYN="Y"DO WHILE UPPER(YN)="Y"INPUT "请输入2位以内的整数" TO N STORE 0 TO X,YZ=" "DO WHILE X<NX=X+1IF INT(X/2)=X/2EXITELSEZ=Z+"+"+STR(X,2)Y=Y+ZENDIFENDDO?Z+"="+STR(Y,4)WAIT "继续计算?(Y/N)" TO YN ENDDO?"再见:"SET TALK ONRETURN4.通过临时数据LSH.DBF向学生数据库RS.DBF中追加数据记录。

程序改错

程序改错
(3)逻辑错误 发生在运行之后,不显示错误信息,仅表现为运行结果不正确。排除逻辑错误,一般也要用跟踪法查明错误点和错误原因。
发生错误后都要回到编辑阶段,分析错误原因,修改C源程序,再重复上述操作,直到程序能得到正确的运行结果,程序才算调试成功。程序发生错误,其原因很复杂。学会调试程序,也是学习C程序设计的重点和难点之一,必须多练、多分析,积累经验。
scanf(“%d”,&n);
while(i<n)
i+=2;
sum+=i;
if(n%2==0) n--;
printf(“输出1+3+5+……+%d=%ld\n”,n,sum);省略号是在中文状态下输入的。
}
第四题:程序功能:定义计算三角形面积的函数。计算公式:
s=(a+b+c)/2
a、b、c为三角形的边长。
{
char str[80]="a*b$c(d!EEE !!a.";
fun(str[80]);
printf("\n");
puts(str);
}
4、下列程序,其功能是:从s所指向的串中,找出包含有t所指字符串的个数。例如:s所指向的串为abcdabfab,t所指字符串为ab,则所求个数为3。请改正程序中的错误,使程序能输出正确的结果。
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
int a[]={1,2,3,4,5,6,7,8,9,10},i=10,n;
if((fp=fopen(“file6.txt”,”w”))==NULL)

大学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)在定

程序改错题

程序改错题

程序改错题第一篇:程序改错题1、 Gaicuo1.cpp的功能是:1!+2!+3!+……+20!。

程序有两处错误,在****found****处附近有错,请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include void main() {float s=0,t; int n,i; for(n=1;n<=20;n++) { for(i=1,t=1;i<=n;i++) t=t*i; /****found*****/ /****found****/}2、 gaicuo2.cpp的功能是:输入两个不等的整数分别给x和y,输出其中的大数。

程序有两处错误,在****found****处附近有错,请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include void main( ) { int x,y; printf("Enter x & y:\n"); scanf("%d%d",&x,&y); /****found****/ if(x}3、gaicuo3.cpp的功能是交换两个数,若输入10和20,则输出20和10。

程序有两处错误,在****found****处附近有错,请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include void main( ) { int x,y,t; printf("Enter x & y:\n"); /****found****/ scanf("%d%d",&x,&y); /****found****/ t=x; x=y;y=t; printf("x=%d y=%d",x,y) ; } 4. gaicuo4.cpp的功能是输入一个整数,判别它是否能被3整除,若能整除,打印YES;不能打印NO。

程序改错题

程序改错题

程序改错题〖第1题〗『程序改错』(1.0分)(题号:451)'------------------------------------------------'【程序改错】'------------------------------------------------'题目:以下程序是单击命令按钮,将用户在组合框中输入' 的某一值,与组合框其他项进行比较,如有相同,' 则将相同表项删除,其他项不动。

'------------------------------------------------'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------Private Sub Command1_click()Dim a As String, i As Integer'**********FOUND**********a = Trim(Combo1.Index)If Len(a) <> 0 Then'**********FOUND**********For i = 0 To Combo1.ListCount'**********FOUND**********If Combo1.List(i) = a Then Combo1.AddItem i Next iEnd IfCombo1.SetFocusEnd SubPrivate Sub Form_Load()Dim i As IntegerFor i = 0 To 9bo1.AddItem iNextEnd Sub答案:1). a = Trim(Combo1.Text)2). For i = 0 To Combo1.ListCount - 13). If Combo1.List(i) = a Then Combo1.RemoveItem i 〖第2题〗『程序改错』(1.0分)(题号:127)'------------------------------------------------'【程序改错】'------------------------------------------------'题目:下面程序可输出如下图形:' *' ***' *****' *******' *********'------------------------------------------------'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------Private Sub Form_Click()dim m as integer,n as integer,s as string,i as integer,j as integer n = 4m = 1s = "*"For i = 5 To 1 Step -1'**********FOUND**********Print Spc(n)For j = 1 To 2 * m - 1Print s;Next jPrint'**********FOUND**********n = n + 1'**********FOUND**********m = m - 1Next iEnd Sub答案:1). Print Spc(n);2). n = n - 1 或n = - 1+n3). m = ★m ★+★1〖第3题〗『程序改错』(1.0分)(题号:137)'------------------------------------------------'【程序改错】'------------------------------------------------'题目:求s=72+102+132+……822的值。

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个随机整数从小到大排序。

java程序改错12道及答案

while(i<100)
{
/***********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. 题目:在下面的代码中找出并修正错误,使其能够正确计算并输出两个数的和。

```pythondef sum_numbers(a, b):result = a + bprint("The sum is:", result)sum_numbers(5, "3")```答案:错误在于第二个参数传递了一个字符串类型的值,而函数期望的是一个数字类型。

应将字符串 "3" 改为整数 3。

```pythondef sum_numbers(a, b):result = a + bprint("The sum is:", result)sum_numbers(5, 3)```2. 题目:修正以下代码中的错误,使其能够正确地将列表中的所有元素乘以2。

```pythonmy_list = [1, 2, 3, 4]for i in range(len(my_list)):my_list[i] = my_list[i] * 2print(my_list)```答案:代码本身没有错误,可以直接运行。

但是,更高效的方式是使用列表推导式。

```pythonmy_list = [1, 2, 3, 4]my_list = [x * 2 for x in my_list]print(my_list)```3. 题目:找出并修正以下代码中的错误,使其能够正确地计算并输出一个数的平方。

```pythondef square_number(n):return n * nprint(square_number("5"))```答案:错误在于函数调用时传递了一个字符串类型的值,而函数期望的是一个数字类型。

应将字符串 "5" 改为整数 5。

```pythondef square_number(n):return n * nprint(square_number(5))```4. 题目:修正以下代码中的错误,使其能够正确地遍历字典中的所有键值对。

程序改错题(17道)

程序改错(共17道题)1.求1~100之间数的和。

Private Sub Form_Click()Dim i As Integer, sum As Integersum = 1i = 1Do Until i >= 100sum = sum + ii = i + 1LoopPrint "1-100之间和:"; sumEnd Sub答案:sum=0Do Until i > 1002.求1~100之间数的和。

Private Sub Form_Click()Dim i As Integer, sum As Integersum = 1i = 1Do While i < 100sum = sum + ii = i + 1LoopPrint "1-100之间和:"; sum End Sub答案:sum=0Do While i <= 1003.求1~10之间数的和。

Private Sub Form_Click()Dim i As Integer, sum As Integer sum = 1i = 1Do Until i >= 10sum = sum + ii = i + 1LoopPrint "1-10之间和:"; sumEnd Sub答案:sum=0Do Until i > 104.求1~10之间数的和。

Private Sub Form_Click()Dim i As Integer, sum As Integersum = 1i = 1Do While i < 10sum = sum + ii = i + 1LoopPrint "1-10之间和:"; sumEnd Sub答案:sum=0Do While i <= 105.求4!(4!=1×2×3×4)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档