资源描述
程序改错题:
gc558.c程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
main()
{ char *p, s[6];
int n;
p=&s;
gets(p);
n=*p-'0';
while(++p!='\0')n=n*8+*p-'0';
printf("%d \n",n);
}
程序填空题:
tk558.c的功能是:主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请将程序补充完整,使它能得出正确的结果。不得增行或删行,也不得更改程序的结构。#define N 3
#define M 4
void LineMax(int x[N][M])
{ int i,j,p;
for(i=0; i<N;i++)
{ p=0;
for(j=1; j<M;j++)
if(x[i][p]<x[i][j]) (1) ;
printf("The max value in line %d is %d\n", i, (2) );
}
}
main()
{ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
LineMax(x);
}
程序改错题:
gc531.c的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。程序有两处错误,请改正,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
main()
{ char *p, s[6];
int n;
p=&s;
gets(p);
n=*p-'0';
while(++p!='\0')n=n*8+*p-'0';
printf("%d \n",n);
}
程序填空题:
tk531.c程序的功能是:主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请将程序补充完整,使它能得出正确的结果。不得增行或删行,也不得更改程序的结构。
#define N 3
#define M 4
void LineMax(int x[N][M])
{ int i,j,p;
for(i=0; i<N;i++)
{ p=0;
for(j=1; j<M;j++)
if(x[i][p]<x[i][j]) (1) ;
printf("The max value in line %d is %d\n", i, (2) );
}
}
main()
{ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
LineMax(x);
程序改错题
gc453.c程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。程序有两处错误,请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
main()
{ char a[]="clanguage",t;
int i, j, k;
k=strlen(a);
for(i=0; i<=k-2; i+=2)
for(j=i+2; j<=k; j++ )
if( a[i]<a[j] )
{ t=a[i]; a[i]=a[j]; a[j]=t; }
puts(a);
printf("\n");
}
程序填空题
tk453.c程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请将程序补充完整,使它能得出正确的结果。不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
main()
{ int i, j;
for(i=0; [1] ; i++)
{ j=i*10+6;
if( [2] ) continue;
printf("\n%d",j);
}
}
程序改错题
输入一个范围-32768——32767的整数,调用函数split(),拆解出各位的数字,放入字符数组s[]中。
正数前面加“+”号,负数前面加“-”号,零不加符号。
gc486.c程序有两处错误,请找出并修正,使之符合上述要求。不得增加行或删除行,也不得更改程序结构。
include <stdio.h>
int main(void)
{
char s[7];
int k;
void split(int,char *);
printf("Please input a Integer( Range:-32768 to 32767 ):");
scanf("%d",&k);
split(k,s);
printf("%s\n",s);
return 0;
}
void split(int t,char *ps)
{
int i;
char *q=ps,tmp;
if (t>0)
*ps++='+';
if (t<0)
{
*ps++='-';
t=-t;
}
/*------------Found Mistake Below------------*/
while(t/10!=0)
{
i=t/10;
*ps++=t-i*10;
t=i;
}
*ps++='0'+t;
*ps='\0';
/*------------Found Mistake Below------------*/
for(q++;q<ps;q++,ps--)
tmp=*q,*q=*ps,*ps=tmp;
}
程序填空题
任意输入一句英语句子,统计其中的英文单词数。为了简化程序,假设
输入的句子不含标点符号,但可能有前空格或尾空格,单词间可能有多个空
格相间。请在tk486.c的括号[ ]处补充完整程序,并删除[ ],运行测试,实现上述要求。不得增加行或删除行,也不得更改程序结构。
#include <stdio.h>
#include <string.h>
void main()
{
char str[81],*p;
int wordnum=0;
printf("Please input an English sentence:");
gets(str);
puts(str);
p=str;
while(*p==32)
[ ]
while(*p!='\0')
{
do
p++;
while( [ ](*p==' '||*p=='\0') );
wordnum++;
while(*p==32)
p++;
}
printf("There are %d words in the line\n",wordnum);
}
程序改错题
gc689.c程序中,函数fun()的功能是逐个比较a,b两个字符串对应位置中的字符,把ASCII值小或相等的字符依次存放到c数组中,形成一个新的字符串。
例如:a中的字符串为fshADfg,b中的字符串为sdAEdi,则c中的字符串应为fdAADf。
程序有两处错误,请找出并修正,使之符合上述要求。不得增加行或删除行,也不得更改程序结构。
#include <stdio.h>
#include <string.h>
void fun(char *p,char *q,char *c)
{ int k = 0;
while(*p || *q)
{
if(*p <= *q)
c[k] = *q;
else
c[k] = *p;
if(*p) p++;
if(*q) q++;
k++;
}
}
int main()
{ char a[10]="fshADfg",b[10]="sdAEdi", c[80]={'\0'};
fun(&a,b,c);
printf("The string a:");
puts(a);
printf("The string b:");
puts(b);
printf("The result:");
puts(c);
return 0;
}
程序填空题
tk689.c程序完成以下功能:打印输出100~200间的全部素数,每行输出10个。
请在括号[ ]处补充完整程序,并删除[ ],运行测试,实现上述要求。不得增加行或删除行,也不得更改程序结构。
#include <stdio.h>
#include <math.h>
int main()
{
int m,k,i,n=0;
for (m=101; m<=200; m=m+2)
{
k=sqrt(m);
for (i=2;i<=k;i++)
if (m%i==0) [ ];
if (i>=k+1)
{
printf("%d ",m);
[ ];
}
if (n%10==0) printf("\n");
}
return 0;
}
展开阅读全文