教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

C程序设计(红皮书)习题官方参考答案(1-7章)(计老师)(5)

来源:网络收集 时间:2025-04-30
导读: #include void main() { int a[4][4],i,j,s=0,m=0; float n=0; for(i=0;i printf(\printf(\} for(j=0;j s+=a[1][j]; printf(\第二行4元素累加和为:%d\\n\for(j=0;j n+=a[j][3]; printf(\第四列4元素平均值为:%.2f

#include void main()

{ int a[4][4],i,j,s=0,m=0;

float n=0;

for(i=0;i<4;i++) for(j=0;j<4;j++) a[i][j]=3*i+2*j-6; printf(\原始数组为:\\n\for(i=0;i<4;i++) { for(j=0;j<4;j++)

printf(\printf(\}

for(j=0;j<4;j++)

s+=a[1][j];

printf(\第二行4元素累加和为:%d\\n\for(j=0;j<4;j++)

n+=a[j][3];

printf(\第四列4元素平均值为:%.2f\\n\for(i=0;i<4;i++) if(a[i][i]<0) m++;

printf(\主对角线4元素中负数的个数为:%d\\n\}

10.约瑟夫环问题:编号为1,2,3,...,n的n个人按顺时针方向围坐一圈,每人持有一个正整数密码。一开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针报数,报到m时停止,报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计程序求出出列顺序。

分析:设整型数组a中保存n个人的密码,对应的人出列后,数组元素置0作为标志。顺时针确定下一个人的方法,可将下标加1,再对n求余。

#include #define N 100 main()

{ int a[100];

int i,j,m,n,k=0;

printf(\输入人数n和任选的一个正整数m:\ scanf(\

printf(\输入n个人的密码: \ for (i=0;i

scanf(\ printf(\出列顺序为: \ for(i=0;i

{ j=1;

while(j

{ while(a[k]==0) /*跳过已出列的人*/ k=(k+1)%n; j++;

k=(k+1)%n; }

while(a[k]==0) /*跳过已出列的人*/ k=(k+1)%n; printf(\ m=a[k];

a[k]=0; } }

第7章习题 一、选择题

1 A 2 D 3 D 4 B 5 A 6 D 7 C 8 D 9 B 10 A 二、填空题

1. main() 2. main() 3.函数首部

4. 解决函数必须“定义在前,使用在后”的原则问题 5. int

6. 定义 调用

7. 地址传递 值传递 8. return void

9. void f(float a,float b) float f(float a,float b) 10. static

三、程序分析题

1. a=48 2. 8,17 3. 2721 4. BASIC C

COBOL FORTRAN PASCAL Smalltalk 5. 6

1 2 3 6 5 4

四、编程题

1.写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。

#include #include void main() {int prime(int); int n;

printf(\

scanf(\ if (prime(n))

printf(\ else

printf(\ }

int prime(int n) {int flag=1,i;

for (i=2; i

2.写一个函数,用于实现函数strcmp()的功能,能将两个字符串进行比较,将两个字符串中第一个不相同字符的ASCII码值之差作为函数的返回值。

#include

int MyStrcmp(char s[], char t[]); main() {

char str1[20],str2[20]; printf(\gets(str1);

printf(\gets(str2); if (MyStrcmp(str1,str2)>0) printf(\

else if (MyStrcmp(str1,str2)<0) printf(\ else

printf(\}

int MyStrcmp(char s[], char t[]) {

int i;

for (i=0;s[i]==t[i]; i++) if (s[i]=='\\0') return 0 ; return (s[i]-t[i]); }

3. 写一个函数,用于实现函数strcat()的功能, 能将两个字符串连接。 #include void main()

{void concatenate(char string1[],char string2[],char string[]); char s1[100],s2[100],s[100]; printf(\ scanf(\

printf(\ scanf(\

concatenate(s1,s2,s);

printf(\ }

void concatenate(char string1[],char string2[],char string[]) {int i,j;

for (i=0;string1[i]!='\\0';i++) string[i]=string1[i];

for(j=0;string2[j]!='\\0';j++) string[i+j]=string2[j]; string[i+j]='\\0'; }

4. 从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。

#include #define ARRSIZE 10

void MaxMinExchang(int a[], int n) {

int maxValue=a[0], minValue=a[0], maxPos=0, minPos=0; int i, temp;

for (i=1; i

if (a[i] > maxValue) {

maxValue = a[i];

maxPos = i;

}

else if (a[i] < minValue)

{

minValue = a[i];

minPos = i; }

}

temp = a[maxPos];

…… 此处隐藏:505字,全部文档内容请下载后查看。喜欢就下载吧 ……
C程序设计(红皮书)习题官方参考答案(1-7章)(计老师)(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/452821.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)