Anyview题库:C程序设计 21题(2011-5-5修订) 下载本文

内容发布更新时间 : 2024/12/31 5:57:49星期一 下面是文章的全部内容请认真阅读。

编程作业系统AnyviewC —— 支持可视化运行调试

Anyview题库:C程序设计 21题(2011-5-5)

第8章 (5题)

8.010 写一函数求3个整数中最小的数。 要求实现下列函数:

int min(int x,int y,int z);

8.020 编写函数,求将整笔钱换为1元、5元和10元的零钱共有多少种换法? 要求实现下列函数:

int change(int n);

/* 返回将n元钱换为1元、5元和10元的零钱的换法种数 */ {int x,y,z,count=0; for(x=0;10*x<=n;x++) for(y=0;5*y<=n;y++) for(z=0;z<=n;z++) if(10*x+5*y+z==n)

{printf(\return(count); }

8.030 先编写一个判断素数的函数。再编写一个函数将一个偶数表示为两个素数之和,并返回其中较小的素数。注:素数指只能被1和自身整除的正整数。规定0,1不是素数。 要求实现下列2个函数: int prime(int n);

/* 判断素数,如果是素数返回1,不是素数则返回0 */ {int i,flag=1;

for(i=2;i

int f(int i);

/* 将偶数i表示为两个素数之和,返回其中较小的素数*/ {int x;

for(x=3;x

if(prime(x)&&prime(i-x))

{printf(\return(x); }

8.050 编写函数,将字符串中ASCII码最小的字符放在第一个字符位置,其余字符依次往后移。

要求实现下列函数:

- 1 -

void func(char str[]); {int i,mini=0; char min=str[0];

for(i=1;str[i]!='\\0';i++)

if(min>str[i]) {mini=i;min=str[i];} for(i=mini;i>0;i--) str[i]=str[i-1]; str[0]=min; }

8.060 编写函数将一个nxn的二维数组按“次对角线”翻转。 例如:翻转前的数组 翻转后的数组 1 2 3 9 6 3 4 5 6 ---> 8 5 2 7 8 9 7 4 1 要求实现的函数原型为: void invert(char a[N][N]) { int i,j,t;

for(i=0;i

a[i][j]=a[N-1-j][N-1-i]; a[N-1-j][N-1-i]=t;} }

/* 8.072 编写函数将一个NxN的二维数组a的元素按行向右轮转1位。 例如:轮转前的数组 轮转后的数组 1 2 3 3 1 2 4 5 6 ---> 6 4 5 7 8 9 9 7 8 */

void turningRight(char a[N][N]) { int i,j; char temp;

for(i=0;i

for(i=0;i

a[i][j]=a[i][j+1]; a[i][j+1]=temp; }

- 2 -

}

/* 8.067 编写函数将一个NxN的二维数组的周边元素“顺时针”轮转1位。 例如:轮转前的数组 轮转后的数组 1 2 3 4 1 2 4 5 6 ---> 7 5 3 7 8 9 8 9 6 */

void turningClockwise(char a[N][N]) { char temp,t;

int column=0,row=0,flag=1; temp = a[0][0]; a[0][0] = a[1][0]; column = 1;

while(!(row==0&&column==0)) {

t = a[row][column]; a[row][column] = temp; temp = t;

if(flag==1) {

if(column!=N-1) column ++; else {

flag++; row++; } } else

if(flag==2) {

if(row!=N-1) row++; else {

flag++; column--; } } else

if(flag==3) {

if(column!=0)

- 3 -