admin 管理员组

文章数量: 1086019


2024年12月31日发(作者:ardikars)

C语言程序设计课后习题1—8参考答案

习题1参考答案

一、简答题

1、冯 诺依曼计算机模型有哪几个基本组成部分?各部分的主要功能是什么?

答:冯 诺依曼计算机模型是由运算器、控制器、存储器、输入设备、输出设备五

大功能部件组成的。

运算器又称算术逻辑部件,简称ALU,是计算机用来进行数据运算的部件。数

据运算包括算术运算和逻辑运算。

控制器是计算机的指挥系统,计算机就是在控制器的控制下有条不紊地协调

工作的.

存储器是计算机中具有记忆能力的部件,用来存放程序和数据.

输入设备是用来输入程序和数据的部件。

输出设备正好与输入设备相反,是用来输出结果的部件。

2、简述计算机的工作原理。

答:计算机的工作原理可简单地概括为:各种各样的信息,通过输入设备,进入计

算机的存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出

设备显示出来。整个过程由控制器进行控制。

3、计算机软件系统分为哪几类?

答:软件内容丰富,种类繁多,通常根据软件用途将其分为两大类:系统软件和

应用软件。

系统软件是指管理、监控、维护计算机正常工作和供用户操作使用计算机的

软件。这类软件一般与具体应用无关,是在系统一级上提供的服务。系统软件主

要包括以下两类:一类是面向计算机本身的软件,如操作系统、诊断程序等。另

一类是面向用户的软件,如各种语言处理程序(像BC、VC等)、实用程序、字处

理程序等。

应用程序是指某特定领域中的某种具体应用,供最终用户使用的软件,它必须

在操作系统的基础上运行。

4、什么叫软件?说明软件与硬件之间的相互关系。

答:软件是指计算机程序及有关程序的技术文档资料。两者中更为重要的是程序,

它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。在不太

严格的情况下,认为程序就是软件。硬件与软件是相互依存的,软件依赖于硬件

的物质条件,而硬件则需在软件支配下才能有效地工作.在现代,软件技术变得越

来越重要,有了软件,用户面对的将不再是物理计算机,而是一台抽象的逻辑计

算机,人们可以不必了解计算机本身,可以采用更加方便、更加有效地手段使用计

算机。从这个意义上说,软件是用户与机器的接口.

二、填空题

1、算术 逻辑

2、键盘 鼠标

3、控制器 运算器

4、10 2

5、0 0x

6、原码 反码 补码

7、00010111 11101001

8、127 -128

三、选择题

1、C 2、A 3、B 4、A 5、B 6、B 7、D 8、A 9、A 10、B 11、A 12、

B

习题2参考答案

一、简答题

1、C语言有哪些特点?

答:(1)简洁紧凑、灵活方便;(2)运算符丰富;(3)数据结构丰富;(4)C语言是

结构式语言;(5)C语言的语法限制不太严格、程序设计自由度大;(6)C语言允

许直接访问物理地址,可以直接对硬件进行操作;(7)C语言程序生成代码质量高,

程序执行效率高;(8)C语言使用范围大,可移至性好;(9)具有预处理功能;(10)

具有递归功能.

2、C语言的主要应用有哪些?

答:(1)许多系统软件和大型应用软件都是用C语言编写的,如UNIX、Linux等操

作系统。(2)在软件需要对硬件进行操作的场合,用C语言明显优于其他高级语

言。例如,各种硬件设备的驱动程序(像显卡驱动程序、打印机驱动程序等)一般

都是用C语言编写的.(3)在图形、图像及动画处理方面,C语言具有绝对优势,

特别是游戏软件的开发主要就是使用C语言。(4)随着计算机网络飞速发展,特

别是Internet的出现,计算机通信就显得尤其重要,而通信程序的编制首选就是C

语言.(5)C语言适用于多种操作系统,像Windows、UNIX、Linux等绝大多数操作

系统都支持C语言,其他高级语言未必能得到支持,所以在某个特定操作系统下运

行的软件用C语言编制是最佳选择。

3、列举几种程序设计语言。

答:C语言、Java语言、Pascal语言、BASIC语言、LOGO语言等。

二、填空题

1、机器语言 汇编语言 高级语言

2、机器语言

3、ALGOL 60

4、多个函数

5、main

6、#include

7、定义 使用

8、声明部分 执行部分 声明部分 执行部分

三、选择题

1、D 2、B 3、B 4、C 5、C 6、C 7、D 8、C 9、D 10、A 11、B 12、

A 13、B 14、C 15、A

习题3参考答案

一、填空题

1、整型 字符型 实型

2、字母 数字 下划线 字母 下划线

3、直接 符号 符号

4、0 0x

5、1 2

6、4 8

7、—32768~32767

8、-16

9、x+=1;

10、26

11、(m/10)%10*100+m/100(100*10)+m%10

二、选择题

1、D 2、C 3、A 4、B 5、B 6、D 7、B 8、C 9、A 10、A 11、C 12、

B 13、B 14、D 15、B 16、D 17、B 18、D 19、C 20、A 21、B 22、D

23、D 24、D 25、D 26、D 27、C 28、A 29、C 30、B

习题4参考答案

一、填空题

1、scanf printf

2、按指定的输出格式将信息输出到屏幕上 常规字符 格式控制符

3、X、E、G

4、getche输入的字符回显,而getch输入的字符不回显

5、fflush

6、解决某个问题的具体的方法和步骤

7、自然语言描述 伪代码 流程图 N-S图

8、顺序 分支 循环

二、选择题

1、B 2、C 3、D 4、C 5、B 6、C 7、D 8、C 9、B 10、B 11、D 12、

C 13、D 14、D 15、A

三、编程题

1、编写一程序要求任意输入四位十六进制整数,以反序的方式输出该十六进制数.

例如:输入9AF0,则输出0FA9。

#include〈stdio。h〉

void main()

{

unsigned short a, b;

scanf(“%4x”, &a) //输入4位十六进制数给变a

b=(a & 0X000F)<<12; //取a的最低一位十六进制数并左移12位后赋值给b

b+=(a & 0X00F0)〈<4; //取a的次第一位十六进制数并左移4位后与b相加再

赋值给b

b+=(a & 0X0F00)〈〈4; //取a 的次高一位十六进制数并右移4位后与b相

加再赋值给b

b+=(a & 0XF000)<<12; //取a的最高一位十六进制数并右移12位后与b相加

再赋值给b

printf(“%4xn”, b); //输出变化后的十六进制数

}

2、编程从键盘输入两个整数分别给变量a和b,要求在不借助于其他变量的条件

下,将变量a和b的值实现交换。

#include

void main()

{

int a, b;

scanf(“%d%d”, &a, &b);

printf(“before swap: a=%d b=%dn”, a,b);

a=a+b;

b=a—b;

a=a—b;

printf(“after swap: a=%d b=%dn”, a, b);

}

3、编程从键盘输入圆的半径r,计算出圆的周长和面积.

#include

#define PI 3。14159

void main()

float r, c, s;

scanf(“%f”, &r);

c=2*r*PI;

s=PI*r*r;

printf(“c=%f s=%fn”, c, s);

}

4、编程从键盘输入任意一个十六进制负整数,以输入的形式输出。例如:输入

-FA98,输出—FA98.

#include

void main()

short int a;

scanf(“%x", &a);

printf(“-%hxn”, —a);

5、已知一元二次方程ax+bx+c=0,编一程序当从键盘输入a、b、c的值后,计算

x的值.

#include

#include〈math.h>

void main()

float a, b, c;

float d;

float x1, x2;

printf(“input a, b, c: ”);

scanf(“%f%f%f", &a, &b, &c);

d=sqrt(b*b—4*a*c);

x1=(—b+d)/(2*a);

x2=(-b—d)/(2*a);

printf(“x1=%。2f x2=%。2fn”, x1, x2);

6、假设从键盘输入某日午夜零点到现在已经历的时间(单位:s),遍一程序计算

到现在为止已近过了多少天,现在的时间是多少?

#include

void main()

{

unsigned long t, r;

int d, h, m, s;

printf(“second=”);

scanf(“%d”, &t);

d=t/(24*3600);

r=t%(24*3600);

h=r/3600;

2

m=(r%3600)/60;

s=(r%3600)%60;

printf(“have passed days is %d, current time is %02d:%02d:%02dn”,

d, h, m, s):

习题5参考答案

编程题

1、编一程序判断输入整数的正负性和奇偶性。

#include

void main()

{

int a;

scanf(“%d", &a);

if (a>=0)

printf(“the number %d is positive numbern”, a);

else

printf(“the number %d is negative numbern”, a);

if (a%2==0)

printf(“the number %d is even numbern”, a);

else

printf(“the number %d is odd numbern”, a);

2、编程判断输入数据的符号属性。

#include〈stdio。h〉

void main()

int x, sign;

scanf(“%d”, &x);

if (x>0)

sign=1;

else if (x==0)

sign=0;

else

sign=—1;

printf(“sign= %dn”, sign);

3、输入任意三个数num1、num2、num3,按从小到大的顺序排序输出。

#include

void main()

{

int num1, num2, num3;

scanf(“%d%d%d”, &num1, &num2, &num3);

if (num1〈=num2)

if (num2〈=num3)

printf(“%d %d %dn”, num1, num2, num3);

else

if (num1〉=num3)

printf(“%d %d %dn”, num3, num1, num2);

else

printf(“%d %d %dn", num1, num3, num2);

else

if (num2>=num3)

printf(“%d %d %dn”, num3, num2, num1);

else

if (num1>=num3)

printf(“%d %d %dn", num2, num3, num1);

else

printf(“%d %d %dn”, num2, num1, num3);

4、在屏幕上显示一张如下所示的时间表。

#include

void main()

{

char c;

printf(“*****Time*****n");

printf(“1 morningn”);

printf(“2 afternoonn");

printf(“3 nightn”);

printf(“Please enter your choice: ");

c=getcahr();

switch (c)

case ‘1’: printf(“Good morningn”); brenk;

case ‘2’: printf(“Good afternoonn"); break;

case ‘3’: printf(“Good nightn"); break;

default: printf(“Selection error!n”);

}

5、输入一个年份和月份,打印出该月份有多少天(考虑闰年),用switch语句编

程.

#include〈stdio.h>

void main()

{

int year, month;

printf(“Input year, month: ”);

scanf(“%d %d”, &year, &month);

switch (month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12: printf(“31 daysn”);

break;

case 4:

case 6:

case 9:

case 11: printf(“30 daysn");

break;

case 2: if ((year%4==0 && year%100!=0)|| (year%400==0))

printf(“29 daysn”);

else

printf(“28 daysn”);

break;

default: printf(“Input error!n”);

习题6参考答案

编程题

1、编程计算2+4+6+…+98+100的值。

(1)利用for循环语句实现,在循环体外为sum赋初值0。

#include〈stdio。h〉

void main()

{

int i, sum=0;

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

sum+=i;

printf(“sum= %dn”, sum);

(2)利用while循环语句实现,在循环体外为i和sum赋初值.

#include〈stdio。h>

void main()

int i=2, sum=0;

while(i〈=100)

sum+=i;

i+=2;

printf(“sum= %dn”, sum);

2、编程计算1*2*3+4*5*6+…+99*100*101的值。

#include

void main()

{

int i;

long term, sum=0;

for(i=1; i<=99; i+=2)

term=i*(i+1)*(i+2);

sum+=term;

}

printf(“sum= %dn”, sum);

3、编程计算1!+2!+3!+…+10!的值。

(1)用累加和算法,累加项为term=term*i; i=1,2,…,10。Term的初始值为1,

使用单重循环完成。

#include〈stdio.h〉

void main()

{

long term=1, sum=0;

int i;

for(i=1; i〈=10; i++)

term*=i;

sum+=term;

}

printf(“1!+2!+3!+…+10! = %ldn”, sum);

}

(2)用内层循环求阶乘,外层循环控制累加的项数。

#include〈stdio.h>

void main()

{

long term, sum=0;

int i, j;

for(i=1; i〈=10; i++)

term=1;

for(j=1; j<=i; j++)

term*=j;

sum+=term;

}

printf(“1!+2!+3!+…+10! = %ldn”, sum);

4、编程计算a+aa+aaa+…+aa..a(n个a)的值,n和a的值由键盘输入。

#include

void main()

{

long term=0, sum=0;

int a, i, n;

printf(“Input a, n:n”);

scanf(“%d,%d”, &a, &n);

for(i=1; i〈=n; i++)

term=term*10+a;

sum+=term;

printf(“sum=%ldn”, sum);

5、参考答案:

#include

void main()

{

float term, result=1;

int n;

for(n=2; n〈=100; n+=2)

{

term=(float)(n*n)/((n—1)*(n+1));

result*=term;

}

printf(“result=%fn”, 2*result);

}

6、参考答案:

#include〈stdio。h〉

#include〈math.h>

void main()

int n=1, count=0;

float x;

double sum, term;

printf(“Input x: ”)

scanf(“%f”, &x);

sum=x;

term=x;

do

term=—term*x*x/((n+1)(n+2)); //计算相应项,并改相应符号

sum+=term;

n+=2;

count++;

}while(fabs(term)>=le—5);

printf(“sin(x) = %f, count= %dn”, sum, count);

7、参考答案:

#include〈stdio。h>

void main()

{

int i, j, k, n;

printf(“result is: ”);

for(n=100; n〈1000; n++)

i=n/100; //分出百位

j=(n-i*100)/10 //分出十位

k=n%10; //分出个位

if(n==i*i*i+j*j*j+k*k*k)

printf(“%d ", n);

}

printf(“n”);

8、参考答案:

#include〈stdio.h〉

#include

void main()

{

int i1, i2, i3, i4, k, n;

printf(“Input data is: ");

scanf(“%d”, &n);

k=abs(n);

i1=k/1000; //分离出千位

i2=(k—i1*1000)/100 //分离出百位

i3=(k-i1*1000—i2*100)/10 //分离出十位

i4=k%10; //分离出个位

printf(“The sum of the total bit is %dn”, i1+i2+i3+i4);

9、参考答案:

#include

void main()

int n, m=0, s, r;

printf(“Input data is: ”);

scanf(“%d”, &n);

s=n;

While(s!=0)

{

r=s%10; //从低位到高位逐一分离

m=10*m+r; //重新组合一正数

s=s/10; //求其商

}

if(m==n)

printf(“yesn”);

else

printf(“non”);

}

10、参考答案:

#include〈stdio.h〉

void main()

{

int x, y, z, count=0; //x,y,z分别表示5分、2分和1分硬币的数量

for(x=1; x<=28; x++) //5分硬币最多不超过28枚

for(y=1; y〈=73; y++) //2分硬币最多不超过73枚

{

z=100—x-y; //共有100枚硬币,减去5分和2分硬币后为1分硬币数量

if(5*x+2*y+z==150)

count++ //增加一种方案

printf(“%02d, %02d, %02d ”, x, y, z); //输出每一种方案

if (count%6==0)

printf(“n”); //没输出6种方案后,换行

}

}

printf(“count=%dn”, count);

11、设计思想:将A、B、C、D4个人的回答用一条件表达式来表示,对于A的回答:

thisman!=’A';对于B的回答:thisman=='C';对于C的回答:thisman==’D’;

对于D的回答:thisman!='D’;然后,采用枚举的方法,一个人一个人的去试,

如果这4个条件表达式中有3个为真,即4个条件表达式的值相加为3,则可判定是其

中某人做的好事。

参考答案:

#include〈stdio。h〉

void main()

int k=0; sum=0; g=0;

char thisman='';

for (k=0; k〈=3; k++) //循环控制变量为k,循环共进行4次

thisman=’A'+k; //初始认为A做好事,依次为B、C、D

sum=(thisman!=’A’)+(thisman==’C’

(thisman!=’D’);

if (sum==3)

)+(thisman==’D’)+

printf(“This man is %cn”, thisman);

g=1;

}

if (g!=1)

printf(“Can't foundn”);

}

12、参考答案(1):

#include〈stdio.h>

void main()

{

int i, j;

for (i=1; i<=3; i++) //先显示前三行

for (j=1; j〈=i-1; j++) //输出每行前的空格

printf(“ ”);

for (j=1; j<=5—2*(i—1); j++) //输出每行的*号

printf(“*”);

printf(“n”);

for (i=1; i〈=2; i++) //接着显示后两行

{

for (j=1; j<=2-i; j++)

printf(“ ");

for (j=1; j〈=2*i+1; j++)

printf(“*”);

printf(“n");

}

}

参考答案(2):

#include

void main()

{

int i, j, k;

for (i=1; i<=5; i++) //i控制行数

for (j=1; j<=5-i; j++) //随行数的增加,输出递减数目的空格

printf(“ ”);

for (k=1; k<=5; k++) //每行输出5个*字符

printf(“*”);

printf(“n”); //将光标移到下一行起始位置处

参考答案(3):

#include〈stdio。h>

void main()

{

int i, j;

for (i=1; i〈=5; i++)

{

for (j=1; j<=2*(i-1)+1; j++)

printf(“*”);

printf(“n”);

}

习题7参考答案

编程题

1、参考答案:

#include〈stdio。h〉

void main()

int i, sum=0; a[20];

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

Scanf(“%d”, &a[i]); //输入20个整数

for (i=0; i〈20; i++) //对非负数进行统计

if (a[i]〈0)

continue; //为负数,进入下一轮循环

sum+=a[i]; //非负数累计

}

printf(“sum= %dn”, sum);

}

2、参考答案

#include〈stdio.h〉

void main()

{

int i, j, odd, even, n, t, a[10];

odd=0;

even=9;

for(i=0; i<10; i++) //将键盘输入的数据存入数组中

{

scanf(“%d”, &n);

if (n%2!=0)

a[odd++]=n; //将奇数放置在数组的左边

else

a[even——]=n; //将偶数放置在数组的哟边

}

for (i=0; i〈odd—1; i++) //通过选择排序对奇数进行升序排列

n=j;

for (j=i+1; j

if (a[j]

n=j;

if (n!=i)

{

t=a[i];

a[i]=a[n];

a[n]=t;

}

}

for (i=odd; i<9; i++) //通过选择排序对偶数进行升序排列

{

n=i;

for (j=i+1; j〈10; j++)

if (a[j]

n=j;

If (n!=i)

{

t=a[i];

a[i]=a[n];

a[n]=t;

}

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

printf(“%d”, a[i]); 输出排序结果

printf(“n”);

}

3、参考答案:

#include

void main()

int i, max, min, a[10];

printf(“Input 10 integer number:

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

scanf(“%d", &a[i]);

max=0;

min=0;

for(i=1; i<10; i++)

{

if (a[i]>a[max])

max=i;

if (a[i]

min=i;

i=a[max];

a[max]=a[min];

a[min]=i;

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

printf(“%d ”, a[i]);

printf(“n”);

}

4、参考答案:

; //输入10个整数 ”)

#include

void main()

int i, j, t, a[6];

printf(“Input 6 integer number: ”);

for(i=0; i〈6; i++)

scanf(“%d”, &a[i]);

printf(“n”);

for(i=0; i〈6; i++)

for (j=0; j〈6; j++)

printf(“%d ”, a[j] );

printf(“n”);

t=a[5];

for (j=5; j>0; j-—)

a[j]=a[j—1];

a[0]=t;

}

}

5、参考答案:

#include

void main()

{

int i, j, sum=0, mul=1, a[5][5];

printf(“Input 5*5 array:n”);

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

for(j=0; j〈5; j++)

scanf(“%d”, &a[i][j]);

printf(“n");

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

{

sum+=a[i][j];

if(i!=2)

sum+=a[i][4—i];

if(i%2!=0)

continue;

mul*=a[i][i];

if(i!=2)

mul*=a[i][4-i];

}

printf(“sum = %d mul = %dn”, sum, mul);

6、参考答案:

#include

#define N 6

void main()

int i, j, a[N][N];

for(i=0; i

{

a[i][0]=1;

a[i][i]=1;

for(j=1; j

a[i][j]=a[i—1][j-1]+a[i—1][j];

}

for(i=0; i〈N; i++)

{

for(j=0; j〈N—i-1; j++)

printf(“ ”);

for(j=0; j〈=i; j++)

printf(“%2d ”, a[i][j]);

printf(“n”);

7、参考答案:

#include

#include〈string。h>

#define N 80

void main()

{

char str[N];

int i;

printf(“Input a string: ”);

gets(str);

printf(“After reverse: ");

for(i=strlen(str)-1; i〉=0; i-—)

printf(“%c”, str[i]);

printf(“n");

}

8、参考答案:

#include〈stdio。h>

#include〈string。h〉

#define N 80

void main()

char str[N], strtemp[N];

unsigned int i, j;

printf(“Input a string: ");

gets(str);

for(i=0, j=0; i〈strlen(str); i++)

if(str[i]!='c’)

strtemp[j++]=str[i];

strtemp[j]=’0’;

strcpy(str, strtemp);

printf(“After delete character ’c': ");

printf(“%sn", str);

}

9、参考答案:

#include〈stdio。h>

#define N 80

void main()

char s1[N], s2[N]=”abcdefg0hijk”;

unsigned int i;

i=0;

while(1)

{

s1[i]=s2[i];

if(s2[i]=='0')

break;

i++;

}

printf(“After string copy: %sn", s1);

}

10、参考答案:

#include〈stdio.h>

void main()

{

char dstStr[20]=’12345', srcStr[20]=’67890’;

unsigned int i, j;

printf(“Before strcat: dstStr=%s srcStr=%sn”, dstStr, srcStr);

for(i=0; dstStr[i]!=’0’; i++)

for(j=0; srcStr[j]!=’0’; j++)

dstStr[i+j]=srcStr[j];

dstStr[i+j]=’0’;

printf(“After strcat: dstStr=%sn", dstStr);

11、参考答案:

#include〈stdio.h>

void main()

{

int a[10]={1,3,5,7,9}, num=5, i, n;

printf(“Before insert: ”);

for(i=0; i

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

printf(“n”);

printf(“Input a number: ”)

scanf(“%d", &n);

for(i=num-1; i>=0; i-—)

if(a[i]〉n)

a[i+1]=a[i];

else

break;

a[i+1]=n;

printf(“After insert: ");

for(i=0; i〈num+1; i++)

printf(“%d”, a[i]);

printf(“n”);s

习题8参考答案

编程题

1、设计一个函数,用来判断一个整数是否为素数。

参考答案:

#include

#include〈math.h>

int IsPrimeNumber (int number );

void main()

{

int a;

printf(“Input a integer number: ”);

scanf(“%d”, &a);

if(IsPrimeNumber(a))

printf(“%d is prime number。n”, a);

else

printf(“%d isn’t prime number。n”, a);

}

int IsPrimeNumber(int number)

int I;

if(number〈=—1)

return(0);

for(i=2; i〈sqrt(number); i++)

if(number%i==0)

return(0);

return(i);

2、设计函数MaxCommonFactor(),计算两个正整数的最大公约数。

参考答案:

#include〈stdio。h>

int MaxCommonFactor(int a, int b);

void main()

{

int a,b,c;

printf(“Input two integer number: ”);

scanf(“%d%d", &a,&b);

c=MaxCommonFactor(a,b);

if(c!=-1)

printf(“The biggest common factor of %d and %d is %dn”, a,b,

c);

else

printf(“The biggest common factor of %d and %d isn’t existn”,

a,b);

int MaxCommonFactor(int a, int b)

{

if(a〈=0||b〈=0)

return(-1);

while(a!=b)

{

if(a〉b)

a=a—b;

else

if(b〉a)

b=b-a;

}

ruturn(a);

3、定义函数GetData()用于接收键盘输入的一组整型数据,并放入一数组中;

另外再定义一个函数Sort()用于对输入的这一组数据按照降序排列。主函数向后

调用GetData和Sort函数,输出最后的排序结果.

参考答案:

#include

#define N 10

void GetData(int a[],int n);

void Sort(int a[],int n);

void main()

int i,a[N];

GetData(a,N);

Sort(a,N);

printf(“After sort: ”);

for(i=0;i〈n;i++)

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

printf(“n”);

}

void GetData(int a[],int n)

{

int i;

printf(“Input number: ”);

for(i=0;i

scanf(“%d”,&a[i]);

}

void Sort(int a[],int n)

int i,j,k,t;

for(i=0;i〈n-1;i++)

{

k=i;

for(j=i+1;j

if(a[j]〉a[k])

k=j;

if(k!=i)

{

t=a[i];

a[i]=a[k];

a[k]=t;

}

4、参考答案:

#include〈stdio.h〉

#include〈string.h>

void JsSort(char str[]);

void main()

{

char str[80];

printf(“Input a string: ”)

gets(str);

JsSort(str);

printf(“After sort: %sn", str);

}

void JsSort(char str[])

{

int i,j,k,len;

char ch;

len=strlen(str);

for(i=1;i〈len-1;i+=2)

{

k=i;

for(j=i+2;j〈len;j+=2)

if(str[j]〉str[k])

k=j;

if(k!=j)

ch=str[i];

str[i]=str[k];

str[k]=ch;

}

}

}

5。参考答案:

#include

#include

#define N 30

void Josegh(int p[],int n, int s,int m);

void main()

{

int i,p[N];

Josegh(p,N,1,10);

for(i=N—1;i>=0;i—-)

{

printf(“ %4d”,p[i]);

if(i%10==0)

printf(“n”);

}

}

void Josegh(int p[],int n,int s,

int i,j,s1,w;

s1=s;

for(i=1;i〈=n;i++)

p[i—1]=i;

for(i=n;i>=2;i——)

s1=(s1+m—1)%i;

if(s1==0)

s1=i;

w=p[s1-1];

for(j=s1;j

p[j-1]=p[j];

p[i—1]=w;

}

) int m

6、参考答案:

#include

#include〈string.h>

int StrLoc(char str1[],char str2[]);

void main()

int loc;

char str1[]={“do”};

char str2[]={“how do you do?”};

loc=StrLoc(str1,str2);

if(loc==—1)

printf(“The string ”%s” not in the string ”%s”。n”,str1,str2);

else

printf(“Location of the string ”%s” in the string ”%s” is %

d。n”,str1,str2,loc);

int StrLoc(char str1[],char str2[])

{

unsigned int i,len1,len2;

len1=strlen(str1);

len2=strlen(str2);

if(len1>len2)

return(-1);

for(i=0;i〈=strlen(str2)—strlen(str1);i++)

if(strncmp(str1,str2+i,len1)==0)

return (i);

return(-1)

7、参考答案:

#include

long count(int n,int k);

void main()

{

int n,k;

n=10;

k=2;

printf(“Result=%ldn”,count(n,k));

long count(int n,int k)

for(i=1;i〈=n;i++)

item=1;

for(j=1;j〈=k;j++)

item*=i;

sum+=item;

return(sum);

8、参考答案:

#include

long F(int n);

void main()

{

int i;

for(i=1;i〈=40;i++)

printf(“F(%2d)=%—9ld ”,i,F(i));

if(i%4==0)

printf(“n”);

}

long F(int n)

{

if(n〈=2)

return(1);

return(F(n—1)+F(n—2));

}

9、参考答案:

#include

long fun(int m,int n);

void main()

int m,n;

long c;

printf(“Input m and n (m>=n): ”);

scanf(“%d%d”,&m,&n);

c=fun(m,n);

printf(“c=%ldn”,c);

}

long fun(int m,int n)

if(m==n||n==0)

return(1L);

else

return(m*fun(m-1),n)/(m-n));

10、参考答案:

#include

#include

void IntToStr(int n);

char str[80]={0};

void main()

int num;

printf(“Input an Integer number: ”);

scanf(“%d”,&num);

IntToStr(num);

printf(“The string is : %sn”, str);

}

void IntToStr(int n)

int i;

if(n==0)

return;

for(i=strlen(str)—1;i>=0;i—-)

str[i+1]=str[i];

str[0]=n%10+0x30;

IntToStr(n/10)


本文标签: 软件 输入 计算机 C语言 输出