C语言程序改错题
C语言程序改错题库

int i,j; char t; for(j=1;j<N;j++)
/***********FOUND***********/ for(i=0;i<N-j;i--)
/***********FOUND***********/ if(str[i]<str[i+1]) {
/**********FOUND**********/ int i;j; /**********FOUND**********/ for(i=1; i < 3; i++)
for(j=0; j < 3; j++) /**********FOUND**********/ array[i][j]=array[i][j]/5;
第 3 题 (10.0 分) /*------------------------------------------------------
} } for(p=str;*p;p++) {
for(q=p;*p==*q;q++); strcpy(p+1,q); } printf("结果字符串:%s\n\n",str); getch(); } 答案:
#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; }
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语言程序改错练习题

C语言程序改错练习题程序改错练习题下面每个程序的划线处有语法或逻辑错误,请找出并改正,使程序符合题意。
1.求1?2?3?4? ?nmain(){ int sum; 正确:int sum=1;int n,i=1;scanf("%d",n); scanf(“%d”,&n);printf(“\n”);while(i<="n)</p">{ sum=sum*i;i++; }printf("sum=%c",sum); printf("sum=%d",sum);}2.求一个数组中最大值及其下标。
main( ){ int max,j,m;int a[5];for(j=1;j<=5;j++) 正确:for(j=0;j<5;j++)scanf(“%d”,a); scanf(“%d”,&a[j]);max=a[0];for(j=1;j<=5;j++) for(j=0;j<5;j++)if(max>a[j]) if(max<a[j])< p="">{ max=a[j];m=j;}printf(“下标:%d\n最大值:%d”, j, max) printf(“下标:%d\n 最大值:%d”, m,max);}3.用一个函数求两个数之和。
sum(x,y) 正确:float sum(float x, float y ){ float z;z=x+y;return ; return z;}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存较小的数#includemain( ){int x , y=200 , z=0;x=180;if ( x<y)< p="">z=x; x=y; y=z; 正确:{ z=x;x=y;y=z;}printf(“x=%d,y=%d\n”,&x,&y);printf(“x=%d,y=%d\n”,x,y);}5.用指针作函数参数,对输入的两个整数按大小顺序输出。
C语言程序改错

/* -----------------------------------------------------【程序改错】题目:给一个不多于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 are5, %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)/* -----------------------------------------------------【程序改错】题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后除以10 的余数代替该位数字。
C语言程序改错题汇总.doc

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的余数代替该位数字。
大学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语言题库改错题及详解答案

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语言改错题-含答案

第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个随机整数从小到大排序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3). t[2*sl] = '\0';
或 t[2*sl] = 0;
第 2 题 【程序改错】
功能:求出以下分数序列的前 n 项之和。和值通过函数值返回
函数。
2/1+3/2+5/3+8/5+
13/8&:若 n = 5 ,则应输出: 。
------------------------------------------------------*/
第 6 题 【程序改错】 --------------------------------------------------------
功能:读入一个整数 k(2 ≤k≤10000) ,打印它的所有质因子(即 所有为素数的因子) 。
例如:若输入整数: 2310,则应输出: 2、 3、 5、 7、 11 。 请改正程序中的语法错误,使程序能得出正确的结果。
第 7 题 【程序改错】 --------------------------------------------------------
功能:为一维数组输入 10 个整数;将其中最小的数与第一个数 对换,将最大的数与最后一个数对换,输出数组元素。
------------------------------------------------------*/ #include <> main() {
#include <> #include <> #include <>
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"; }
int a[10]; void input(); void output(); void max_min(); input(a,10); max_min(a,10); output(a,10); }
void input(int *arr,int n) {
int *p,i; p=arr; printf("please enter 10 integers:\n"); for(i=0;i<n;i++) /**********FOUND**********/ scanf("%d",p); }
int n,s; /**********FOUND**********/ s==n=0; /**********FOUND**********/ while(s>1000) {
++n; s+=n*n; } /**********FOUND**********/ printf("n=%d\n",&n-1); } 答案: 1). s=n=0; 2). while(s<=1000) 3). printf("n=%d\n",n-1);
/**********FOUND**********/ if ( n%i ) {
m = 0; break; } /**********FOUND**********/ return n ; }
main( ) {
int j, k; printf( "\nPlease enter an integer number between 2 and 10000: " );
第 1 题 【程序改错】 功能:先将在字符串 s 中的字符按逆序存放到 t 串中,然后把 s 中的
字符按正序连接到 t 串的后面。 例如:当 s 中的字符串为:“ ABCD”E 时,则 t 中的字符串应为:
“ EDCBAABC”DE。
------------------------------------------------------*/
#include <> #include <>
/**********FOUND**********/ fun ( int n ) {
int a, b, c, k; double s; s = ; 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; }
double rnd ( ) {
static t = 29, c = 217, m = 1024, r = 0; r =( r*t + c )%m; return( ( double )r/m ); }
getarr( int n, int *x ) {
int i; for( i = 1; i <= n; i++, x++ ) *x = ( int )( 50*rnd() ); }
第 4 题 【程序改错】 --------------------------------------------------------
功能:以下程序能求出 最大的 n。
1*1+2*2+......+n*n<=1000
中满足条件的
------------------------------------------------------*/ #include <> #include "" main() {
------------------------------------------------------*/
#include "" #include <>
sortpb ( int n, int *a ) {
/**********FOUND**********/ int i, j, p, t for ( j = 0; j < n-1 ; j++ ) {
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=s+a/(double)b;
第 5 题 【程序改错】 --------------------------------------------------------
功能:求出 a 所指数组中最大数和次最大数 ( 规定最大数和次最大 数不在 a[0] 和 a[1] 中 ) ,依次和 a[0] 、 a[1] 中的数对调。
例如:数组中原有的数: 7、 10、 12、 0、 3、 6、 9、 11、 5、 8, 输出的结果为: 12、 11 、 7、 0、 3、 6、 9、 10、 5、 8。
if ( a[k]>max1 ) {
max2 = max1; m2 = m1; max1 = a[k]; m1 = k; } /**********FOUND**********/ else if( a[k]>max1 ) { max2 = a[k]; m2 = k; } /**********FOUND**********/ t = a[0]; a[m1]=a[0]; a[m1] = t; /**********FOUND**********/ t = a[1]; a[m2]=a[1]; a[m2] = t; }
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];
void max_min(int *arr,int n) {
main( ) {
int b[N]={7,10,12,0,3,6,9,11,5,8}, n=10, i; for ( i = 0; i<n; i++)
printf("%d ",b[i]); printf("\n");
fun (b, n); for ( i=0; i<n; i++ )
printf("%d ",b[i]); printf("\n"); } 答案: 1). else if( a[k]>max2 ) 2). t = a[0]; a[0]=a[m1]; a[m1] = t; 3). t = a[1]; a[1]=a[m2]; a[m2] = t;
3). return s;
或 s += a /(double)b;
或
第 3 题 【程序改错】 功能:读入一个整数 m( 5 ≤m≤20 ) ,函数 getarr 调用函数 rnd 获
得 m个随机整数,函数 sortpb 将这 m个随机整数从小到大排序。 例如:若输入整数 7,则应输出: 3 10 17 28 32 36 47 。