C程序设计第七章课后练习答案
C语言程序设计教程 第七章 课后习题参考答案
{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
for(i=0;i<M;iபைடு நூலகம்+)
{
for(j=0;j<N;j++)
{
if(i==j)
m+=a[i][j];
}
}
printf("主对角线元素之和为:%d\n",m);
批注本地保存成功开通会员云端永久保存去开通
P198 3求主、副对角线元素之和
#include<stdio.h>
#define M 4
#define N 4
int main()
{
int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int i,j,m=0,n=0;
{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
printf("\n");
printf("排序后的数组为:\n");
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
}
P76 3成绩
#include<stdio.h>
void input(int cla[50][3],int n);
c语言《程序设计基础》课后习题参考答案与解析
c语言《程序设计基础》课后习题参考答案与解析《程序设计基础》习题参考答案与部分解析第1章 C 语言概述一、填空a) C源程序的基本单位是函数。
b) 一个C程序中至少应包括一个 main函数。
c) 在C语言中,输出操作是有库函数 printf( )函数完成。
二、单选题1、A2、C3、B解析:第1题答案:A 。
因为一个C程序总是从main函数开始执行的,而不论main函数在程序中的位置。
且到main函数结束。
第2题答案:C 。
因为 main函数没有限制必须位于程序的最前面。
C程序书写自由,一行内可写几个语句。
在对一个C 程序进行编译的过程中,无法检查注释当中的拼写错误。
不过C语言本身并没有输入输出语句,输入输出是由函数完成的。
第3题答案:B。
因为一个C语言程序是由若干个函数组成的。
但至少包含一个main 函数,且main函数的位置不限。
三、编程题1、编写一个输出“Welcome to C!”信息的小程序。
解:程序如下#include “stdio.h”main( ){1printf(“Welcome to C!”) ;}2、已知三角形的三边长分别为3,4,5,试用海轮公式编程求其面积。
海伦公式为:S?= ,其中s= (a+b+s)/2 ;解:程序如下#include “math.h”#include “stdio.h”main( ){int a , b , c ; /* a ,b,c 3个整型变量表示三角形的3条边。
*/float s ,s1 ; /* s1作为面积变量,s 作为中间变量是都应该是实形*/a=3 ; b= 4; c=5 ;s= (a+b+c)/2.0 ;s1= sqrt(s*(s-a)*(s-b)*(s-c)); /* sqrt函数完成开平方根功能。
*/printf(“area=%f\n”,s1);}2第2章程序设计基础知识一、单选题1、C2、A3、C4、A5、C6、C7、D8、C9、D 10、A 11、D 12、A 13、C 14、C 15、B A 16、B 17 D解析:1. 答案:C。
《C语言程序设计教程》第三版课后习题参考答案
《C语言程序设计教程》第三版课后习题参考答案C语言程序设计教程第三版课后习题参考答案第一章:C语言概述1.1 C语言的特点答案:C语言是一种通用的、面向过程的程序设计语言,具有高效、简洁、灵活等特点。
它提供了丰富的程序设计元素和功能,适用于各种不同的应用领域。
1.2 C语言程序的基本结构答案:C语言程序由预处理指令、函数声明、函数定义、变量声明和语句组成。
其中,预处理指令用来引入头文件或定义宏,函数声明用来声明函数的名称和参数,函数定义用来实现函数的功能,变量声明用来声明变量的类型和名称,语句用来表达具体的计算过程。
1.3 C语言的数据类型答案:C语言提供了多种数据类型,包括基本类型(整型、浮点型、字符型等)和派生类型(数组、指针、结构体等)。
每种数据类型在内存中占据一定的存储空间,并具有特定的取值范围和操作规则。
1.4 C语言的运算符和表达式答案:C语言支持各种运算符和表达式,例如算术运算符(+、-、*、/等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!等)等。
通过运算符和表达式可以进行各种数值计算和逻辑判断。
第二章:基本数据类型与运算2.1 整型数据类型答案:C语言提供了不同长度的整型数据类型,包括有符号整型(int、long等)和无符号整型(unsigned int、unsigned long等)。
整型数据类型可以表示整数值,并具有不同的取值范围。
2.2 浮点型数据类型答案:C语言提供了浮点型数据类型(float、double等),用来表示带小数部分的实数值。
浮点型数据可以表示较大或较小的数值,并具有一定的精度。
2.3 字符型数据类型答案:C语言提供了字符型数据类型(char),用来表示单个字符。
字符型数据可以用于表示各种字符(包括字母、数字、符号等)。
2.4 布尔型数据类型答案:C语言不直接支持布尔型数据类型,但可以使用整型数据类型来表示布尔值(0表示假、非零表示真)。
C程序设计(第2版)第七章习题解答.doc
C程序设计(第2版)第七章习题解答第七章动态内存分配习题一、基本概念与基础知识自测题7.1 填空题7.1.1 C/C++定义了4个内存区间:(1)、(2)、(3)和(4)。
答案:(1)代码区,存放程序代码;(2)全局变量与静态变量区,存放全局变量或对象(包括静态);(3)局部变量区即栈(stack)区,存放局部变量;(4)自由存储区(free store),即动态存储区或堆(heap)区。
7.1.2 静态定义的变量和对象用标识符命名,称为(1);而动态建立的称为(2),动态建立对象的初始化是通过(3)实现(4)。
答案:(1)命名对象(2)无名对象(3)初始化式(initializer)(4)显式初始化7.1.3 在用new运算符建立一个三维数组15*30*10时,使用了(1)个下标运算符,对应的用delete运算符注销这个三维数组时使用了(2)个下标运算符。
new返回的指针是指向(3)的指针。
答案:(1)3个(2)1个(3)30行10列的2位数组7.1.4 当动态分配失败,系统采用(1)来表示发生了异常。
如果new返回的指针丢失,则所分配的自由存储区空间无法收回,称为(2)。
这部分空间必须在(3)才能找回,这是因为无名对象的生命期(4)。
答案:(1)返回一个空指针(NULL)(2)内存泄漏(3)重新启动计算机后(4)并不依赖于建立它的作用域7.1.5 按语义的默认复制构造函数和默认复制赋值操作符实现的复制称为(1),假设类对象obj中有一个数据成员为指针,并为这个指针动态分配一个堆对象,如用obj1按成员语义拷贝了一个对象obj2,则obj2对应指针指向(2)。
答案:(1)浅拷贝(2)同一个堆对象7.1.6 单链表的结点包含两个域:(1)和(2)。
使用链表的最大的优点是(3),即使是动态数组也做不到这一点。
答案:(1)数据域(2)指针域(3)用多少空间,开多少空间7.1.7 进入单链表必须通过单链表的(1),如果它丢失则(2),内存也(3),在单链表中进行的查找只能是(4)。
c程序设计(谭浩强)第七章习题答案
int i;
float ave=0;
for(i=0;i<10;i++)
ave=ave+a[i][n]/10;
return ave;
}
void max(float a[][5]) //最高分的学生和课程
{
int i,j,row,colum;
float max=a[0][0];
for(i=0;i<10;i++)
# include <stdio.h>
# include<math.h>
# include<string.h>
/*int yue(int a,int b) //求最大公约数
{
int i,min;
min=a>b?b:a;
for(i=min;i>0;i--)
{
if(a%i==0&&b%i==0)
{
return i;
if((mid%2)!=1) //因职工号序号为奇数,故强制把序号转为奇数
mid-=1;
if(strcmp(b,a[mid])>0) //不能写b>a[mid]
{min=mid+2;}
else if(strcmp(b,a[mid])<0) //不能写b<a[mid]
{max=mid-2;}
else
{printf("职工姓名为:%s\n",a[mid-1]);break;}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%-2d",b[i][j]);
C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第七章 课后答案
min=0;
for(j=0;j<n;j++)
if(a[j][max]<a[min][max])min=j;
if(min==i){flag=1;break;}
}
/*根据flag值输出结果*/
if(flag==1)printf("鞍点是a[%d][%d]=%d\n",min,max,a[min][max]);
{
int i,j,n,a[6][6],max,min,flag;
printf("Enter n :"); /*输入一个正整数n */
scanf("%d",&n);
printf("Enter %d integers :\n",n); /*输入一个n阶方阵,存储在数组a中*/
for(i=0;i<n;i++)
{
int i,j,n,a[6][6],flag;
printf("Enter n :"); /*输入一个正整数n */
scanf("%d",&n);
printf("Enter %d integers :\n",n); /*输入一个n阶方阵,存储在数组a中*/
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(a[i]>a[index1])index1=i;
if(a[i]<a[index2])index2=i;
}
/*交换位置:最大值与最后一个数交换,最小值与第一个数交换*/
C语言程序设计第四版第七章答案谭浩强
C语言程序设计第四版第七章答案谭浩强第七章用函数实现模块化程序设计第七章函数7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。
ma某yuehu(m,n)intm,n;{inti=1,t;for(;i<=m&&i<=n;i++){if(m%i==0&&n%i==0)t=i;}return(t);}minbeihu(m,n)intm,n;{intj;if(m>=n)j=m;elej=n;for(;!(j%m==0&&j%n==0);j++);returnj;}main(){inta,b,ma某,min;printf("entertwonumberi:");canf("%d,%d",&a,&b);ma某=ma某yuehu(a,b);min=minbeihu(a,b);printf("ma某=%d,min=%d\n",ma某,min);}7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。
从主函数输入a、b、c的值。
#include"math.h"floatyihigen(m,n,k)floatm,n,k;{float某1,某2;某1=(-n+qrt(k))/(2某m);某2=(-n-qrt(k))/(2某m);printf("twohigeni某1=%.3fand某2=%.3f\n",某1,某2);}floatdenggen(m,n)floatm,n;{float某;某=-n/(2某m);printf("denggeni某=%.3f\n",某);}第七章用函数实现模块化程序设计float某ugen(m,n,k)floatm,n,k;{float某,y;某=-n/(2某m);y=qrt(-k)/(2某m);printf("two某ugeni某1=%.3f+%.3fiand某2=%.3f-%.3fi\n",某,y,某,y);}main(){floata,b,c,q;printf("inputabci");canf("%f,%f,%f",&a,&b,&c);printf("\n");q=b某b-4某a某c;if(q>0)yihigen(a,b,q);eleif(q==0)denggen(a,b);ele某ugen(a,b,q);}7.3写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。
程序设计基础课后答案 第七章
{
cout<<"Input wage:";
cin>>array[i].fWage;
{
if(time==1)
total+=high;
else
{
high=high/2;
total=total+2*high;
}
}
cout<<"total="<<total<<"m,high="<<high/2<<"m./n";
}
8、有四个学生,上地理课时提出我国四大淡水湖的排序如下:
甲:洞庭湖最大,洪泽湖最小,鄱阳湖第三;
乙:洪泽湖最大,洞庭湖最小,鄱阳湖第二;太湖第三;
丙:洪泽湖最小,洞庭湖第三;
丁:鄱阳湖最大,太湖最小,洪泽湖第二;洞庭湖第三;
对于各个湖泊的地位,每个人只说对了一个。根据以上情况,编一个程序,让计算机判断各个湖泊应处在第几位。
【问题分析】用变量A,B,C,D分别表示洞庭湖,洪泽湖,鄱阳湖和太湖,变量的值表示第几大。让A,B,C,D分别从1到4变化,找出满足条件的解。由于4个变量的值各不相同,所以4个变量的和为10,积为24,为减少循环次数,用3个变量的值,即可确定第四个变量的值。根据题目中甲、乙、丙、丁4个学生所说的话,可以总结出下列关系式:
{
int A[40];
int pos=0;
int key=0; //数组初始化
for(int i=0;i<40;i++)
C语言第七章习题带答案
选择题1.已知:int *p, a;,则语句“p=&a;”中的运算符“&”的含义是( D )。
A.位与运算B.逻辑与运算C.取指针内容D.取变量地址2.已知:int a, x;,则正确的赋值语句是( C )。
A.a=(a[1]+a[2])/2; B.a*=*a+1; C.a=(x=1, x++, x+2); D.a="good"; 3.已知:int a, *p=&a;,则下列函数调用中错误的是( D )。
A.scanf("%d", &a); B.scanf("%d", p); C.printf("%d", a); D.scanf("%d", *p); 4.已知:char *p, *q;,选择正确的语句( C )。
A.p*=3; B.p/=q; C.p+=3; D.p+=q;5.已知:int x;,则下面的说明指针变量pb的语句( C )是正确的。
A.int pb=&x; B.int *pb=x; C.int *pb=&x; D.*pb=*x;一、选择题1.设有说明int (*ptr)[M];,其中的标识符ptr是( C )。
A.M个指向整型变量的指针B.指向M个整型变量的函数指针C.一个指向具有M列的二维数组的一行的指针D.具有M个指针元素的一维数组的指针2.已知:double *p[6];,它的含义是( C )。
A.p是指向double型变量的指针B.p是double型数组C.p是指针数组D.p是数组指针3.已知:char s[10], *p=s,则在下列语句中,错误的语句是( B )。
A.p=s+5; B.s=p+s; C.s[2]=p[4]; D.*p=s[0];4.已知:char s[100]; int i;,则在下列引用数组元素的语句中,错误的表示形式是( D )。
c语言程序设计课后习题答案第7章
#include<stdio.h>main(){int a[10],n,sum=0,i;float ave;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++){scanf("%d",&a[i]);sum=sum+a[i];}ave=1.0*sum/n;printf("ave=%.2f\n",ave);}/*练习7-2*/#include<stdio.h>main(){int a[10],n,i;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++){printf("第%d个:\n",i+1);scanf("%d",&a[i]);printf("倒序:\n");while(a[i]!=0){printf("%d",a[i]%10);a[i]=a[i]/10;}printf("\n");}}#include<stdio.h>main(){int a[5],x,i,k=0;printf("enter 5 ge zheng shu:\n");for(i=0;i<5;i++)scanf("%d",&a[i]);printf("enter x:\n");scanf("%d",&x);for(i=0;i<5;i++)if(a[i]==x){printf("xia biao wei : %d\n",i);k=1;}if(k==0)printf("Not Found\n");}/*练习7-4*/#include<stdio.h>main(){int a[10],n,i,k=0,x,max;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);max=a[0];for(i=1;i<=n-1;i++)if(max<a[i]){max=a[i];k=i;}printf("max=%d xia biao=%d",max,k);x=a[n-1];a[n-1]=a[k];a[k]=x;printf("\n");for(i=0;i<n;i++)printf(" %d ",a[i]);printf("\n");}/*练习7-11*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;str[i]='\0';printf("再输入一个字符:\n");str[80]=getchar();for(j=0;j<=i-1;j++)if(str[80]==str[j])count++;printf("%c字符在字符串中出现的次数为:%d\n",str[80],count);for(j=0;j<=i-1;j++)putchar(str[j]);printf("\n");}/*习题七1*/#include<stdio.h>main(){int x,y,n,a[10],i,min,max;printf("输入n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);min=0;for(i=1;i<n;i++)if(a[min]>a[i])min=i;max=0;for(i=1;i<n;i++)if(a[max]<a[i])max=i;x=a[min];a[min]=a[0];a[0]=x;y=a[max];a[max]=a[n-1];a[n-1]=y;for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n");}/*习题七2*/#include<stdio.h>main(){int x,n,a[10],i,j,max;printf("输入n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=1;i<n;i++){ max=i-1;for(j=i;j<n;j++)if(a[max]<a[j])max=j;x=a[max];a[max]=a[i-1];a[i-1]=x;}for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n");}/*习题七4*/#include<stdio.h>main(){int m,n,a[6][6],i,j,b[6]={0};printf("输入m:\n");scanf("%d",&m);printf("输入n:\n");scanf("%d",&n);printf("输入%d和%d的矩阵:\n",m,n);for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);b[i]=b[i]+a[i][j];}}printf("shu chu:\n");for(i=0;i<m;i++){for(j=0;j<n;j++)printf(" %d",a[i][j]);printf("\n");}printf("shu chu hang he :\n");for(i=0;i<m;i++)printf("%4d",b[i]);printf("\n");}/*习题7.6*/#include<stdio.h>main(){char str[80];int i,j;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("倒序输出:\n");for(j=i-1;j>=0;j--)putchar(str[j]);printf("\n");}/*新7.6*/#include<stdio.h>main(){int a[10],i,n;printf("输入整数n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++){scanf("%d",&a[i]);}printf("倒序输出:\n");for(i=0;i<n;i++){printf("%5d",a[n-1-i]);}printf("\n");}/*习题7.7*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("输出其中的大写辅音字母:\n");for(j=0;j<=i-1;j++)if(str[j]>='B'&&str[j]<='Z'&&str[j]!='E'&&str[j]!='I'&&str[j]!='O'&&str[j]!='U'){putchar(str[j]);count++;}printf("\n");printf("大写辅音字母数量为:%d\n",count);}/*习题7.8*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("输出相应交换后的字符串:\n");for(j=0;j<=i-1;j++)if(str[j]>='A'&&str[j]<='Z')str[j]=155-str[j];for(j=0;j<=i-1;j++)putchar(str[j]);printf("\n");}上文已完。
【免费下载】c语言程序设计课后习题答案 第7章
/*习题七 2*/ #include<stdio.h> main() {
int x,n,a[10],i,j,max; printf("输入 n:\n"); scanf("%d",&n); printf("输入%d 个整数:\n",n); for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf(" %d ",a[i]); printf("\n"); }
/*练习 7-11*/ #include<stdio.h> main() {
char str[80]; int i,j,count=0; printf("输入一个以回车符结束的字符串:\n"); i=0; while((str[i]=getchar())!='\n')
putchar(str[j]); printf("\n");
}
/*习题七 1*/ #include<stdio.h> main() {
int x,y,n,a[10],i,min,max; printf("输入 n:\n"); scanf("%d",&n); printf("输入%d 个整数:\n",n); for(i=0;i<n;i++)
i++; str[i]='\0'; printf("再输入一个(); for(j=0;j<=i-1;j++)
if(str[80]==str[j]) count++;
C程序设计第1-7章部分习题参考答案
课后习题解答(第1-7章)第一章1_1.1_1_2判断正误:即使两个整型数据未超出该数据的取值范围,它们的和也可能会超出该数据取值范围。
正确。
1_1_4判断正误:一个C程序可以有多个函数,其中主函数必须在程序的最开头。
错误。
其它函数如果要在主函数中使用的话,必须先在主函数之前定义或者声明。
1_1_6判断正误:若有定义“float x=1.3;”,则表达式(int)x的值为1,因此可以说x中存放的值就是1。
错误。
(int)x表达式的值与x的值是不一样的,前者是对x取整后的数值,而取整运算对x 自身的值不会产生影响。
1_1_8判断正误:若有命令行“#define N 1000”,则N++是不合法的表达式。
正确。
N为符号常量,不能对符号常量进行修改。
1_1_10 C程序是由函数构成的,一个C程序必须有一个主函数。
1_1_12以下变量中不合法的是②、④、⑥,合法的是①、③、⑤、⑦、⑧。
①name ②double ③Int ④if ⑤for_1 ⑥2k ⑦a12345678 ⑧_a1_1_14下面程序段的输出结果是1,1.000000int a; double b;a=b=123/100%2;printf("%d,%f", a, b);1_1_16 a*a*a*b*b/(c-d)1_1_20假设圆柱体的底面半径为r(=2.5),高为h(=3.5),请按下面给定的步骤编写求体积(体积=底面积X高)的程序。
①定义变量r,h,v(存放体积值),注意变量的数据类型。
②给变量r,h赋值。
③计算体积,并将结果存放在v中。
④输出r,h,v的值。
程序如下:#include <stdio.h>#define PI 3.1415926main(){float r, h, v;r=2.5;h=3.5;v=PI*r*r*h;printf("r=%f, h=%f, v=%f\n", r, h, v);}1_1_22编写输出以下图形的程序。
《C语言程序设计教程》(第三版)李凤霞 主编——第七章习题答案
习题七一、单项选择题1、以下程序的输出结果是()。
main(){int i,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i; /*a: 0 1 2 3 4 5 6 7 8 9 */for(i=0;i<3;i++)p[i]=a[i*(i+1)]; /*p:0 2 6 */for(i=0;i<3;i++)k+=p[i]*2; /* k=5+4+12=21 */printf(“%d\n”,k);}A)20 B)21 C)22 D)232、以下正确的数组定义语句是()。
A)int y[1][4]={1,2,3,4,5}; B)float x[3][ ]={{1},{2},{3}}; C)long s[2][3]={{1},{1,2},{1,2,3}}; D)double t[ ][3]={0};3、以下程序段的输出结果是()。
main(){int m[3][3]={{1},{2},{3}}; m 1 0 0 n 1 2 3int n[3][3]={1,2,3}; 2 0 0 0 0 0printf(“%d\n”,m[1][0]+n[0][0]); 3 0 0 0 0 0printf(“%d\n”,m[0][1]+n[1][0]);}A)0 B)2 C)3 D)10 3 0 24、以下程序的输出结果是()。
main(){int i,x[3][3]={1,2,3,4,5,6,7,8,9}; 1 2 3for(i=0;i<3;i++)printf(“%d,”x[i][2-i]); 4 5 6} 7 8 9A)1,5,9 B)1,4,7 C)3,5,7 D)3,6,95、对以下程序从第一列开始输入数据:2473↙,程序的输出结果是()。
#include “stdio.h”main(){char c;while((c=getchar())!=’\n’){switch (c-‘2’){case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);default:putchar(c+2);}}}A)668977 B}668966 C}66778777 D)66887666、不能正确为字符数组输入数据的是( )。
C语言程序设计(第2版)-- 课后题答案
《C语言程序设计能力教程(第二版)》课后作业及实训题参考答案第1章进入C语言程序世界二、1. I love China!printf("we are students.\n")2. 6项目实训题参考答案1.编写一个C程序,输出以下信息:* * * * * * * * * * * * * * * * * * * *I am a student!* * * * * * * * * * * * * * * * * * * *main(){ printf("********************\n");printf(" I am a student!\n ");printf("********************\n");}2.已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。
解:main(){int a,b,c,v;a=10;b=20;c=15;v=a*b*c;printf("v=%d",v);}本程序运行结果为:v=3000第2章编制C程序的基础知识一选择题C B A B A C C二操作题,2,-8,23.000000,2.500000,-8.0000002. ABC DEFGHwhy is 21+35 equal 523.3 14 32 31 24. aa bb cc abcA N项目实训题1.定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。
#define M 5main(){ int n,c;n=2; c=M*n;printf("%d\n",c); }2.编程求下面算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7;(2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5。
《C语言程序设计》课后习题答案第四版谭浩强
第1章程序设计和C语言 1 1.1什么是计算机程序 1 1.2什么是计算机语言 1 1.3C语言的发展及其特点 3 1.4最简单的C语言程序 51.5运行C程序的步骤与方法1 2 1.6程序设计的任务14 1-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.3C语句573.4数据的输入输出65习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。
C语言程序设计》课后习题详细答案
《全国计算机等级考试二级教程——C语言程序设计》习题分析与详细解答第一章程序设计基本概念习题分析与解答1.1 【参考答案】EXE1.2 【参考答案】[1].C [2].OBJ [3].EXE1.3 【参考答案】[1]顺序结构[2]选择结构[3]循环结构第二章C程序设计的初步知识习题分析与解答一、选择题2.1 【参考答案】B)2.2 【参考答案】D)2.3 【参考答案】B)2.4 【参考答案】A)2.5 【参考答案】C)2.6 【参考答案】A)2.7 【参考答案】B)2.8 【参考答案】B)2.9 【参考答案】D)2.10 【参考答案】C)2.11 【参考答案】B)2.12 【参考答案】B)2.13 【参考答案】A)二、填空题2.14 【参考答案】[1]11 [2]122.15 【参考答案】[1]4.2 [2]4.22.16 【参考答案】[1]{ [2]} [3]定义[4]执行2.17 【参考答案】[1]关键字[2]用户标识符2.18 【参考答案】[1]int [2]float [3]double2.19 【参考答案】float a1=1.0, a2=1.0;或float a1=1, a2=1;(系统将自动把1转换为1.0)2.20 【参考答案】存储单元2.21 【参考答案】 3.52.22 【参考答案】[1]a*b/c [2]a/c*b [3]b/c*a2.23 【参考答案】把10赋给变量s2.24 【参考答案】[1]位[2]1位二进制数据(0或1)2.25 【参考答案】[1]8 [2]127 [3]01111111 [4]-128 [ 5 ] 10000000 2.26 【参考答案】[1]32767 [2]-32768 [3]10000000000000002.27 【参考答案】[1]十[2]八[3]十六三、上机改错题2.28 【分析与解答】第1行的错误:(1) include是一个程序行,因此在此行的最后不应当有分号(;)。
C++程序设计基础课后答案 第七章
7.1 阅读下列程序,写出执行结果1. #include <iostream.h>class Base{ public:void get( int i,int j,int k,int l ){ a = i; b = j; x = k; y = l; }void print(){ cout << "a = "<< a << '\t' << "b = " << b << '\t' << "x = " << x << '\t' << "y = " << y << endl; }int a,b;protected:int x, y;};class A: public Base{ public:void get( int i, int j, int k, int l ){ Base obj3;obj3.get( 50, 60, 70, 80 );obj3.print();a = i;b = j; x = k; y = l;u = a + b + obj3.a ; v = y - x + obj3.b;}void print(){ cout << "a = " << a << '\t' << "b = " << b << '\t'<< "x = " << x << '\t' << "y = " << y << endl;cout << "u = " << u << '\t' << "v = " << v << endl;}private:int u, v ;};void main(){ Base obj1;A obj2;obj1.get( 10, 20, 30, 40 );obj2.get( 30, 40, 50, 60 );obj1.print();obj2.print();}2. #include <iostream.h>class Base1{ public:Base1( int i ) { cout << "调用基类Base1的构造函数:" << i << endl ; } };class Base2{ public:Base2( int j ) { cout << "调用基类Base2的构造函数:" << j << endl ; }};class A: public Base1, public Base2{ public:A( int a, int b, int c, int d ) : Base2(b), Base1(c), b2(a), b1(d) { cout << "调用派生类A的构造函数:" << a+b+c+d << endl; }private:Base1 b1;Base2 b2;} ;void main(){ A obj( 1, 2, 3, 4 ); }3. #include <iostream.h>class A{ public:A(int i, int j) {a=i; b=j ;}void Add(int x, int y) { a+=x; b+=y;}void show() { cout<<"("<<a<<")\t("<<b<<")\n"; }private:int a, b;};class B : public A{ public:B(int i, int j, int m, int n):A(i,j),x(m),y(n){}void show() { cout<<"("<<x<<")\t("<<y<<")\n"; } void fun() { Add(3,5); }void ff() { A::show(); }private:int x, y ;};void main(){ A a(1,2);a.show();B b(3,4,5,6);b.fun();b.A::show();b.show();b.ff();}4. #include<iostream.h>class A{ public:A(const char *s){cout<<s<<endl;}~A(){}};class B : virtual public A{ public:B(const char *s1, const char *s2):A(s1){ cout << s2 << endl ; }};class C : virtual public A{ public:C(const char *s1, const char *s2):A(s1){ cout << s2 << endl ; }};class D : public B, public C{ public:D(const char *s1,const char *s2,const char *s3,const char *s4): B(s1,s2),C(s1,s3),A(s1){ cout << s4 << endl ; }};void main(){ D *ptr = new D("class A","class B","class C","class D");delete ptr;}7.2 思考题1.函数和类两种程序模块都可以实现软件重用,它们之间有什么区别?2.请按照类成员的访问特性、类层次的继承特点,做出一张表格,总结各种类成员在基类、派生类中的可见性和作用域。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C程序设计(第三版)谭浩强著课后习题答案第7章
2009-05-16 10:56
7.7 打印“魔方阵”。
所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之
和均相等。
例如,三阶魔方阵为
8 1 6
3 5 7
4 9 2
要求打印出由1 到n2 的自然数构成的魔方阵。
/******************************************************************** **算法思路:魔方阵中各数的排列规律如下:
**(1)将1放在第一行中间一列
**(2)从2开始直到n×n止各数依次按下列规则存放:每一个数存放的行比前一个数的** 行数减1,列数加1
**(3)如果上一个数的行数为1,则下一个数的行数为n(指最下一行)
**(4)当上一个数的列数为n时,下一个数的列数应为1,行数减1
**(5)如果按上面的规则确定的位置数已有数,或者上一个数是第1行第n列时,则把
** 下一个数放在上一个数的下面
********************************************************************/ #include <stdio.h>
void main(){
int a[16][16],i,j,k,p,m,n;
/*初始化*/
p=1;
while(p==1){
printf("input n.(0<n<=15,n是奇数.)\n");
scanf("%d",&n);
if((n != 0) && (n<=15) && (n%2 != 0))
{
printf("矩阵阶数是%d\n",n);
p=0;
}
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) a[i][j]=0;
/*建立魔方*/
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++)
{
i=i-1;
j=j+1;
if((i<1)&&(j>n)){
i=i+2;
j=j-1;
}
else{
if(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
/*输出*/
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
7.8 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。
也可能没有鞍点。
#include <stdio.h>
#define N 10
#define M 10
void main(){
int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj;
printf("\ninput row n:");
scanf("%d",&n);
printf("\ninput column m:");
scanf("%d",&m);
for(i=0;i<n;i++){
printf("第%d行?\n",i);
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<n;i++){
for(j=0;j<m;j++)
printf("%5d",a[i][j]);
printf("\n");
}
flag2=0;
for(i=0;i<n;i++){
max=a[i][0];
for(j=0;j<m;j++)
if(a[i][j]>max)
{
max=a[i][j];
maxj=j;
}
for(k=0,flag1=1;k<n && flag1;k++)
if(max>a[k][maxj]) flag1=0;
if(flag1){
printf("\n第%d行,第%d列的%d是鞍点\n",i,maxj,max);
flag2=1;
}
}
if(!flag2)
printf("\n矩阵中无鞍点!\n");
}
7.9 有15 个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。
如果该数不在数组中,则打印出“无此数”。
#include <stdio.h>
#define N 15
void main()
{
int x,top,bot,middle,succ;
int a[N]={1,3,5,7,9,11,12,35,46,57,68,79,80,91,102};
printf("Enter x:");
scanf("%d",&x);
succ=0;
top=0;bot=N-1;
if((x<a[0])||(x>a[N-1])) succ=-1;
while((succ==0)&&(top<=bot))
{
middle=(bot+top)/2;
if(x==a[middle])
{
succ=middle;
printf("%d location:%d\n",x,succ+1);
}
else if(x<a[middle]) bot=middle-1;
else top=middle+1;
}
if(succ==0||succ==-1)
printf("%d not in array.\n",x);
}
7.10 有一篇文章,共有3 行文字,每行有80 个字符。
要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
#include <stdio.h>
void main()
{ int i,j,upper,lower,digit,space,other;
char article[3][80];
i=j=upper=lower=digit=space=other=0;
for(i=0;i<3;i++)
{ printf("Input %d row:\n",i);
gets(article[i]);
for(j=0;j<80&&article[i][j]!='\0';j++)
{ if(article[i][j]>='A'&&article[i][j]<='Z')
upper++;
else if(article[i][j]>='a'&&article[i][j]<='z')
lower++;
else if(article[i][j]>='0'&&article[i][j]<='9')
digit++;
else if(article[i][j]==' ') space++;
else other++;
}
}
for(i=0;i<3;i++) puts(article[i]);
printf("upper=%d\n",upper);
printf("lower=%d\n",lower);
printf("digit=%d\n",digit);
printf("space=%d\n",space);
printf("other=%d\n",other);
}
7.11 打印以下图案:
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
#include <stdio.h>(可不写)
void main()
{
char a[6]="*****";
char space=' ';
int i,j,k;
for(i=0;i<5;i++)
{
for(j=0;j<i;j++)
printf("%c",space);
for(k=0;k<5;k++)
printf("%c",a[k]);
printf("\n");
}
}。