改错编程题
C语言程序改错题及答案
![C语言程序改错题及答案](https://img.taocdn.com/s3/m/5021c1e976eeaeaad0f33013.png)
#include <string.h>
#include <stdlib.h>
void main()
{ int n,i;
/***** 1 *****/
char str;// char*str
scanf("%d\n",&n); str=(char*)malloc(n); gets(str);
int a[N]={5,4,3,2,1,9,8,7,6,0};
printf("\nThe array is:\n"); /*输出数组元素*/
for (i=0;i<N;i++)
printf("%5d",a[i]);
for (i=0;i<N-1;i++ห้องสมุดไป่ตู้ /*排序操作*/
{
min = i;
for (j=i+1; j<N; j++)
/****** 2 *****/
putchar(\n);//‘\n’
}
}
12、在考生目录下,有Modify.c程序,该程序中“/***** N *****/”的下一行中有错误,
请改正(注意:不得加行、减//行、加句、减句,否则后果自负)。
该程序功能:输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的大写字母后,输出该字符串。
}
11、在考生目录下,有Modify.c程序,该程序中"/***** N *****/"的下
一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)
c语言程序改错题
![c语言程序改错题](https://img.taocdn.com/s3/m/c4ccdebe0b4e767f5bcfce2f.png)
【程序改错】功能:根据整型形参m的值,计算如下公式的值。
1 1 1t = 1- —— - —— - ... - ——2x2 3x3 mxm例如:若m=5,则应输出:0.536389------------------------------------------------------*/#include <stdio.h>double fun(int m){double y=1.0;int i;/**********FOUND**********/for(i=2;i<m;i--) for(i=2;i<=m;i++) /**********FOUND**********/y-=1/(i*i); y-=1.0/(i*i)/**********FOUND**********/return m; return y}main(){int n=5;printf("\nthe result is %lf\n",fun(n));}【程序设计】---------------------------------------------------------题目:编程求所有4位数,这些数具有以下特点:这数本身是平方数,且其低2位和高2位所组成的2个2位数也是平方数。
要求:使用程序中定义的变量-------------------------------------------------------*/#include <stdio.h>#include <math.h>main(){int qw,bw,sw,gw; // qw千位数bw百位数sw十位数gw个位数int a,b; //a 高两位低两数int i; //循环变量/**********Program**********/for(i=1000;i<10000;i++){qw=i/1000;bw=i/100%10;sw=i/10%10;gw=i%10;1 / 9a=qw*10+bw;b=sw*10+gw;if(sqrt(i)==(int)sqrt(i)&&sqrt(a)==(int)sqrt(a)&&sqrt(b)==(int)sqrt(b)) printf(“%d\n”,i);}/********** End **********/}【程序设计】功能:从键盘为一维整型数组输入10个整数,调用fun 函数找出其中最小的数,并在main函数中输出。
C语言改错题-含答案
![C语言改错题-含答案](https://img.taocdn.com/s3/m/068176d4f9c75fbfc77da26925c52cc58bd69086.png)
第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语言改错题题库及详解答案](https://img.taocdn.com/s3/m/e2d20ab5f9c75fbfc77da26925c52cc58ad6907b.png)
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语言改错题考试题库](https://img.taocdn.com/s3/m/63fe344080eb6294dc886c7a.png)
--------------------------------------------------------
功能:在一个一维整型数组中找出其中最大的数及其下标。
------------------------------------------------------*/
#define N 10
sort(str[N]);
for(i=0;i<N;i++)
printf("%c",str[i]);
printf("\n");
}
sort(char str[N])
{
int i,j; char t;
for(j=1;j<N;j++)
/***********FOUND***********/
for(i=0;i<N-j;i--)
功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。
------------------------------------------------------*/
#include <stdio.h>
#define N 20
void fun(int a[], int n)
{
int i, j, t, p;
------------------------------------------------------*/
#include "conio.h"
#include "stdio.h"
#include "ctype.h"
#include "string.h"
-程序改错部分试题及答案
![-程序改错部分试题及答案](https://img.taocdn.com/s3/m/1600d3f555270722192ef7ed.png)
第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。
程序改错题
![程序改错题](https://img.taocdn.com/s3/m/eb44a9d44028915f804dc291.png)
n(n)= 10 (n=1) fun(n-1)+2 (n>1)
例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
(2)错误:y+=1/(i*i) 正确:y+=1.0/(i*i)
【解析】(1)for (i=2;i<m;i++)中是一个基础的分析错误,应该包括m。(2)y是一个double型变量,题中得出的结果是一个整数,所以改为y+=1.0/(i*i)。
6、下列给定程序中,函数fun的功能是:按如下递归公式求函数值。
/*************found**************/
return I;
}
void main()
{int m;
system("CLS");
pri
ntf("\nPlease enter 1integer number: ");
(2)错误:if (n=1) 正确:if (n==1)
【解析】(1)主函数中已经定义了变量n的类型,在子函数中也要定义。(2)if后面应该紧跟一个条件判断表达式,而n=1是付值表达式,表达式的值永远为真,也就是说这个条件永远成立,没有递归执行。
.
7、下列给定程序中函数fun的功能是:计算n!。例如,给n输入5,则输出120.000000。
试题程序:
#include <stdio.h>
/********found********/
程序改错与填空全部试题
![程序改错与填空全部试题](https://img.taocdn.com/s3/m/a9d2a68d83d049649b6658ce.png)
程序改错、程序填空程序填空:第1题:题目:下面是计算1+1+2+2+…n+n之和的平方根的程序。
SET TALK OFFINPUT TO N*************SPACE******* 【?】FOR I=1 TO N*************SPACE*******S=【?】ENDFOR*************SPACE*******?“结果是”,【?】RETURN答案:(1)S=0 (2)s+2*I (3)SQRT(S)第2题:题目:以下程序通过键盘输入4个数字,找出其中最小的数。
SET TALK OFF*************SPACE******* 【?】INPUT “请输入第一个数字”TO XDO WHILE I<=3M=XINPUT “请输入数字”TO M *************SPACE********* ****IF 【?】M=XENDIF*************SPACE******* 【?】ENDDO?“最小的数是”,MSET TALK ON答案:(1)I=1(2)X<M(3)I=I+1 第3题:题目:以下程序的功能:t=20+21+22+ (2)SET TALK OFF*************SPACE******* 【?】*************SPACE******* 【?】TO NFOR I=0 TO N*************SPACE*******T=T+【?】ENDFOR?“T的值是:”,TSET TALK ONRETURN答案:(1)T=0(2)INPU T(3)2**I第4题:题目:复制表XSDA.DBF,生成新表XS.DBF,在新表中查找所有男同学的记录,并将男同学的记录逻辑删除。
SET TALK OFFUSE XSDA*************SPACE******* 【?】USE XSLOCA TE FOR 性别=“男”DO WHILE FOUND()*************SPACE******* 【?】*************SPACE******* 【?】ENDDOUSESET TALK ON答案:(1)COPY TO XS(2)DELETE(3)CONTINUE第5套:题目:表RSDA.D BF结构为:姓名(C,6);性别(C,2),年龄(N,2),出生日期(D,8)。
VB程序改错题
![VB程序改错题](https://img.taocdn.com/s3/m/c0ef6a61a55177232f60ddccda38376baf1fe09c.png)
VB程序改错题程序改错1.题目:已知C的公式表示如下:'n!'C=------------------'(n-m)!某m!'函数过程fac()求k!函数,在Fomr_Click事件中完成运算,'请修正程序中错误。
'------------------------------------------------OptionE某plicitPrivateFunctionfac(kAInteger)ASingleDim某ASingle,jAInteger 某=0Forj=1Tok某=某^jNe某tjfac=某EndFunctionPrivateSubForm_Click()DimCASingleDimmAInteger,nAIntegerm=Val(InputBo某(\请输入一个整数(m):\n=Val(InputBo某(\请输入一个整数(n):\C=fac(n)/fac(n-m)某fac(m)Print\EndSub2.题目:程序功能为打印下列图形:'某'某某'某某某'某某某某'某某某某某'------------------------------------------------OptionE某plicitPrivateSubForm_Click()ClDimiAIntegerDimjAIntegerFori=1To7Forj=1To5Print\LoopPrintNe某tiEndSub3.题目:本程序的功能是随机产生的10个两位正整数,并进行递减排序。
'------------------------------------------------OptionE某plicitPrivateSubCreateRND()DimTempAIntegerDimIAIntegerDimNAIntegerDim某(10)AIntegerDimJAIntegerN=10Print\数据:\ForI=1ToN某(I)=Int(Rnd()某90)Print某(I);Ne某tIPrintPrint\排序:\ForI=0ToN-1ForJ=I+1ToNIf某(I)>某(J)ThenTemp=某(I)某(J)=某(I)某(I)=TempEndIfNe某tJPrint某(I);Ne某tIPrintEndSub4.题目:随机产生并输出100以内大于50的20个整数,输出时每5个数一行。
c语言程序改错题
![c语言程序改错题](https://img.taocdn.com/s3/m/aef40ffdc8d376eeaeaa31c7.png)
程序改错-------------------------------------1题目:在一个一维整型数组中找出其中最大的数及其下标。
程序中共有4条错误语句,请改正错误。
-----------------*/#define N 10/**********FOUND**********/float fun(int *a,int *b,int n){int *c,max=*a;for(c=a+1;c<a+n;c++)if(*c>max){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;i<N;i++)/**********FOUND**********/scanf("%d",a[i]);/**********FOUND**********/m=fun(a,p,N);printf("max=%d,position=%d",max,p);}-------------------------------------『错误答案』:1 int fun(int *a,int *b,int n)2 *b=c-a;}3 scanf("%d",&a[i]);4 max=fun(a,&p,N);/*-----------------------------------2题目:用起泡法对10个整数从小到大排序。
程序中共有4条错误语句,请改正错误。
-------------------------------------/**********FOUND**********/void sort(int x,int n){int i,j,k,t; for(i=0;i<n-1;i++)/**********FOUND**********/for(j=0;j<n-i;j++)/**********FOUND**********/if(x[i]>x[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;i<n;i++)scanf("%d",&a[i]);sort(a,n);printf("output the sorted array:\n");for(i=0;i<=n-1;i++)printf("%5d",a[i]);printf("\n");}-------------------------------------『错误答案』:1 void sort(int x[],int n)2 for(j=0;j<n-1-i;j++) 或for(j=0;n-1-i>j;j++) 或for(j=0;j<n-(1+i);j++) 或for(j=0;n-(1+i)>j;j++)3 if(x[j]>x[j+1]) 或if(x[j+1]<x[j])-------------------------------------3题目:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
程序改错题汇总
![程序改错题汇总](https://img.taocdn.com/s3/m/1310be51b7360b4c2f3f6436.png)
程序改错题汇总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≠-3f(x)= x*x+5x 0≤x<10且x≠2及x≠3x*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()函数中输出。
VB程序改错40题含答案
![VB程序改错40题含答案](https://img.taocdn.com/s3/m/026c6734f18583d049645985.png)
【程序改错】题目:该程序实现将输入的 0 - 255 之间的正整数转换成二进制数Option ExplicitPrivate Sub Form_Click()Const n = 8Dim a(n) As Integer, s As String, m As Integer, x As Integer x = Val(InputBox("请输入一个 0 - 255 之间的正整数:"))Print xFor m = 1 To na(m) = x Mod 2x = x / 2Next ms = " "For m = n To 0 Step -1s = Str(a(m))Next mPrint sEnd Sub答案:=======(答案1)=======For m = 0 To n=======(答案2)=======x= x \ 2=========或=========x= int(x/2)=======(答案3)=======s = s + Str(a(m))第3题(1.0分)题号:463'【程序改错】'题目:以下程序功能是输入三个数,由大到小排序。
Option ExplicitDim A As IntegerDim B As IntegerDim C As IntegerPrivate Sub Form_Click()Dim nTemp As IntegerA = Val(InputBox("Please input first integer", "输入正整数"))B = Val(InputBox("Please input second integer", "输入正整数"))C = Val(InputBox("Please input third integer", "输入正整数"))If A <= C ThennTemp = AA = BB = nTempEnd IfIf B <= C ThennTemp = AA = CC = nTempEnd IfIf A <= B ThennTemp = BB = CC = nTempEnd IfPrint "The integers in order is"; A; B; CEnd Sub答案:=======(答案1)=======If A <= B Then=========或=========If B >= A Then=======(答案2)=======If A <= C Then=========或=========If C >= A Then=======(答案3)=======If B <= C Then=========或=========If C >= B Then第4题(1.0分)题号:127'【程序改错】'题目:下面程序可输出如下图形:' *' ***' *****' *******' *********'------------------------------------------------Option ExplicitPrivate 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 -1Print Spc(n)For j = 1 To 2 * m - 1Print s;Next jPrintn = n + 1m = m - 1Next iEnd Sub答案:=======(答案1)=======Print Spc(n);=========或=========Print Spc(i);=========或=========? Spc(n);=========或=========? Spc(i);=======(答案2)=======n = n - 1=========或=========n = - 1+n=======(答案3)=======m = m + 1第5题(1.0分)题号:469'【程序改错】'题目:已知一个函数f(x)=1000*sin(x),利用绘图方法' 在图片框中显示其图形。
C语言改错题真题解析(30题)
![C语言改错题真题解析(30题)](https://img.taocdn.com/s3/m/de04c718f5335a8102d220ac.png)
1.改错题(30题)第一题:#include<stdio.h>void main(){int a,b,c;/**/ float f; /**/ f为小数类型,具体下方f的输出用%f可看出为float 类型clrscr();printf("Please input a b :");scanf("%d%d",/**/&a,&b/**/);变量a,b必须取地址,除非数组名不取地址,因数组名就是地址f=/**/ (float)a/b; /**/ a,b均为整数,要获得结果的小数部分必须进行强制类型转换c=(int)((f-(int)f)*10);printf("\n%f %d\n",f,c);getch();}第二题:#include <stdio.h>void find(/**/int m /**/)参数类型必须指出,具体main函数中调用find函数的参数k为int 类型,所以对应的参数m也是int类型{int a1,a2;a1=m%10;求m的个位a2=m/10;求m的十位if(m%3==0 &&(/**/ a1==4 || a2==4 /**/))如果m能被3整除且个位或者十位是4 printf("%d\n",m);则输出m}void main(){ int k;for(k=10;k<=99;k++)k从10到99,一一尝试/**/ find( k ) /**/;调用函数find,函数的作用是寻找满足条件的数getch();}第三题:#include<stdio.h>void main(){/**/ int a,tag; /**/语法错误c语言的变量区分大小写,程序中用到小写tag,此处改为小写int num1=0,num2=0; num1和num2分别为大于个数和小于个数的计数器,程序开始归零clrscr();printf("please input numbers :");scanf("%d",/**/ &a /**/);语法错误变量a需取地址,输入第一个数tag=a;将第一个数放入tag中while(a)程序以0结束,循环的条件为:只要不输入0{ scanf("%d",&a);程序循环输入数字,存入a/**/ if(!a) /**/ continue;逻辑错误,程序执行的条件,a不为0else if(a<tag) num1++;如果a中数比tag小,计数器num1增加1else if(a>tag) num2++;如果a中数比tag大,计数器num2增加1}printf("\n%d %d\n",num1,num2);getch();}第四题:#include <stdio.h>long int fsum(int n) fsum函数用于求阶乘{long int k;if(n==1)/**/ k=1 /**/;逻辑错误,1的阶乘为1elsek=n*fsum(n-1);n的阶乘为n-1的阶乘乘以nreturn (/**/ k /**/);逻辑错误,运算结果在k中}void main(){ int i;long int sum;sum=0;for(i=1;i<=9;/**/ i++,i++ /**/)语法错误for语句格式不符sum+=fsum(i);printf("sum=%ld\n",sum);getch();}第五题:#include<stdio.h>void main(){ int i,a=0;/**/char c1,c2; /**/ 语法错误c1,c2为字符类型,程序中用getchar()获取clrscr();printf("Enter an 8 bit binary number :");c2=getchar();/**/ for(i=1;i<=7;i++) /**/语法错误for语句中间为;{ c1=getchar();a=a*2+c1-'0';}/**/ if (c2=='1') /**/ a=(-1)*a;如果依照题意c2=='1',a是负数printf("\n%d \n",a);getch();}第六题:#include<stdio.h>void main( ){int i,n;/**/ n = 0; /**/n为计数器,从0开始for(i=10;i<=100;i++)判断10-99是否是对称数if(i/10==i%10) i/10得到十位,i%10得到个位,若相等则是对称数{printf("%5d",i);输出对称数n++;计数器增加1if(/**/ n%9==0 /**/)语法错误表示相等的关系用双等号;printf("\n");9个数一行输出,换行}for(i=100;i<=999;i++)判断100-999是否是对称数if(/**/ i/100==i%10 /**/) i/100得到百位,i%10得到个位,若相等则是对称数{printf("%5d",i);n++;if(n%9==0)printf("\n");}getch();}第七题:#include <stdio.h>void main(){/**/ int a[10]; /**/语法错误数组下标用中括号;int i,j,k,x;printf("Enter 10 numbers:");scanf("%d",/**/ &x /**/);语法错误x需取地址;a[0]=x;for(k=1;k<=9;k++){ scanf("%d",&x);for(i=0;i<k;i++)if (a[i]>x) break;if(i<k)for(j=k;j>i;j--) a[j]=a[j-1];a[i]=x;}/**/ for(i=0;i<10;i++) /**/逻辑错误,数组下标从0开始printf("%d ",a[i]);printf("\n");getch();}第八题:#include <stdio.h>#include <math.h>int fun( /**/ float a,float b,float c /**/)语法错误函数三个参数的类型此处必须列出;{float t;int mk = 0;if(c<a){ t = a; a = c; c = t;}if(c<b){ t = b; b = c; c = t;}通过以上两次比较将最大的边放入c中if( fabs( c*c - (a*a+b*b)) < 1.0e-8)mk = 1;/**/ return mk; /**/}main(){float a,b,c;printf("Please input three numbers(a b c):\n");scanf("%f%f%f",&a,&b,&c);if(/**/ fun(a,b,c) /**/== 1)法错误调用函数三个参数之间用,分隔;printf("Yes\n");elseprintf("No\n");getch();}第9题:基本思路:每一趟从待排序的数列中选出值最小(或最大)的数据,将它与当前待排序的子数列的最后一个数据进行交换,直到全部数据排序完毕。
Python改错题
![Python改错题](https://img.taocdn.com/s3/m/118a19f581eb6294dd88d0d233d4b14e85243eef.png)
题目:读入一个整数k(2<k<10000),打印它的所有质因子(即所有为素数的因子)。
请改正程序中的错误,使它能得出正确的结果。
例如:若输入整数:2310,则应输出:2、3、5、7、11。
请改正程序中的语法错误,使程序能得出正确的结果。
题目:设计一个猜字母的程序,程序随机给出26个小写字母中的一个,答题者输入猜测的字母,拖输入的不是26个小写字母之一,让用户重新输入;若字母在答案之前或之后,程序给出相应正确提示;若答错10(含)次,则答题失败并退出游戏;若回答正确,程序输出回答次数并退出游戏。
注意:不可以增加或删除程序行,也不可以更改程序的结构。
题目:判断整数x是否是同构数。
若是同购数,函数返回1;否则返回0.请改正程序中的错误,使它能得出正确的结果。
说明:所谓“同构数”是指这个数出现在它的平方数的右边。
x的值由主函数从键盘读入,要求不大于1000.例如:输入整数25,25的平方数是625,25是625中右侧的数,所以25是同构数。
题目:编写函数fun计算下列分段函数的值:x*x+xx<0且x≠-3f(x)= x*x+5x0<x<10且x≠2及x≠3x*x+x-1其它请改正程序中的错误,使它能得出正确的结果。
题目:计算正整数num的各位上的数字之积。
请改正程序中的错误,使它能得出正确的结果。
例如:若输入:252,则输出应该是:20。
若输入:202,则输出应该是:0。
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。
问第4个人岁数,他说比第3个人大2岁。
问第三个人,又说比第2人大两岁。
问第2个人,说比第一个人大两岁。
最后问第一个人,他说是10岁。
请问第五个人多大?题目:输入一个时间(小时:分钟秒),输出该时间经过5分30秒后的时间。
题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。
题目:由N个有序整数组成的数列已放在列表中,下列给定程序中函数fun的功能是:利用折半查找法查找整数m在列表中的位置。
汇编语言改错题
![汇编语言改错题](https://img.taocdn.com/s3/m/9eb2ded8bb0d4a7302768e9951e79b89680268dd.png)
汇编语言改错题
1. 错误:MOV AX, [BX+SI+10H]
正确:MOV AX, [BX+SI+16H]
参考:在使用地址计算方式时,需要注意偏移量的单位,一般使用十六进制表示。
2. 错误:ADD AX, 1000H
正确:ADD AX, 1000
参考:在进行加法运算时,如果操作数是一个立即数,可以省略单位。
3. 错误:CMP AL, BH
正确:CMP AL, BL
参考:在比较两个寄存器的值时,需要确保它们的位数相同,否则会发生错误。
4. 错误:LEA BX, [DI+10H]
正确:LEA BX, [DI+16H]
参考:LEA 指令计算的是地址,偏移量也需要使用十六进
制表示。
5. 错误:PUSH AX, BX
正确:PUSH AX; PUSH BX
参考:PUSH 指令每次只能将一个操作数入栈,如果需要入栈多个操作数,则需要使用多个 PUSH 指令。
名企笔试之改错题(CC++)
![名企笔试之改错题(CC++)](https://img.taocdn.com/s3/m/38c7e69ad1d233d4b14e852458fb770bf78a3b34.png)
名企笔试之改错题(CC++) 2.找错题 试题1:void test1(){ char string[10]; char* str1 = "0123456789"; strcpy( string, str1 );} 试题2:void test2(){ char string[10], str1[10]; int i; for(i=0; i<10; i++) { str1 = 'a'; } strcpy( string, str1 );} 试题3:void test3(char* str1){ char string[10]; if( strlen( str1 ) <= 10 ) { strcpy( string, str1 ); }} 解答: 试题1字符串str1需要11个字节才能存放下(包括末尾的’\0’),⽽string只有10个字节的空间,strcpy会导致数组越界; 对试题2,如果⾯试者指出字符数组str1不能在数组内结束可以给3分;如果⾯试者指出strcpy(string, str1)调⽤使得从str1[url=]内存[/url]起复制到string内存起所复制的字节数具有不确定性可以给7分,在此基础上指出库函数strcpy⼯作⽅式的给10分; 对试题3,if(strlen(str1) <= 10)应改为if(strlen(str1) < 10),因为strlen的结果未统计’\0’所占⽤的1个字节。
剖析: 考查对基本功的掌握: (1)字符串以’\0’结尾; (2)对数组越界把握的敏感度; (3)库函数strcpy的⼯作⽅式,如果编写⼀个标准strcpy函数的总分值为10,下⾯给出⼏个不同得分的答案: 2分void strcpy( char *strDest, char *strSrc ){ while( (*strDest++ = * strSrc++) != ‘\0’ );} 4分void strcpy( char *strDest, const char *strSrc )//将源字符串加const,表明其为输⼊参数,加2分{ while( (*strDest++ = * strSrc++) != ‘\0’ );} 7分void strcpy(char *strDest, const char *strSrc){ //对源地址和⽬的地址加⾮0断⾔,加3分 assert( (strDest != NULL) && (strSrc != NULL) ); while( (*strDest++ = * strSrc++) != ‘\0’ );} 10分//为了实现链式操作,将⽬的地址返回,加3分!char * strcpy( char *strDest, const char *strSrc ){ assert( (strDest != NULL) && (strSrc != NULL) ); char *address = strDest; while( (*strDest++ = * strSrc++) != ‘\0’ ); return address;} 从2分到10分的⼏个答案我们可以清楚的看到,⼩⼩的strcpy竟然暗藏着这么多⽞机,真不是盖的!需要多么扎实的基本功才能写⼀个完美的strcpy啊! (4)对strlen的掌握,它没有包括字符串末尾的'\0'。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
++n;
s+=n;
}
cout<<"n="<<n<<'\t'<<"s="<<s<<'\n';
}
4、
#include<iostream.h>
#include<math.h>
void main()
{
float x0,x1,x2;
double y0,y1,y2;
do{
cout<<"请输入方程的两个初始区间值:";
else{
for(b=0;a;b++)
{
c=a%10;
cout<<'\t'<<c;
a=a/10;
}
cout<<"共"<<b<<"位数";//当输入数字是012时,其实输入的是八进制数,对应的十进制是10。
}
}
2、参考程序
#include<iostream.h>
void main()
{
int a,b,c;
else if(c!=0)cout<<m<<"是个3位数,"<<"逆序各位数字是"<<a<<'\t'<<b<<'\t'<<c<<endl;
else if(b!=0)cout<<m<<"是个2位数,"<<"逆序各位数字是"<<a<<'\t'<<b<<endl;
else cout<<m<<"是个1位数,"<<"逆序各位数字是"<<a<<endl;
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)="<<zh(4,2)<<'\n';
cout<<"C(6,4)="<<zh(6,4)<<'\n';
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
方法一:
#include <iostream.h>
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;//万位
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<<i<<'\t';//i为完数
}
}
实验三函数与编译预处理(一)
三、改错题
答案:
增加#include<math.h>
fun(m);
cout<<"\""<<endl;
}
实验四数组的应用(一)
一、程序设计题
1、定义一个10个整数的数组,从键盘输入数据,设计一程序,找出其中最大的偶数和最大的奇数(若设有奇数时,输出“没有奇数!”,若没有偶数,输出“没有偶数!”)。
2、设计一程序,定义重载函数area,分别求圆和长方形的面积。
3、用递归法将一个整数n转换成字符串。例如,输入整数567,应输出字符串“567”。n的位数不确定,可以是任意的整数。
参考程序:
1、//myfun.h来自floatmax(floatx,floaty)
{floatz;
if(x>y)z=x;
elsez=y;
y0=x0*x0+4*x0-4;
}while(fabs(y0)>1e-5);
cout<<"方程x^2+4x-4=0的解为"<<x0<<endl;
}
实验二VC++流程控制语句(三)
二、改错题
答案:
增加#include <math.h>
j=sqrt(i);修改为:intj=sqrt(i);
if(i%n=0) break;修改为:if(i%n==0) break;
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的阶乘。
cout<<"\n负数有"<<n<<"个";
cout<<"\n正数之和为:"<<s1;
cout<<"\n负数之和为:"<<s2;
cout<<"\n总的平均为:"<<(s1+s2)/(m+n)<<'\n';
}
3、
#include <iostream.h>
void main(){
int n=0,s=0;
}
//当输入数字是012时,其实输入的是八进制数,对应的十进制是10。
方法二:
#include <iostream.h>
void main()
{
int a,b,c;//b表示所输入数的位数
cout<<"请输入一个不多于5位数的正整数:";
cin>>a;
cout<<"从个位到万位分别为:";
if(a==0) cout<<a<<"共1位数";
if(e!=0) cout<<m<<"是个5位数,"<<"逆序各位数字是"<<a<<'\t'<<b<<'\t'<<c<<'\t'<<d<<'\t'<<e<<endl;
else if(d!=0) cout<<m<<"是个4位数,"<<"逆序各位数字是"<<a<<'\t'<<b<<'\t'<<c<<'\t'<<d<<endl;
#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<<"圆的面积为:"<<area(r)<<endl;
cout<<"长方形的面积为:"<<area(a,b)<<endl;
}
3、#include<iostream.h>
void fun(int n)
{
int a,b;
a=n%10;
b=n/10;
if(b) fun(b);
cout<<a;
}
void main()
{