程序改错1
程序改错完整版---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语言程序改错题

第1题【程序改错】【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;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个随机整数从小到大排序.例如:若输入整数7,则应输出:3 10 17 28 32 36 47.------------------------------------------------------*/#include "conio.h"#include <stdio.h>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 ( a[p] > a[j] ) p = i;/**********FOUND**********/if ( p == j ){t = a[j];a[j] = a[p];a[p] = t;}}}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() );}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 aa[20], 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 ( a[p] > a[i] ) p = i;3). if ( p != j )第4题【程序改错】--------------------------------------------------------功效:以下程序能求出1*1+2*2+......+n*n<=1000中知足前提的最大的n.------------------------------------------------------*/#include <stdio.h>#include "string.h"main(){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);第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.------------------------------------------------------*/#include <conio.h>#include <stdio.h>#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 ( 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( ){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;第6题【程序改错】--------------------------------------------------------功效:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子).例如:若输入整数:2310,则应输出:2.3.5.7.11.请纠正程序中的语法错误,使程序能得出准确的成果.------------------------------------------------------*/#include "conio.h"#include <stdio.h>/**********FOUND**********/isPrime(integer 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 factor(s) of %d is( are ):", k );for( j = 2; j <= k; j++ )if((!( k%j))&&( IsPrime(j))) printf( "\n %4d", j );printf("\n");}答案:1). IsPrime(int n)2). if(!(n%i))3). return m ;第7 题【程序改错】--------------------------------------------------------功效:为一维数组输入10个整数;将个中最小的数与第一个数对调,将最大的数与最后一个数对调,输出数组元素.------------------------------------------------------*/#include <stdio.h>main(){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);}void max_min(int *arr,int n){int *min,*max,*p,t;min=max=arr;for(p=arr+1;p<arr+n;p++)/**********FOUND**********/ if(*p<*max)max=p;else if(*p<*min) min=p;t=*arr;*arr=*min;*min=t;/**********FOUND**********/ if(max=arr) max=min;t=*(arr+n-1);*(arr+n-1)=*max;*max=t;}void output(int *arr,int n){int *p,i;p=arr;printf("The changed array is:\n");/**********FOUND**********/while(i=0;i<n;i++)printf("%3d",*p++);printf("\n");}答案:1). scanf("%d",p ++); 或 scanf("%d",arr[i]); 或 scanf("%d",p+i); 或 scanf("%d",arr+i);2). if(*p>*max) 或 if(*max<*p)3). if( max == arr )4). for(i=0;i<n;i++) 或 for(i=0;n>i;i++) 或 for(p=arr;p<arr+n;) 或 for(i=0;i<=n-1;i++) 或for(i=0;n-1>=i;i++) 或 for(p=arr;p<=arr+n-1;) 或 for(p=arr;arr+n-1>=p;)第8题【程序改错】--------------------------------------------------------功效:求出在字符串中最后一次消失的子字符串的地址,经由过程函数值返回,在主函数中输出从此地址开端的字符串;若未找到,则函数值为NULL.例如:当字符串中的内容为:"abcdabfabcdx",t中的内容为:"ab"时,输出成果应是:abcdx.当字符串中的内容为: "abcdabfabcdx",t中的内容为:"abd"时,则程序输出未找到信息:not found!.------------------------------------------------------*/#include <conio.h>#include <stdio.h>#include <string.h>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 s[100], t[100], *p;printf("\nPlease enter string S :"); scanf("%s", s );printf("\nPlease enter substring t :"); scanf("%s", t );p = fun( s, t );if ( p )printf("\nThe result is : %s\n", p);elseprintf("\nNot found !\n" );}答案:1). a = NULL;2). if ( *r == *p )3). if ( *r == '\0' ) a = s;第9题【程序改错】--------------------------------------------------------功效:从m个学生的成绩中统计出高于和等于平均分的学生人数,此人数由函数值返回.平均分经由过程形参传回,输入学生成绩时,用-1停止输入,由程序主动统计学生人数.例如:若输入 8 逻辑学生的成绩,输入情势如下: 80.5 60 72 90.5 98 51.5 88 64 -1成果为:The number of students :4Ave = 75.56.------------------------------------------------------*/#include <conio.h>#include <stdio.h>#define N 20int fun ( float *s, int n, float *aver ){float av, t ; int count , i;count = 0; t=0.0;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, s[30], aver;int m = 0;printf ( "\nPlease enter marks ( -1 to end):\n ");scanf("%f",&a );while( a>0 ){s[m] = 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输入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------------------------------------------------------*/ #include <stdio.h>double fun(double eps){double s,t;int n=1;s=0.0;t=1;/**********FOUND**********/while(t<=eps){s+=t;/**********FOUND**********/t=n/(2*n+1)*t;n++;}/**********FOUND**********/return s;}main(){double x;scanf("%lf",&x);printf("\neps=%lf,Pi=%lf\n\n",x,fun(x));}答案:1). while(t>eps) 或 while(eps<t) 或 while(t>=eps) 或 while(eps<=t) 或 while (t>eps) 或 while (eps<t) 或 while (t>=eps) 或 while (eps<=t)2). t=t*n/(2*n+1); 或 t=1.0*n/(2*n+1)*t; 或 t=n/(2*n+1.0)*t; 或 t=n/(2.0*n+1)*t; 或t=n/(2.0*n+1.0)*t; 或 t=1.0*n/(2.0*n+1.0)*t;3). return 2 * s ; 或 return (2*s); 或 return(2*s); 或 return (s*2); 或 return(s*2);第11题【程序改错】--------------------------------------------------------功效:实现两个字符串的衔接.例如:输入dfdfqe和12345时,则输出dfdfqe12345.------------------------------------------------------*/#include <stdio.h>main(){char s1[80],s2[80];void scat(char s1[],char s2[]);gets(s1);gets(s2);scat(s1,s2);puts(s1);}void scat (char s1[],char s2[]){int i=0,j=0;/**********FOUND**********/while(s1[i]= ='\0')i++;/**********FOUND**********/while(s2[j]= ='\0'){/**********FOUND**********/s2[j]=s1[i];i++;j++;}/**********FOUND**********/s2[j]='\0';}答案:1). while( s1[i] != '\0' ) 或 while(s1[i]) 或 while( s1[i] != 0 )2). while( s2[j] != '\0' ) 或 while(s2[j]) 或 while( s2[j] != 0 )3). s1[i]=s2[j];4). s1[i]='\0'; 或 *(s1+i)='\0'; 或 s1[i]=0;第12题【程序改错】--------------------------------------------------------功效:求二分之一的圆面积,函数经由过程形参得到圆的半径,函数返回二分之一的圆面积.例如:输入圆的半径值:19.527 输出为:s = 598.950017.------------------------------------------------------*/#include <stdio.h>#include <conio.h>/**********FOUND**********/double fun( r){double s;/**********FOUND**********/s=1/2*3.14159* r * r;/**********FOUND**********/return r;}main(){float x;printf ( "Enter x: ");scanf ( "%f", &x );printf (" s = %f\n ", fun ( x ) );}答案:1). float fun(float r) 或 double fun(float r) 或 double fun(double r)2). s=1.0/2*3.14159* r * r;3). return s;第13题【程序改错】--------------------------------------------------------功效:应用二维数组输出如图所示的图形. *******************************------------------------------------------------------*/ #include <stdio.h>#include <conio.h>/**********FOUND**********/#define N= 7main(){char a[N][N];int i,j,z;for(i=0;i<N;i++)for(j=0;j<N;j++)/**********FOUND**********/a[i][j]=;z=0;for(i=0;i<(N+1)/2;i++){for(j=z;j<N-z;j++)a[i][j]='*';z=z+1;}/**********FOUND**********/ z=0;for(i=(N+1)/2;i<N;i++){z=z-1;for(j=z;j<N-z;j++)a[i][j]='*';}for(i=0;i<N;i++){for(j=0;j<N;j++)/**********FOUND**********/ printf("%d",a[i][j]);printf("\n");}}答案:1). #define N 72). a[i][j]=' ';3). z=z-1; 或 z--; 或 z=-1+z;4). printf("%c",a[i][j]);第14题【程序改错】--------------------------------------------------------功效:读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*.------------------------------------------------------*/#include <stdio.h>main(){int i,a,n=1;/**********FOUND**********/while(n<7){do{scanf("%d",&a);}/**********FOUND**********/while(a<1&&a>50);/**********FOUND**********/for(i=0;i<=a;i++)printf("*");printf("\n");n++;}}答案:1). while(n<=7) 或 while(n<8)2). while(a<1||a>50); 或 while(a>50||a<1);3). for(i=1;i<=a;i++)。
程序改错

发生错误后都要回到编辑阶段,分析错误原因,修改C源程序,再重复上述操作,直到程序能得到正确的运行结果,程序才算调试成功。程序发生错误,其原因很复杂。学会调试程序,也是学习C程序设计的重点和难点之一,必须多练、多分析,积累经验。
scanf(“%d”,&n);
while(i<n)
i+=2;
sum+=i;
if(n%2==0) n--;
printf(“输出1+3+5+……+%d=%ld\n”,n,sum);省略号是在中文状态下输入的。
}
第四题:程序功能:定义计算三角形面积的函数。计算公式:
s=(a+b+c)/2
a、b、c为三角形的边长。
{
char str[80]="a*b$c(d!EEE !!a.";
fun(str[80]);
printf("\n");
puts(str);
}
4、下列程序,其功能是:从s所指向的串中,找出包含有t所指字符串的个数。例如:s所指向的串为abcdabfab,t所指字符串为ab,则所求个数为3。请改正程序中的错误,使程序能输出正确的结果。
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
int a[]={1,2,3,4,5,6,7,8,9,10},i=10,n;
if((fp=fopen(“file6.txt”,”w”))==NULL)
C语言习题级答案3

测试题31、C语言中不合法的字符常量就是 CA、’\65’B、’\xff’C、’\028’D、’&’2、具有相同类型的指针变量p与数组a,不能进行的操作就是(C)。
A、p=&a[0];B、p=a;C、p=&a;D、*p=a[0];3、若有x=22,y=26,z=0;,则执行下面语句后,z的输出结果就是(B ) z=x>y?x:yA、72B、26C、48D、224、对于建立函数的目的,正确的说法就是 DA、提高程序的执行效率B、减少程序的篇幅C、减少程序文件所占的内存D、提高程序的可读性5、有定义:char*p1,*p2;则下列表达式中正确合理的就是 CA、p1/=5B、p1+=5C、p1=&p2D、p1*=p26、以下程序的运行结果就是(B)。
main(){int i=1,sum=0;while(i<10) sum=sum+1;i++;printf("i=%d,sum=%d",i,sum);}A、i=10,sum=9B、运行出现错误C、i=2,sum=17、若变量已正确定义且 k 的值就是 4,计算表达式 ( j =4, k--) 后,j与k的值为(C)A、j=4, k=4B、j=3, k=3C、j=4, k=3D、j=3, k=48、给出以下定义:char x[ ]="abcdefg";char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为(A)A、数组x的长度大于数组y的长度B、数组x与数组y等价C、数组x与数组y的长度相同D、数组x的长度小于数组y的长度9、在下述程序中,判断i > j共执行了多少次 C#include <stdio、h>main(){int i = 0, j = 10, k = 2, s = 0;for( ; ; ){i += k;if(i > j){printf(“%d\n”, s);break;}s += i;}}A、4B、8C、6D、710、下列各m的值中,能使m%3==2&&m%5==3&&m%7==2为真的就是(D)。
程序改错——精选推荐

【程序改错】1.下列给定程序中函数fun的功能是:删除s所指字符中所有的小写字母c 。
请改正程序中的错误,使它能得出正确的结果。
#include <stdio.h>void fun( char *s ){ int I,j;for(i=j=0; s[i]!='\0'; i++)if(s[i]!='c')/***********FOUND***********/s[j++]=s[i];/***********FOUND***********/s[j]='\0';}main(){ char s[80];printf("Enter a string: "); gets(s);printf("The original string: "); puts(s);fun(s);printf("The string after deleted : "); puts(s);printf("\n\n");}2. 下列给定程序中,函数fun的功能是:根据整型参数m,计算如下公式的值。
y=1/(100×100)+1/(200×200)+1/(300×300)+…+1/(m×m)例如,若m=2000,则应输出0.000160。
请改正程序中的错误,使它能得出正确的结果。
#include <stdlib.h>#include <conio.h>#include <stdio.h>/***********FOUND***********/double fun (int m){ double y=0, d;int i;/***********FOUND***********/for(i=100;i<=m;i+=100){d=(double)i*(double)i;y+=1.0/d;}return(y);}void main(){ int n=2000;system("CLS");printf("\nThe result is %lf\n",fun(n));}3. 下列给定程序中函数fun的功能是:根据以下公式求π值,并作为函数值返回。
程序改错

/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:求100~200之间所有的素数。
------------------------------------------------------*///#include <iostream.h>void main(){int n;int i;/**********ERROR**********/for(n=100;n<200;n++){/**********ERROR**********/for(i=2;i<=n;i++)/**********ERROR**********/if(n%i==0) continue;if(n==i)cout<<n<<endl;}}//答案【改错1】错误【学生答案】for(n=100;n<200;n++)【参考答案】for(n=100;n<=200;n++)============================================================【改错2】错误【学生答案】for(i=2;i<=n;i++)【参考答案】for(i=2;i<=n-1;i++)for(i=2;i<n;i++)============================================================【改错3】错误【学生答案】if(n%i==0) continue;【参考答案】if(n%i==0) break;/*------------------------------------------------------【程序改错】:只允许修改错误代码,其他代码不允许修改!--------------------------------------------------------功能:求水仙花数。
c语言程序改错

c语⾔程序改错【程序改错】1.功能:利⽤递归函数调⽤⽅式,将所输⼊的5个字符,以相反顺序打印出来。
char next;next=getchar();palin(n-1);2.功能:求⼴义菲玻那契级数的第n项。
⼴义菲玻那契级数的前n项为: 1,1,1,3,5,9,17,31,……项值通过函数值返回 main ( )函数。
例如:若 n = 15,则应输出:The value is: 2209。
for (k=4; k<=n; k++)a=b;return d;3.功能:根据整型形参m,计算如下公式的值:y=1/2+1/8+1/18+...+1/2m*mdouble y=0.0;4.功能:编制统计营业员⼀天的营业额的程序,设程序采⽤⼀个循环实现,每次循环输⼊⼀笔交易⾦额并累计营业额。
由于营业员⼀天完成的交易次数是不确定的,为此以最后附加输⼊⼀笔0或负数交易额作为交易⾦额已全部输⼊结束的标志。
float sale,sigma;scanf("%f",&sale);sigma=sigma+sale;5.功能:读取7个数(1-50)的整数值,每读取⼀个值,程序打印出该值个数的*。
while(n<8) while(a<1||a>50);for(i=0;i6.功能:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。
printf("%8f",f1);for(i=1;i<20;i++)f1=f2;f2=f3;7.功能:⼀个偶数总能表⽰为两个素数之和。
scanf("%d",&a);d=a-b;if(d%c==0)8.功能:利⽤⼆维数组输出如图所⽰的图形。
*******************************#define N 7a[i][j]=' ';z=z-1;printf("%c",a[i][j]);9.题⽬:求两个整数的最⼩公倍数。
计算机二级上机考试(程序改错题)1

程序编程题目1、第一大类(交换类)共7道2. 程序修改(第3套)给定程序中函数fun 的功能是:通过某种方式实现两个变量的交换,规定不允许增加语句和表达式。
例如变量a中的值原为8,b中的值原为3,程序运行后a中值为3,b 中的值为8./**found**/t=*x; *x=y;/**found**/return(t);2. 程序修改(第60套)给定程序中函数fun的功能是:实现两个整数的交换。
例如给a和b分别输入60和65,输出为:a=65 b=60/**found**/void fun(int *a,int *b)/**found**/t=*b;*b=*a;*a=t;2. 程序修改(第88套)给定程序中函数fun的功能是:将主函数中两个变量的值进行交换。
例如,若变量a中的值为8,b中的值为3,则程序运行后,a中的值为3,b中的值为8。
/**found**/void fun(int *x, int *y)/**found**/t=*x,*x=*y,*y=t;2、第二大类(计算类)共22道2. 程序修改(第1套)给定程序中函数fun的功能是:求出以下分数序列的前n项之和。
2/1+3/2+5/3+8/5+13/8+21/13+……和值通过函数值返回main函数。
例如n=5,则应输出:。
/**found**/double fun(int n)/**found**/s=s+(double)a/b;2. 程序修改(第6套)给定程序中函数fun的功能是:用递归算法计算列中第n项的值。
从第一项起,斐波拉契数列为:1、1、2、3、5、8、13、21、……/**found**/switch(g)/**found**/case 1:case 2:return 1;2. 程序修改(第13套)给定程序中函数fun的功能是:求 s=aa…aa—…—aaa—aa—a(此处aa…aa表示n个a,a和n的值在1至9之间)。
例如,a=3,n=6,则以下表达式为:S=333333-33333-3333-333-33-3其值是296298。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1题(10.0分)题号:421/*-------------------------------- 【程序改错】--------------------------------功能:给一个不多于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 are4, %ld %ld %ld %ld\n",e,d,c,b);else if (c!=0)printf(" there are3,%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;3). if (a!=0) 或 if (!a) 第2题(10.0分)题号:417/*-------------------------------- 【程序改错】--------------------------------功能:下题是一段有关结构体变量传递的程序.--------------------------------*/#include "stdio.h"struct student{int x;char c;} a;main(){a.x=3;/**********FOUND**********/a.c='a'f(a);/**********FOUND**********/printf("%d,%c",a.x,b.c);getch();}f(struct student b){b.x=20;/**********FOUND**********/b.c=y;}答案:1). a.c='a';2). printf("%d,%c",a.x,a.c);3). b.c='y';第1题(10.0分)题号:440/*-------------------------------- 【程序改错】--------------------------------功能:输入字符序列,字符序列以特殊字符“#”结束。
程序从前向后依次读入字符,并翻译出新的字符输出。
翻译的规则是:如果当前读入的字符是数字符,如果该字符的面值为n,则它的后一个字符(包括数字符)需重复输出n+1次如果当前读入的字符不是数字符,则输出该字符。
输出时,以上述一次翻译为一组,不同组间输出用一个空白字符隔开。
翻译直至当前读入的字符为字符‘#’,结束翻译和输出。
--------------------------------*/#include<stdio.h>void main(){char ch,nch;int count;int k;printf("Enter string.\n");scanf("%c",&ch);/**********FOUND**********/while(ch='#'){if(ch>='0'&&ch<='9'){/**********FOUND**********/count=ch-'0'-1;scanf("%c",&nch);for(k=0;k<count;k++)printf("%c",nch);}else/**********FOUND**********/printf("%f",ch);printf(" ");scanf("%c",&ch);}printf("#\n");} 答案:1). while(ch!='#')2). count=ch-'0'+1;3). printf("%c",ch);第2题(10.0分)题号:411/*-------------------------------- 【程序改错】--------------------------------功能:将一个正整数分解质因数。
例如:输入90,打印出90=2*3*3*5--------------------------------*/#include "stdio.h"main(){int n,i;printf("\nplease input a number:\n"); scanf("%d",&n);printf("%d=",n);for(i=2;i<=n;i++){/**********FOUND**********/while(n==i){/**********FOUND**********/if(n%i==1){printf("%d*",i);/**********FOUND**********/n=n%i;}elsebreak;}}printf("%d",n);}答案:1). while(n!=i)2). if(n%i==0) 或 if (!(n%i))3). n=n/i;第1题(10.0分)题号:4/*-------------------------------- 【程序改错】--------------------------------功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
--------------------------------*/#define N 11main(){inti,j,t,number,a[N]={1,2,4,6,8,9,12,15,14 9,156};printf("please enter an integer to insert in the array:\n");/**********FOUND**********/scanf("%d",&number)printf("The original array:\n");for(i=0;i<N-1;i++)printf("%5d",a[i]);printf("\n");/**********FOUND**********/for(i=N-1;i>=0;i--)if(number<=a[i])/**********FOUND**********/a[i]=a[i-1];else{a[i+1]=number;/**********FOUND**********/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;第2题(10.0分)题号:386/*-------------------------------- 【程序改错】--------------------------------功能:分别统计输入的字符串中各元音字母(即:A、E、I、O、U)的个数。
注意:字母不分大、小写。
例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。
--------------------------------*/#include <conio.h>#include <stdio.h>fun ( char *s, int num[5] ){int k, i=5;for ( k = 0; k<i; k++ )/**********FOUND**********/num[i]=0;for (; *s; s++){i = -1;/**********FOUND**********/switch ( s ){case 'a':case 'A':{i=0;break;}case 'e':case 'E':{i=1;break;}case 'i':case 'I':{i=2;break;}case 'o':case 'O':{i=3;break;}case 'u':case 'U':{i=4;break;}}/**********FOUND**********/if (i < 0)num[i]++;}}main( ){char s1[81]; int num1[5], i;clrscr();printf( "\nPlease enter a string: " ); gets( s1 );fun ( s1, num1 );for ( i=0; i < 5; i++ )printf ("%d ",num1[i]);printf ("\n");}答案:1). num[k]=0;2). switch(*s)3). if (i >= 0) 第1题(10.0分)题号:447/*-------------------------------- 【程序改错】--------------------------------功能:企业发放的奖金根据利润提成。