程序改错
-------------------------------------
1题目:在一个一维整型数组中出其中最大的数及其下标。
程序中共有4条错误语句,请改正错误。
-----------------*/
#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;
}
main()
{
int a[N],i,max,p=0;
printf("please enter 10 integers:\n");
for(i=0;i<N;i++)
/**********FOUND**********/
scanf("%d",a[i]);
/**********FOUND**********/
m=fun(a,p,N);
printf("max=%d,position=%d",max,p);
}
-------------------------------------『错误答案』:
1 int fun(int *a,int *b,int n)
2 *b=c-a;}
3 scanf("%d",&a[i]);
4 max=fun(a,&p,N);
/*-----------------------------------
2题目:用起泡法对10个整数从小到大排序。
程序中共有4条错误语句,请改正错误。
-------------------------------------
/**********FOUND**********/
void sort(int x,int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
/**********FOUND**********/
for(j=0;j<n-i;j++)
/**********FOUND**********/
if(x[i]>x[i+1])
{ t=x[j];x[j]=x[j+1];x[j+1]=t;}
}
main()
{
int i,n,a[100];
printf("please input the length of the array:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,n);
printf("output the sorted array:\n");
for(i=0;i<=n-1;i++)
printf("%5d",a[i]);
printf("\n");
}
-------------------------------------
『错误答案』:
1 void sort(int x[],int n)
2 for(j=0;j<n-1-i;j++) 或 for(j=0;n-1-i>j;j++) 或 for(j=0;j<n-(1+i);j++) 或 for(j=0;n-(1+i)>j;j++)
3 if(x[j]>x[j+1]) 或 if(x[j+1]<x[j])
-------------------------------------
3题目:在一个已按升序排列的数组中插入一个数,插入后,数
组元素仍按升序排列。
程序中共有4条错误语句,请改正错误。
#define N 11
main()
{
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");
/**********FOUND**********/
scanf("%f",&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;}
------------------------------------
4【程序改错】
题目:以下程序的功能是求如下表达式:
S = 1 + 1/(1+2)+1/(1+2+3)+
1/(1+2+3+4)…
请改正程序中的错误,使程序能得到正确的运行结果。
#include <stdio.h>
main()
{
int n;
float fun();
printf("Please input a number:");
/**********FOUND**********/
printf("%d",n) ;
printf("%10.6f\n",fun(n));
}
/**********FOUND**********/
fun(int n)
{
int i,j,t;
float s;
s=0;
/**********FOUND**********/
for(i=1;i<=n;i++);
{
t=0;
scanf输入整型数组 for(j=1;j<=i;j++)
t=t+j;
/**********FOUND**********/
s=s+1/t;
}
return s;
}
『错误答案』:
1 scanf("%d",&n);
2 float fun(int n)
3 for(i=1;i<=n;i++) 或 for(i=1;n>=i;i++) 或 for(i=1;i<n+1;i++) 或 for(i=1;n+1>i;i++)
4 s+=1.0/t 或 s=s+1.0/(float)t; 或 s=s+1.0/t; 或 s+=1.0/(float)t
/*-----------------------------------
5题目:输入一行英文文本,将每一个单词的第一个字母变成大写。例如:输入"This is a C program.",输出为"This
Is A C Program."。
-------------------------------------
#include <string.h>
#include <stdio.h>
#include <conio.h>
/**********FOUND**********/
fun(char p)
{
int k=0;
/**********FOUND**********/
while(*p=='\0')
{
if(k==0&&*p!=' ')
{
*p=toupper(*p);
/**********FOUND**********/
k=0;}
else if(*p!=' ') k=1;
else k=0;
/**********FOUND**********/
*p+;
}
}
main()
{
char str[81];
clrscr();
printf("please input a English text line:");
gets(str);
printf("The original text line is :");
puts(str);
fun(str);
printf("The new text line is :");
puts(str);
}
『错误答案』:
1 fun(char *p) 或 fun(char p[])
2 while(*p!='\0') 或 while(*p)
3 k=1;}
4 p++; 或 p=1+p; 或 ++p; 或 p=p+1;
-------------------------------------
6【程序改错】
题目:将一个字符串中的大写字母转换成小写字母。
例如:输入aSdFG输出为asdfg。
-------------------------------------
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论