当前位置:首页 > 《C语言》答案
四、 看程序写结果 6.24
int fun(int n) {int f=1; f = f*n*2; return(f); }
main() { int i,j;
for(i=1; i<=5; i++)
printf(\}
程序运行结果:2 4 6 8 10 6.25
int x1=30, x2=40; main()
{int x3=10,x4=20; sub(x3,x4); sub(x2,x1);
printf(\}
sub(int x,int y) {int x1=x; x=y; y=x1; }
程序运行结果:x1=30,x2=40,x3=10,x4=20 6.26
#define A 4
#define B(x) A*x/2 main()
{float c, a = 4.5; c=B(a);
printf(\}
程序运行结果:c= 9.0 五、 编程题 6.25写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。
提示:最大公约数可以采用?辗转相除法?,最小公倍数将两数乘积除于最大公约数。?辗转相除法?:设两个数分别用m,n表示且m>n,临时变量t,t=m%n;m=n;n=t;直到n等于0。
6.26有3?3的矩阵A和3?2的矩阵B,编制一个函数,求C=AX?B。 提示:参照习题5.17,A,B,C三个数组作为函数参数。
12
6.27编写一函数,使输入的一个字符串按反序存放,在主函数中输入输出字符串。
提示:一维字符数组用来存放字符串,并且将它传递到函数,在函数中通过元素值交换来完成反序存放。
6.28编制一个函数,由参数传入一个字符串,统计此字串中字母、数字、和其他字符的个数,在主函数中输入字符串并显示统计结果。
提示:参照例题6.10。
6.29 定义一个宏,实现将两个数互换,并写出程序,输入两个数作为使用参数,并显示结果。
提示:带参数宏,swap(a,b,t).... 6.30编写以下函数:①输入职工的姓名和职工号;②按职工号由小到大排序,姓名顺序也随之调整;③输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。
提示:定义一个二维数组来存放职工信息;用数组名作函数的参数传递;通过?起泡算法?或?选择算法?;折半查找法先决条件是数据已经有序。
13
【习题7】
1.1 语句int a,*p=&a;的含义是什么?
答:定义整型变量a,和整型指针变量p,并且p指向变量a。 1.2 写出下列数组元素的指针法表示。 (1)num[3] (2) data[4][2] 答:(1)*(num+3) (2) *(*(data+4)+2) 1.3 写出下列数组元素的下标法表示。
(1) *(*(a+1)+2) (2) (*(a+3))[4] (3) *(a[2]+5) 答:(1)a[1][2] (2) a[3][4] (3) a[2][5] 1.4 分析程序,写出程序输出结果。
(1) main()
{ int a[5]={1,2,3,4,5}; int *p=&a[1];
printf(\ }
输出结果:4 (2) main()
{ char a[]=\ char *p=a; p=p+2;
printf(\ }
输出结果:love China! (3) main()
{ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*pa)[4]=a; pa++;
printf(\}
输出结果:11 (4) main()
{ char *str[]={\ int i;
for (i=0;i<4;i++)
printf(\ }
输出结果:zqsl
(5) void sub(int x,int y,int *z) { *z=y-x; } main() {
int a,b,c;
sub(10,5,&a); sub(7,a,&b);
14
sub(a,b,&c);
printf(\ }
输出结果: -5, -12, -7 (6) #include
while (*p) p++; return(p-s); }
main()
{ char *str=\ int i;
i=fun(str);
printf(\}
输出结果:4
1.5 定义语句int *f(); 和int (*f)();的含义分别是什么?
答:int *f();表示函数返回一个整型指针;int (*f)();表示f是函数指针,指向整型函数。
1.6 在二维数组中存放有4个学生,5门课程的成绩,用指针编程实现:
(1)求出每门课程的平均成绩。
(2)求每个学生的总成绩和平均成绩。
(3)在屏幕上列出各课成绩在85分以上的学生名单。 (4)在屏幕上列出补考通知单。 提示:(1)(2)(3)略,(4)根据成绩小于60分,由于有5门课程的成绩,所以需要使用else if结构。
1.7 输入一个字符串,内有数字和非数字字符,例如:
a345dsaf412 x?371+89tah74
编程将其中连续的数字作为一个证书,一次存放到一个数组d中,例如:345放在d[0],412放在d[1],......。统计共有多少个证书,并输出这些整数。 提示:从字符串中提取\:t=ch-'0';t=t*10+(ch-'0');t=t*10+(ch-'0');
t='3'-'0'=3;t=3*10+('4'-'0')=34;t=34*10+('5'-'0')=345
1.8 编写把十六进制数字字符串变换成整数的函数: int htoi(char *s)。
提示:同1.7
1.9 编写把十进制整数变换成二进制数字字符串的函数: char *itob(int n)。
提示:同1.7
1.10 用字符指针实现字符串拷贝功能,不能使用库函数。
提示:定义两个字符数组a,b,复制操作b[i]=a[i]; 1.11 用字符指针实现字符串连接功能,不能使用库函数。
提示:定义两个字符数组a,b,先将下标定位到a的末尾'\\0',在将b的元素赋值给a的对应元素,注意:别忘了添加字符串结束标志'\\0'。 1.12 用指向指针的指针的方法对5个字符串排序并输出。
15
共分享92篇相关文档