C语言程序改错2

合集下载

C语言常见改错

C语言常见改错
2:在子函数中注意大括号外定义类型与里面的要相同。 见例三 三、格式错误
1:常见格式 int→%d,long→%ld,float→%f,double→%lf 2:所需输出结果与已定义类型不同,可以利用强制转 换符。如定义 sum 为 int,但要输出实数 float,可以(float) sum 。见例一 四、固定语句格式错误 1:for( ; ; ); 2:while( ); 3:switch(){ };(for,while,switch 后面无分号) 见例五 4:do{ }while( );(do{ }while 结构后面有分号)
if(isSuShu(i)==0) /*(4)条件表达错,应改为(isSuShu(i)==1)或(isSuShu(i))*/ {
count=0; /*(5)本句应改为:count++;或 count+=1;*/
printf("%d\t",i);
if(count%K==0)
printf("\n");
case 6: b[2]++; break;
case 7: b[3]++; break;
case 8: b[4]++; break;
case 9: b[5]++;
/*(4)行末应加:break; */
default: b[5]++;
}
}
}
printf("The result is: \n");
for (i=1; i<6; i++) printf("%d0 number is: \n ", i+4,b[i]);

程序改错完整版---C语言

程序改错完整版---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语言上机改错题 常见错误类型

二级C语言上机改错题 常见错误类型

二级C语言上机改错题常见错误类型※(1) 漏写“ ; ”(所有完整语句后面都应该有“ ; ”)※(2) 数据类型定义错误(包括int, long, char, float, double, 字符串, 数组和指针等类型互相不能用错)(3) 定义函数时后面多加“ ; ”(如: void fun (char *s); 后面的分号不能加)※(4) 当判断相等的时候,误把“ == ” 写成赋值的“ = ”※(5) 函数类型定义错误(比如说自定义一个没有返回值的函数却定义成int fun() )※(6) 条件语句漏写“ () ”(包括for语句、if语句、while语句等等)(7) 符号写错(如除法的“ / ” 写成“\” 等等)(8) 字符串符号" " 与字符符号' ' 弄错(9) 函数行参类型定义错误(比如:本意为带入指针类型的实参,却写成 void fun (char s) 正确应为 void fun (char *s) )(10) 漏写大括号“ { ” 或“ } ”中的一个第二大类:逻辑错误(此类错误都和题意有关,需结合具体题意改正)※(1) 大小关系弄反(比如本该为if(x<y) ...... 误写成if(x>y) ...... )(2) “ ++ ” 和“ -- ” 弄反(比如本该为 for(i=j; i!=k; i++) 误写成for(i=j; i!=k; i--) )(3) 变量赋值错误(包括赋初值错误或没有赋初值等,如:依题意,本该赋值 int i=0; 却赋错值 int i=1; )(4) 依次载入数据时没有写“ ++ ” 或“ -- ”(如: for(i=0;i<n;i++) s[j++]=i; 写错成for(i=0;i<n;i++) s[j]=i; )※(5) 代换关系弄错(如: p=q; 误写成q=p; 或p=q+i; 误写成q=p+i; )(6) 循环中初值或终值写错(如:依题意应为 for(i=0; i<n; i++) ...... 写错为for(i=0; i<m; i++) ...... )(7) “ == ” 和“ != ”逻辑关系弄错(8) 逻辑与“ && ” 和逻辑或“ || ”弄错(9) 临界值弄错(如“ <= ” 和“ < ” 等)(10) 其他逻辑错误:原语句不符题意或与题意相悖的一切逻辑错误。

C语言程序改错2

C语言程序改错2
31有一数组内放10个整数要求找出最小数和它的下标然后把它和数组中最前面的元素即第一个数对换位置
1、以下程序的功能是求如 + ——— + ...... + ——————— 1+2 1+2+3 1+2+3+......+n 『答案』 :1 scanf("%d",&n); 2 float fun(int n) 3 for(i=1;i<=n;i++) 4 s+=1.0/t 或 s= s + 1.0 /t; 2、题目:函数 fun 的功能是:根据整型形参 m 的值,计算如下公式的值。 1 1 1 t = 1- —— - —— - ... - —— 2x2 3x3 mxm 例如,若 m=5,则应输出:0.536389 『答案』 :1 for(i=2;i<=m;i++)或 for(i=2;i<m+1;i++) 2 y-=1.0/(i*i); 或 y=y-1.0/(i*i); 3 return y; 或 return (y); 3、函数 fun 的功能是:用下面的和式求圆周率的近似值。直到最后一项的绝对值小于等于 0.0001。 π 1 1 1 — = 1 - — + — - — + ... 4 3 5 7 『答案』 :1 #include "math.h" 或 #include <math.h> 2 float s=0,t=1,p=1; 3 while(fabs(t)>1e-4)或 while(fabs(t)>0.0001) 4 printf("pi=%f\n", s * 4 ); 4、功能:计算正整数 num 的各位上的数字之积。例如,输入 252,则输出应该是 20。 『答案』 :1 long k=1; 或 long int k=1; 2 num/=10; 或 num=num/10; 3 scanf("%ld",&n); 4 printf("\n%ld\n",fun(n)); 5、功能: (与上题略有不同)计算正整数 num 的各位数字之积。例如,若输入:252,则输 出应该是:20。若输入:202,则输出应该是:0。 『答案』 :1 {long k=1; 2 num/=10; 或 num=num/10; 3 } while(num) ; 或 }while(num!=0); 或 }while(num>0); 6、题目:判断 m 是否为素数,若是返回 1,否则返回 0。 『答案』 :1 int fun( int m) 或 fun( int m) 2 for(i=2;i<m;i++) 3 if( m%i == 0 ) k=0; 4 return(k); 或 return k; 7、功能:找出大于 m 的最小素数,并将其作为函数值返回。 『答案』 :1 for(k=2;k<i;k++) 或 for(k=2;k<=i-1;k++) 或 for(k=2;k<=sqrt(i);k++) 2 if( i%k == 0 ) break; 或 if(!(i%k)) break; 3 if(i<=k)或 if( k == i ) 或 if(k>sqrt(i)) 4 return i; 或 return (i);

C语言计算机二级改错题

C语言计算机二级改错题

功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。

------------------------------------------------------*/#include "stdio.h"#define N 11main(){int i,j,t,number,a[N]={1,2,4,6,8,9,12,15,149,156};printf("please enter an integer to insert in the array:\n");/**********ERROR**********/scanf("%d",&number)printf("The original array:\n");for(i=0;i<N-1;i++)printf("%5d",a[i]);printf("\n");/**********ERROR**********/for(i=N-1;i>=0;i--)if(number<=a[i])/**********ERROR**********/a[i]>=a[i-1];else{a[i+1]=number;/**********ERROR**********/exit;}if(number<a[0]) a[0]=number;printf("The result array:\n");for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n");}1.scanf("%d",&number);2.for(i=N-2;i>=0;i--)for(i=N-2;0<=i;i--)3.a[i+1]=a[i];4.break;功能:用下面的和式求圆周率的近似值。

C语言程序改错及填空题

C语言程序改错及填空题

gc23.c下列程序是建立一个包含学生有关数据的单向链表。

但该程序有2个错误,错误出现在每个注释行附近,请调试改正。

调试改正中,不得改变程序结构,也不得增删语句。

#defineNULL0structstud{longnum;charname[10];floatscore;structstud*next;};/*……………comment……………*/intn;structstudcreate()////////structstud*create(void){structstud*head,*p1,*p2;n=0;p1=p2=(structstud*)malloc(sizeof(structstud));scanf("%ld,%s,%f",&p1->num,p1->name,&p1->score);/*……………comment……………*/head=NULL;while(p1!=0)//////////while(p1->num!=0){n=n+1;if(n==1)head=p1;elsep2->next=p1;p1=(structstud*)malloc(size(structstud));scanf("%ld,%s,%f",&p1->num,p1->name,&p1->score);}p2->next=NULL;return(head);}gc57.c的功能是互换给定数组中的最大数和最小数。

如将下面8个数:5,3,1,4,2,8,9,6变成:5,3,9,4,2,8,1,6程序中,最大数与最小数的互换操作通过函数调用来实现,让指针max和min分别指向最大数和最小数。

程序有二处错误,请改正。

注意:不得增行和删行,也不得修改程序的结构。

main(){inti;staticinta[8]={5,3,1,4,2,8,9,6};voidjhmaxmin();printf("Originalarray:\n");for(i=0;i<8;i++)jhmaxmin(a,8);printf("Arrayafterswapingmaxandmin:\n");for(i=0;i<8;i++)printf("%5d",a[i]);printf("\n");}//注意:voidjhmaxmin(p,n)intp,n;这是一种老的函数形式,现在一般这样写voidjhmaxmin(intp,intn)voidjhmaxmin(p,n)intp,n;////////int*p,n;{intt,*max,*min,*end,*q;end=p+n;max=min=p;for(q=p+1;q<end;q++){if(*q>*max)max=q;if(*q<max)min=q;////////*q<*min}t=*max;*max=*min;*min=t;}gc101.c的功能为:输入8个整数,使用指针以选择法对其进行排序(从小到大).程序中有两处错误代码,请改正.注意,不得改变程序结构。

二级c改错技巧

二级c改错技巧

举例
MODI18
3. 整型数组处理错误
数组处理错误通常表现在数组元素下标的错误 表示上。 表示上。 数组元素的下标从0 数组元素的下标从0开始编号 在程序中使用数组,数组元素的下标变化规律 在程序中使用数组, 显得十分重要。 显得十分重要。
举例
MODI6
4. 字符串处理错误
字符数组中,数组元素下标出错; 字符数组中,数组元素下标出错; 单引号和双引号使用错误; 单引号和双引号使用错误;
运算符书写错误
– “=”和“==”的区别,前者是赋值运算符,后者是关系运算符; ==”的区别,前者是赋值运算符,后者是关系运算符; – “/”和“\”的区别,前者是除法运算,后者是转义字符的表示。 /”和 的区别,前者是除法运算,后者是转义字符的表示。
符号错误
– 字符常量用‘ ’括起来,字符串使用“”,不能混用; 字符常量用‘ 括起来,字符串使用“” 不能混用; “”, – “()”、“{}”、“[ ]”应成对出现,没有成对即出现错误。 {}”、 ]”应成对出现 没有成对即出现错误。 应成对出现, ()”
语句书写错误
– “;”是语句的组成部分,在语句结束时必须打上“;”,没有 是语句的组成部分,在语句结束时必须打上“ 就会出现错误。 “;”就会出现错误。
举例
MODI2
2.简单逻辑错误 2.简单逻辑错误
判断条件错。 判断条件错。
① 循环条件始终为“真”,导致程序出现死循环, 循环条件始终为“ 导致程序出现死循环, ② 循环条件第一次判断就为假,循环一次都没有执行,从而出 循环条件第一次判断就为假,循环一次都没有执行, 现错误结果。 现错误结果。 ③ 该用“&&”运算,却用成了“||”;该用“>”,却用成了“<” 该用“&&”运算 却用成了“||”;该用“>”,却用成了“ 运算, 等

C语言程序改错题

C语言程序改错题

第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++。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、以下程序的功能是求如下表达式:1 1 1S = 1 + ——+ ———+ ...... + ———————1+2 1+2+3 1+2+3+......+n『答案』:1 scanf("%d",&n);2 float fun(int n)3 for(i=1;i<=n;i++)4 s+=1.0/t 或s= s + 1.0 /t;2、题目:函数fun的功能是:根据整型形参m的值,计算如下公式的值。

1 1 1t = 1- ——- ——- ... - ——2x2 3x3 mxm 例如,若m=5,则应输出:0.536389 『答案』:1 for(i=2;i<=m;i++)或for(i=2;i<m+1;i++)2 y-=1.0/(i*i); 或y=y-1.0/(i*i);3 return y; 或return (y);3、函数fun的功能是:用下面的和式求圆周率的近似值。

直到最后一项的绝对值小于等于0.0001。

π 1 1 1—= 1 - —+ —- —+ ...4 35 7『答案』:1 #include "math.h" 或#include <math.h>2 float s=0,t=1,p=1;3 while(fabs(t)>1e-4)或while(fabs(t)>0.0001)4 printf("pi=%f\n", s * 4 );4、功能:计算正整数num的各位上的数字之积。

例如,输入252,则输出应该是20。

『答案』:1 long k=1; 或long int k=1;2 num/=10; 或num=num/10;3 scanf("%ld",&n);4 printf("\n%ld\n",fun(n));5、功能:(与上题略有不同)计算正整数num的各位数字之积。

例如,若输入:252,则输出应该是:20。

若输入:202,则输出应该是:0。

『答案』:1 {long k=1;2 num/=10; 或num=num/10;3 } while(num) ; 或}while(num!=0); 或}while(num>0);6、题目:判断m是否为素数,若是返回1,否则返回0。

『答案』:1 int fun( int m) 或fun( int m)2 for(i=2;i<m;i++)3 if( m%i == 0 ) k=0;4 return(k); 或return k;7、功能:找出大于m的最小素数,并将其作为函数值返回。

『答案』:1 for(k=2;k<i;k++) 或for(k=2;k<=i-1;k++) 或for(k=2;k<=sqrt(i);k++)2 if( i%k == 0 ) break; 或if(!(i%k)) break;3 if(i<=k)或if( k == i ) 或if(k>sqrt(i))4 return i; 或return (i);8、功能:计算并输出k以内最大的10个能被13或17整除的自然数之和。

k的值由主函数传入,若k的值为500,则函数值为4622。

『答案』:1 while ( (k>=2) && (mc<10) )或while ( (k>=2) && (mc<=9) )2 if(!(k%17!=0 && k%13!=0 )) 或if( ( k%13 == 0 ) || ( k%17 == 0 ) )3 k--; 或k=k-1; 或k-=1; 或--k;4 return m; 或return(m);9、在一个一维整型数组中找出其中最大的数及其下标。

程序中共有4条错误语句,请改正错误。

『答案』:1 int fun(int *a,int *b,int n)2 *b=c-a;}3 scanf("%d",&a[i]); 或scanf("%d", a + i );4 max=fun(a,&p,N);10、通过键盘输入10个整数为一维数组各个元素赋值;将其中最小的数与第一个数对换,将最大的数与最后一个数对换;输出调整后的数组元素。

『答案』:1 scanf("%d",p++); 或scanf("%d",&arr[i]); 或scanf("%d",p+i);2 if(*p>*max) 或if(*max<*p)3 if( max == arr )4 for(i=0;i<n;i++)或for(p=arr;p<arr+n;)11、用起泡法对10个整数从小到大排序。

『答案』:1 for(j=0;j< n -1 -i ;j++)2 if(x[j]>x[ j + 1 ]) 或if(x[ j + 1] <x[j])3 scanf("%d",&a[i]); 或scanf("%d",a+i);4 sort(a,n); 或sort(&a[0],n);12、在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。

『答案』:1 scanf("%d",&number);2 for(i=N-2;i>=0;i--) 或for(i=N-2;0<=i;i--)3 a[ i + 1 ]=a[i];4 break;}13、将一个字符串中第m个字符开始的全部字符复制成为另一个字符串。

『答案』:1 { char *p1,*p2; 或{ char *p2,*p1;2 p1= str1 + m -1; 或p1=-1+ str1 + m ;3 while(*p1) 或while(*p1!='\0')4 strcopy(str1,str2,m);14、将一个字符串中的大写字母转换成小写字母。

例如:输入aSdFG输出为asdfg。

『答案』:1 char fun(char *c)2 return *c; 或return (*c); 或return(*c);3 { char s[81],*p=s;4 putchar(*p); 或printf("%c",*p);15、题目:将若干学生的档案存放在一个文件中,并显示其内容。

『答案』:1 { struct student *p;2 FILE *fp;3 for(p=stu;p< stu + 3 ;p++) 或for(p=stu; stu + 3 >p;p++)4 printf("%4d %-10s %4d\n",(*p).num ,p->name,(*p).age);16、题目:下列给定程序中,函数fun的功能是:求1到10的阶乘的和。

『答案』:1 for(i=1;i<=10;i++) 或for(i=1;i<11;i++)2 s= s + fac(i) ; 或s+=fac(i);3 float y=1.0; 或float y=1;4 return y; 或return(y);17、题目:函数fun的功能是:求1到20的阶乘的和。

『答案』:1 t=1; 或t=1.0;2 t= t * j ; 或t*=j;3 s= s + t ; 或s+=t;4 printf("jiecheng=%f\n",s);18、函数fun的功能是:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。

『答案』:1 printf("%8.0f",f1); 或printf("%f",f1);2 for(i=1;i<20;i++)或for(i=2;i<=20;i++)或for(i=1;i<=19;i++)3 f1=f2;4 f2=f3;19、函数fun的功能是:实现交换两个整数的值。

例如给a和b分别输入3和6 ,输出为a=6 b=3『答案』:1 void fun (int *a,int *b) 或fun (int *a,int *b)2 t=*a;3 *a=*b;4 *b=t;20、已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。

下列给定程序中,函数fun的功能是:求该数列的前n项的平方根之和sum,n的值通过形参传入。

输出由主函数完成。

例如,当n=10时,程序的输出结果应为23.197745。

『答案』:1 double fun (int n)2 sum=1.0; 或sum=1;3 s2=1.0; 或s2=1;4 for(k=4;k<=n;k++)或for(k=4;k<n+1;k++)21、函数fun的功能是:根据以下公式求π值,并作为函数值返回。

例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。

π 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『答案』:1 while(t>eps) 或while (t>=eps)2 t=t*n/(2*n+1); 或1.0*n/(2*n+1)*t;3 return 2 * s ; 或return (2*s);22、题目:函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。

例如,若给num1和num2分别输入49和21,则输出的最大公约数为7。

『答案』:1 a=b;2 b=t;3 r=a%b;}4 return b; 或return (b); 或return(b);23、题目:在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。

下列给定程序中,函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。

例如,数组中元素的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。

『答案』:1 double sum=0.0; 或double sum=0;2 while( s[i] != 0 )或while(s[i])3 sum/=c; 或sum=sum/c;4 return sum; 或return (sum);24、fun函数的功能是:给定n个实数,输出平均值,并统计在平均值以下(含平均值)的实数个数。

相关文档
最新文档