c语言编程题改错题怎么改,c语言编程改错题.doc

本文提供两个C语言编程题目,包括二维数组的行排序(偶数行升序,奇数行降序)和判断英文句子是否为回文。包含了程序源代码及测试数据,同时指出了源程序中的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c语言编程改错题

【程序功能】对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序。

【含有错误的源程序】

#include

#define N 4

void swap( int *p1, int *p2)

{ int p;

p=p1; p1=p2; p2=p;

}

void sort(int a[N][N])

{ int i, j, k;

for(i=0;i

for(j=0;j

for(k=j+1;k

if(i%2==0?a[i][j]a[i][k])

swap(a[i]+j, a[i]+k);

}

void main()

{ int a[N][N]={{3,4,2,1},{8,7,5,6},{12,10,11,9},{15,14,16,13}};

int i,j;

sort(a[N][N]);

for(i=0;i

{ for(j=0;j

printf("%3d",a[i][j]);

printf("\n");

}

}

【测试数据与运行结果】

输入数据:

4 2 1

7 5 6

12 10 11 9

16 14 16 13

输出结果:

1 2 3 4

8 7 6 5

9 10 11 12

16 15 14 13

【程序功能】判断一个英文句子是否是回文。回文原指一个正读和反读都完全一样的单词。例如level是一个回文。若忽略标点符号、空格及字母大小的差异,回文的概念可以扩展到一个英文句子。例如,Madam, I’m Adam就是一个回文句子。下列程序中,函数palin的功能是判断一个英文句子是否是回文,如果是返回1,否则返回0。

【含有错误的源程序】

#include

#include

#include

void palin(char *s)

{ int i, j, k, ok;

char *sp, ch;

k=strlen(s);

sp=(char *)malloc(k+1);

if(sp==NULL)

{ printf("error!\n");

exit(0);

}

k=0;

while(*s)

{ ch=*s;

if(!('A'<=ch && ch<='Z'))

sp[k++]=ch-'A'+'a';

else if('a'<=ch && ch<='z')

sp[k++]=ch;

s++;

}

sp[k]= '\0';

ok=1;

for(i=0, j=k-1;i>j; i++,j--)

if(sp[i]!=sp[j]) { ok=0; break;}

free(sp);

return ok;

}

void main()

{ char s[80]={ "Madam, I'm Adam. ","Not a palindrome. "};

int i,ok;

for(i=0; i<2; i++)

{ ok=palin(s[i]); printf(ok?"%s: Yes.\n":"%s: No.\n",s[i]); }

}

【测试数据与运行结果】测试数据:“Madam, I'm Adam.”,“Not a palindrome.”

运行结果: Madam, I’m Adam.:Yes.

Not a palindrome.:No.

【程序功能】重新排列一维数组元素的顺序,使得左边的所有元素均为偶数并按由大到小的次序存放,右边的所有元素均为奇数并按由小到大的次序存放。

【含有错误的源程序】

#include

#include

void sort(int a[], int start, int end, int flag)

{ int i, j, k, temp;

for(i=start; i

for(j=start; j

if(flag? a[j]a[j+1])

{ temp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值