c程序改错题——有答案
- 格式:docx
- 大小:46.42 KB
- 文档页数:35
(一)功能:用选择法对数组中的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语言题库改错题及详解答案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. 题目:编写一个程序,实现字符串的反转。
第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语言是一种广泛使用的计算机编程语言,它以其高效性、灵活性和强大的功能而受到程序员的青睐。
然而,即使是经验丰富的程序员也难免会在编写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语言改错题题库及详解答案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. 题目:找出并改正以下代码段中的语法错误。
/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求如下表达式:1 1 1S = 1 + —— + ——— + ...... + ———————1+2 1+2+3 1+2+3+......+n ------------------------------------------------------*/#include <stdio.h>main(){int n;double fun();printf("Please input a number:");/**********FOUND**********/print("%d",n) ;printf("%10.6f\n",fun(n));}/**********FOUND**********/fun(int n){int i,j,t;double s;s=0;/**********FOUND**********/while(i=1;i<=n;i++);{t=0;for(j=1;j<=i;j++)t=t+j;/**********FOUND**********/=s+1/t;}return s;}/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:判断m是否为素数,若是返回1,否则返回0。
------------------------------------------------------*/#include <stdio.h>/**********FOUND**********/void fun( int n){int i,k=1;if(m<=1) k=0;/**********FOUND**********/for(i=1;i<m;i++)/**********FOUND**********/if(m%i=0) k=0;/**********FOUND**********/return m;}void main(){int m,k=0;for(m=1;m<100;m++)if(fun(m)==1){printf("%4d",m);k++;if(k%5==0) printf("\n");}}/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:用下面的和式求圆周率的近似值。
第1题程序改错功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面;例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”;------------------------------------------------------/ include <>include <>include <>void fun char s, char t{/FOUND/int i;sl = strlens;for i=0; i<sl; i++/FOUND/ti = ssl-i;for i=0; i<sl; i++tsl+i = si;/FOUND/t2sl = "0";}main{char s100, t100;printf"\nPlease enter string s:"; scanf"%s", s;funs, t;printf"The result is: %s\n", t;}答案:1. int i,sl;2. ti = ssl-i-1;3. t2sl = '\0'; 或 t2sl = 0;第2题程序改错功能:求出以下分数序列的前n项之和;和值通过函数值返回main 函数;2/1+3/2+5/3+8/5+13/8+21/13 ……例如:若n = 5,则应输出:;------------------------------------------------------/ 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 = doublea / 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 funint n2. s = s + doublea / b; 或 s += doublea / b; 或 s += a /doubleb; 或 s=s+a/doubleb;3. return s;第3题程序改错功能:读入一个整数m 5≤m≤20 ,函数getarr调用函数rnd获得m个随机整数,函数sortpb将这m个随机整数从小到大排序;例如:若输入整数7,则应输出:3 10 17 28 32 36 47;------------------------------------------------------/include ""include <>sortpb int n, int a{/FOUND/int i, j, p, tfor j = 0; j < n-1 ; j++{p = j;for i = j + 1; i < n ; i ++/FOUND/if ap > aj p = i;/FOUND/if p == j{t = aj;aj = ap;ap = t;}}}double rnd{static t = 29, c = 217, m = 1024, r = 0;r = rt + c %m; return double r/m ;}getarr int n, int x{int i;for i = 1; i <= n; i++, x++ x = int 50rnd ;}putarr int n, int z{int i;for i = 1; i <= n; i++, z++{printf "%4d", z ;if i%10 printf "\n" ;}printf"\n";}main{int aa20, n;printf "\nPlease enter an integer number between 5 and 20: " ; scanf "%d", &n ;getarr n, aa ;printf "\n\nBefore sorting %d numbers:\n", n ; putarr n, aa ; sortpb n, aa ;printf "\nAfter sorting %d numbers:\n", n ; putarr n, aa ;}答案:1. int i, j, p, t;2. if ap > ai p = i;3. if p = j第4题程序改错--------------------------------------------------------功能:以下程序能求出11+22+......+nn<=1000中满足条件的最大的n;------------------------------------------------------/include <>include ""main{int n,s;/FOUND/s==n=0;/FOUND/whiles>1000{++n;s+=nn;}/FOUND/printf"n=%d\n",&n-1;}答案:1. s=n=0;2. whiles<=10003. printf"n=%d\n",n-1;第5题程序改错-------------------------------------------------------- 功能:求出a所指数组中最大数和次最大数规定最大数和次最大数不在a0和a1中,依次和a0、a1中的数对调;例如:数组中原有的数:7、10、12、0、3、6、9、11、5、8, 输出的结果为:12、11、7、0、3、6、9、10、5、8;------------------------------------------------------/ include <>include <>define N 20void fun int a, int n{int k,m1,m2,max1,max2,t;max1=max2= -32768; m1=m2=0;for k = 0; k < n; k++if ak>max1{max2 = max1; m2 = m1;max1 = ak; m1 = k;}/FOUND/else if ak>max1{max2 = ak; m2 = k; }/FOUND/t = a0;am1=a0;am1 = t;/FOUND/t = a1;am2=a1;am2 = t;}main{int bN={7,10,12,0,3,6,9,11,5,8}, n=10, i;for i = 0; i<n; i++printf"%d ",bi;printf"\n";fun b, n;for i=0; i<n; i++printf"%d ",bi;printf"\n";}答案:1. else if ak>max22. t = a0; a0=am1; am1 = t;3. t = a1; a1=am2; am2 = t;第6题程序改错-------------------------------------------------------- 功能:读入一个整数k2≤k≤10000,打印它的所有质因子即所有为素数的因子;例如:若输入整数:2310,则应输出:2、3、5、7、11;请改正程序中的语法错误,使程序能得出正确的结果;------------------------------------------------------/ include ""include <>/FOUND/isPrimeinteger n{int i, m;m = 1;for i = 2; i < n; i++/FOUND/if n%i{m = 0;break;}/FOUND/return n ;}main{int j, k;printf "\nPlease enter an integer number between 2 and 10000: " ; scanf "%d", &k ;printf "\n\nThe prime factors of %d is are :", k ;for j = 2; j <= k; j++if k%j&& IsPrimej printf "\n %4d", j ;printf"\n";}答案:1. IsPrimeint n2. ifn%i3. return m ;第7 题程序改错--------------------------------------------------------功能:为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换,输出数组元素;------------------------------------------------------/include <>main{int a10;void input;void output;void max_min;inputa,10;max_mina,10;outputa,10;}void inputint arr,int n{int p,i;p=arr;printf"please enter 10 integers:\n";fori=0;i<n;i++/FOUND/scanf"%d",p;}void max_minint arr,int n{int min,max,p,t;min=max=arr;forp=arr+1;p<arr+n;p++/FOUND/ifp<maxmax=p;else ifp<min min=p;t=arr;arr=min;min=t;/FOUND/ifmax=arr max=min;t=arr+n-1;arr+n-1=max;max=t;}void outputint arr,int n{int p,i;p=arr;printf"The changed array is:\n";/FOUND/whilei=0;i<n;i++printf"%3d",p++;printf"\n";}答案:1. scanf"%d",p ++; 或 scanf"%d",arri; 或 scanf"%d",p+i; 或 scanf"%d",arr+i;2. ifp>max 或 ifmax<p3. if max == arr4. fori=0;i<n;i++ 或 fori=0;n>i;i++ 或 forp=arr;p<arr+n; 或 fori=0;i<=n-1;i++ 或fori=0;n-1>=i;i++ 或 forp=arr;p<=arr+n-1; 或 forp=arr;arr+n-1>=p;第8题程序改错--------------------------------------------------------功能:求出在字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL;例如:当字符串中的内容为:"abcdabfabcdx",t中的内容为:"ab"时,输出结果应是:abcdx;当字符串中的内容为:"abcdabfabcdx",t中的内容为:"abd"时,则程序输出未找到信息:not found;------------------------------------------------------/include <>include <>include <>char fun char s, char t{char p , r, a;/FOUND/a == NULL;while s{p = s;r = t;while r/FOUND/if r == p{r++;p++;}elsebreak;/FOUND/if r ='\0' a = s;s++;}return a ;}main{char s100, t100, p;printf"\nPlease enter string S :"; scanf"%s", s ;printf"\nPlease enter substring t :"; scanf"%s", t ;p = fun s, t ;if pprintf"\nThe result is : %s\n", p;elseprintf"\nNot found \n" ;}答案:1. a = NULL;2. if r == p3. if r == '\0' a = s;第9题程序改错-------------------------------------------------------- 功能:从m个学生的成绩中统计出高于和等于平均分的学生人数, 此人数由函数值返回;平均分通过形参传回,输入学生成绩时,用-1结束输入,由程序自动统计学生人数;例如:若输入 8 名学生的成绩,输入形式如下:60 72 98 88 64 -1结果为:The number of students :4Ave = ;------------------------------------------------------/include <>include <>define N 20int fun float s, int n, float aver{float av, t ; int count , i;count = 0; t=;for i = 0; i < n; i++ t += s i ;av = t / n; printf "ave =%f\n",av ;for i = 0; i < n; i++/FOUND/if s i < av count++;/FOUND/aver = av;/FOUND/return count}main{float a, s30, aver;int m = 0;printf "\nPlease enter marks -1 to end:\n ";scanf"%f",&a ;while a>0{sm = a;m++;scanf "%f", &a ;}printf "\nThe number of students : %d\n" , fun s, m, &aver ; printf "Ave = %6.2f\n",aver ;}答案:1. if s i >= av count++;2. aver = av;3. return count;第10题程序改错--------------------------------------------------------功能:根据以下公式求π值,并作为函数值返回;例如:给指定精度的变量eps输入时,应当输出Pi=;π 1 1 2 1 2 3 1 2 3 4— = 1 + — + — x — + — x — x — + — x — x — x — + ...2 3 3 5 3 5 7 3 5 7 9------------------------------------------------------/include <>double fundouble eps{double s,t;int n=1;s=;t=1;/FOUND/whilet<=eps{s+=t;/FOUND/t=n/2n+1t;n++;}/FOUND/return s;}main{double x;scanf"%lf",&x;printf"\neps=%lf,Pi=%lf\n\n",x,funx;}答案:1. whilet>eps 或 whileeps<t 或 whilet>=eps 或 whileeps<=t 或 while t>eps 或 while eps<t 或 while t>=eps 或 while eps<=t2. t=tn/2n+1; 或 t=n/2n+1t; 或 t=n/2n+t; 或 t=n/n+1t; 或 t=n/n+t; 或 t=n/n+t;3. return 2 s ; 或 return 2s; 或 return2s; 或 return s2; 或 returns2;第11题程序改错--------------------------------------------------------功能:实现两个字符串的连接;例如:输入dfdfqe和12345时,则输出dfdfqe12345.------------------------------------------------------/include <>main{char s180,s280;void scatchar s1,char s2;getss1;getss2;scats1,s2;putss1;}void scat char s1,char s2{int i=0,j=0;/FOUND/whiles1i= ='\0'i++;/FOUND/whiles2j= ='\0'{/FOUND/s2j=s1i;i++;j++;}/FOUND/s2j='\0';}答案:1. while s1i = '\0' 或 whiles1i 或 while s1i = 02. while s2j = '\0' 或 whiles2j 或 while s2j = 03. s1i=s2j;4. s1i='\0'; 或 s1+i='\0'; 或 s1i=0;第12题程序改错-------------------------------------------------------- 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积;例如:输入圆的半径值:输出为:s = ;------------------------------------------------------/ include <>include <>/FOUND/double fun r{double s;/FOUND/s=1/2 r r;/FOUND/return r;}main{float x;printf "Enter x: ";scanf "%f", &x ;printf " s = %f\n ", fun x ;}答案:1. float funfloat r 或 double funfloat r 或 double fundouble r2. s=2 r r;3. return s;第13题程序改错--------------------------------------------------------功能:利用二维数组输出如图所示的图形;------------------------------------------------------/include <>include <>/FOUND/define N= 7main{char aNN;int i,j,z;fori=0;i<N;i++forj=0;j<N;j++/FOUND/aij=;z=0;fori=0;i<N+1/2;i++{forj=z;j<N-z;j++aij='';z=z+1;}z=0;fori=N+1/2;i<N;i++{z=z-1;forj=z;j<N-z;j++aij='';}fori=0;i<N;i++{forj=0;j<N;j++/FOUND/printf"%d",aij;printf"\n";}}答案:1. define N 72. aij=' ';3. z=z-1; 或 z--; 或 z=-1+z;4. printf"%c",aij;第14题程序改错-------------------------------------------------------- 功能:读取7个数1-50的整数值,每读取一个值,程序打印出该值个数的;------------------------------------------------------/ include <>main{int i,a,n=1;/FOUND/whilen<7{do{scanf"%d",&a;}/FOUND/whilea<1&&a>50;/FOUND/fori=0;i<=a;i++printf"";printf"\n";}}答案:1. whilen<=7 或 whilen<82. whilea<1||a>50; 或 whilea>50||a<1;3. fori=1;i<=a;i++。
试卷编号:10578所属语言:C语言试卷方案:TC_150522153552试卷总分:440分共有题型:1种一、程序改错共44题(共计440分)第1题(10.0分)题号:380 难度:中第2章/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:输入两个双精度数,函数返回它们的平方和的平方根值。
例如:输入:22.936 和 14.121,输出为:y = 26.934415。
------------------------------------------------------*/#include <stdio.h>#include <conio.h>#include <math.h>/**********FOUND**********/double fun (double *a, *b)//double fun(double *a,double *b) {double c;/**********FOUND**********/c = sqr(a*a + b*b);//sqrt/**********FOUND**********/return *c;}main ( ){double a, b, y;printf ( "Enter a, b : ");scanf ("%lf%lf", &a, &b );y = fun (&a, &b);printf ("y = %f \n", y );}第2题(10.0分)题号:438 难度:中第2章/*------------------------------------------------【程序改错】--------------------------------------------------功能:编写函数fun,求两个整数的最小公倍数,然后用主函数main()调用这个函数并输出结果,两个整数由键盘输入。
------------------------------------------------*/#include <stdio.h>int fun(int m,int n){int i;/**********FOUND**********/if (m=n)//if(m==n){i=m;m=n;n=i;}for(i=m;i<=m*n;i+=m)/**********FOUND**********/if(i%n==1)//if(i%n==0)return(i);return 0;}main(){unsigned int m,n,q;printf("m,n=");scanf("%d,%d",&m,&n);/**********FOUND**********/q==fun(m,n);//q=fun(m,n);printf("p(%d,%d)=%d",m,n,q);}第3题(10.0分)题号:404 难度:易第2章/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:编写函数求2!+4!+6!+8!+10+12!+14!。
------------------------------------------------------*/#include <stdio.h>long sum(int n){/**********FOUND**********/int i,j//int i,j;long t,s=0;/**********FOUND**********/for(i=2;i<=n;i++)//for(i=2;i<=n;i+=2){t=1;for(j=1;j<=i;j++)t=t*j;s=s+t;}/**********FOUND**********/return(t);//return (s);}main(){printf("this sum=%ld\n",sum(14));}第4题(10.0分)题号:360 难度:中第2章/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:计算正整数num的各位上的数字之积。
例如:若输入:252,则输出应该是:20。
若输入:202,则输出应该是:0。
------------------------------------------------------*/#include <stdio.h>#include <conio.h>long fun (long num){/**********FOUND**********/long k=1//long k=1;do{k*=num%10 ;/**********FOUND**********/num\=10;//num/=10;/**********FOUND**********/}while(!num) ;//while(num)return (k) ;}main( ){long n ;printf("Please enter a number:") ; scanf("%ld",&n) ;printf("\n%ld\n",fun(n)) ;}第5题(10.0分)题号:413 难度:易第2章/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*。
------------------------------------------------------*/#include <stdio.h>main(){int i,a,n=1;/**********FOUND**********/while(n<7)//while(n<=7){do{scanf("%d",&a);}/**********FOUND**********/while(a<1&&a>50);//while(a>=1&&a<=50)/**********FOUND**********/for(i=0;i<=a;i++)//for(i=1;i<=a;i++)printf("*");printf("\n");n++;}}第6题(10.0分)题号:553 难度:中第1章/*-------------------------------------------------------【程序改错】---------------------------------------------------------题目:列程序的功能为:已知圆锥半径r和高h,计算圆锥体积v。
请纠正程序中存在错误,使程序实现其功能。
-------------------------------------------------------*/#include <stdio.h>main(){/***********FOUND***********/float r=10,h=5;//float r=10,h=5,v;/***********FOUND***********/v=1/3*3.14159*r2*h;// v=1.0/3*3.14159*r*r*h;/***********FOUND***********/printf("v=%d\n",v);// printf("v=%f\n",v);}第7题(10.0分)题号:399 难度:易第2章/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:编写函数fun求20以内所有5的倍数之积。
------------------------------------------------------*/#include <stdio.h>#define N 20int fun(int m){/**********FOUND**********/int s=0,i;//int s=1,i;for(i=1;i<N;i++)/**********FOUND**********/if(i%m=0)//if(i%m==0)/**********FOUND**********/s=*i;//s*=i;return s;}main(){int sum;sum=fun(5);printf("%d以内所有%d的倍数之积为: %d\n",N,5,sum);}第8题(10.0分)题号:397 难度:中第2章/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:输入两个实数,按代数值由小到大输出它们,并在fun() 函数中输出。
(输出的数据都保留2位小数)------------------------------------------------------*/#include <stdio.h>fun(){/**********FOUND**********/float t// float t;float a, b ;scanf("%f %f",&a,&b);/**********FOUND**********/if(a<b)// if(a>b){t=a;a=b;b=t;}/**********FOUND**********/printf("%5.2f ,%5.2f\n",&a,&b);// printf("%5.2f ,%5.2f\n",a,b); }main(){fun();}第9题(10.0分)题号:28 难度:中第1章/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:实现两个字符串的连接。