C语言程序改错题
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语言程序改错题

第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语言程序改错题汇总.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个随机整数从小到大排序。
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语言程序改错题

第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)。
第12次上机程序改错第1题
【程序改错】
--------------------------------------------------------
功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。
例如:输入圆的半径值:19.527 输出为:s = 598.950017。
------------------------------------------------------*/
#include <stdio.h>
#include <conio.h>
/**********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 <conio.h>
#include <stdio.h>
#include <string.h>
void fun (char *s, char *t)
{
/**********FOUND**********/
int i; int sl,i;
sl = strlen(s);
for (i=0; i<sl; i++)
/**********FOUND**********/
t[i] = s[sl-i]; t[i]=s[sl];
for (i=0; i<sl; i++)
t[sl+i] = s[i]; t[sl+i]=s[sl-i-1];
/**********FOUND**********/
t[2*sl] = "0"; 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);
}
第3题【程序改错】
功能:求出以下分数序列的前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 ) double 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; s=s+(double)a / b;
c = a;
a = a + b;
b = c;
}
/**********FOUND**********/
return c; return s;
}
main( )
{
int n = 5;
printf( "\nThe value of function is: %lf\n", fun ( n ) );
}
第4题【程序改错】
--------------------------------------------------------
功能:以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的
最大的n。
------------------------------------------------------*/
#include <stdio.h>
#include "string.h"
main()
{
int n,s;
/**********FOUND**********/
s==n=0; s=0,n=0;
/**********FOUND**********/
while(s>1000) while(s<=1000) {
++n;
s+=n*n;
}
/**********FOUND**********/
printf("n=%d\n",&n-1); printf("n=%d\n",n-1);
}
第5题
【程序改错】
--------------------------------------------------------
功能:利用二维数组输出如图所示的图形。
*******
*****
***
*
***
*****
*******
------------------------------------------------------*/ #include <stdio.h>
#include <conio.h>
/**********FOUND**********/
#define N= 7 #define N 7
main()
{
char a[N][N];
int i,j,z;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
/**********FOUND**********/
a[i][j]=; a[i][j]=’’;。