C语言程序改错题汇总.doc
C语言程序改错题及答案

#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语言

(一)功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。
#include "stdio.h"#define N 20void fun(int a[], int n){int i, j, t, k;for (j = 0 ;j < n-1 ;j++){/**********ERROR**********/k = jfor (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<n; k++){d = a+b+c;/**********ERROR**********/a=bb=c;c=d;}/**********ERROR**********/return k;}main( ){int n = 15;printf( "The value is: %ld\n", fun ( n ) );}【参考答案】for (k=4; k<=n; k++)【参考答案】a=b;【参考答案】return d;(三)功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
C语言考试改错

第一套改错:fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
1、m=0; 改为m=i;2、if(a[k]>a[m]) k=m;改为if(a[k]>a[m]) m=k;第二套改错:fun的功能是:判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
1、void fun(char str, char ch ) 改为void fun(char *str, char ch ) 2、if ( *str == ch )改为if ( *str! = ch )3、str[1] = '0';改为str[1] = 0;第四套改错:fun函数的功能是:将p所指字符串中的每个单词的最后一个字母改成大写。
(这里的“单词”是指由空格隔开的字符串)。
1、if( p == ' ' )改为if( *p == ' ' )2、* (p-1) = toupper( *( p - 1 ) ) 改为* (p-1) = toupper( *( p - 1 ) );第六套改错:fun函数的功能是:tt所指字符串中的小写字母都改为对应的大写字母,其他字符不变。
1、if(( ‘a’ <= tt[i] )||( tt[i] <= ‘z’ ) )改为if(( ‘a’ <= tt[i] )&&( tt[i] <= ‘z’ ) )2、tt[i] + = 32;改为tt[i] - = 32;第三套改错:fun的功能是:计算整数n的阶乘。
1、result*=--n; 改为result*=n--;2、return _____;改为returnresult;第五套改错:fun函数的功能是:根据形参m,计算如下公式的值。
t=1+1/2+1/3+1/4+……+1/m1、t + = 1.0/k; 改为t + =1.0/i;2、________改为return t;第七套改错:fun函数的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。
程序改错完整版---C语言

(一)功能:用选择法对数组中的 #include "stdio.h"n 个元素按从小到大的顺序进行排序#define N 20 void fun(int a[], int n){int i, j, t, k;for (j = 0 ;j < n-1 ;j++) {k = jfor (i = j+1;i < n; i++)if(a[i] >a[k])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]) ERROR* ERROR* ERROR*参考答案】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<n; k++) {d = a+b+c;ERROR*a=bb=c; c=d;}ERROR*return k;}main( ){int n = 15;printf( "The value is: %ld\n", fun ( n ) ); }【参考答案】for (k=4; k<=n; k++) 【参考答案】a=b;【参考答案】return d;(三)功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
大学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语言改错题题库及详解答案1. 题目:以下代码段中存在错误,请找出并改正。
```c#include <stdio.h>int main() {int a = 10;int b = 20;int c = a + b;printf("The sum is %d", c);return 0;}```答案:代码中缺少了字符串结束的空格。
应改为:```cprintf("The sum is %d ", c);```2. 题目:找出并改正以下代码段中的错误。
```c#include <stdio.h>int main() {int num = 100;if (num = 100)printf("Number is 100\n");return 0;}答案:代码中使用了赋值运算符 "=" 而不是比较运算符 "=="。
应改为:```cif (num == 100)```3. 题目:以下代码段中存在逻辑错误,请指出并改正。
```c#include <stdio.h>int main() {float a, b, c;scanf("%f %f", &a, &b);c = a / b;printf("The result is %f", c);return 0;}```答案:代码中没有检查除数 b 是否为 0,这会导致运行时错误。
应添加检查:```cif (b != 0) {c = a / b;printf("The result is %f", c);} else {printf("Error: Division by zero.\n");}```4. 题目:找出并改正以下代码段中的语法错误。
c语言程序改错题
【程序改错】功能: 根据整型形参m的值, 计算如下公式的值。
1 1 1.....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;1a=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语言程序改错题
程序改错-------------------------------------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题目:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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*xx x0.0 { 累计营业额;输入下一笔交易额;} 输出营业额;} 记一笔交易额为变量sale,营业额为sigma。
124、一个整数,它加上100后是一个完全平方数,再
加上168又是一个完全平方数,请问该数是多少125、编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。
例如输入35=或5-2=或3*4=或4/2=,求表达式结果。
126、输入字符序列,字符序列以特殊字符“”结束。
程序从前向后依次读入字符,并翻译出新的字符输出。
翻译的规则是如果当前读入的字符是数字符,如果该字符的面值为n,则它的后一个字符包括数字符需重复输出n1次如果当前读入的字符不是数字符,则输出该字符。
输出时,以上述一次翻译为一组,不同组间输出用一个空白字符隔开。
翻译直至当前读入的字符为字符‘’,结束翻译和输出。
127、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下每位数字都加上5,然后除以10的余数代替该位数字。
再将新生成数据的第一位和第四位交换,第二位和第三位交换。
例如输入一个四位整数1234,则结果为9876。
128、根据整型形参m,计算如下公式的值y1/2+1/8+1/18+...+1/2m*m 129、利用条件运算符的嵌套来完成此题学习成绩90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
130、实现3行3列矩阵的转置,即行列互换。
131、将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如当s中的数为87653142时,t中的数为7531。
132、下题是一段有关结构体变量传递的程序. 133、有n 个人围成一圈,顺序排号。
从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
134、企业发放的奖金根据利润提成。
利润I低于或等于10万元时,奖金可提10;利润高于10万元,低于20万元时,低于10万元的部分按10提成,高于10万元的部分,可可提成7.5;20万到40万之间时,高于20万元的部分,可提成5;40万到60万之间时高于40万元的部分,可提成3;60万到100万之间时,高于60万元的部分,可提成1.5,高于100万元时,超过100万元的部分按1提成,从键盘输入当月利润I,求应发放奖金总数135、将字符串s中最后一次出现的子字符串t1替换成字符串t2,所形成的新串放在w所指的数组中,在此处,要求t1和t2所指字符串的长度相同。
136、计算正整数num的各位上的数字之积。