C语言程序设计实验五答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.程序验证与改错题
(1)程序验证题
下面程序执行的结果是什么
void s x, int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
void main()
{
int a,b;
scanf(“%d%d”, &a,&b);
if(a>b)
swap(a, b);
printf(“%d\t %d”, a,b);
}
编程题4
编程输出2到10000之间的所有完数。所谓完数是指因子之和与它本身相等的数。如6=1+2+3,6是一个完数。
要求:定义函数factor(m)判断m是否为完数;由主函数调用它,来对所有2到10000之间的所有数进行判断。
#include <stdio.h>
#include <math.h>
int factor(int m)
# include <stdio.h>
# include <stdlib.h>
void main ()
{
int num;
char str[30];
gets(str);
num = atoi(str);
printf("num to int:%d\n",num);
}
编程题3定义两个带参数的宏,将两个参数的值相加和相减,并写出程序,输入两个数作为使用宏时的实参。输出相加和相减后的和与差。
char temp;
int result=0;
temp=getchar();
while(temp!='\n')
{
result*=10;
result+=((int)temp-48);
temp=getchar();
}
printf("%c\n",temp);
printf("%d\n",result);
}
2解(使用stdlib库函数中的atoi ()函数)
{
int a,b=0;
char c;
while((c=getchar())!='\n')
{
a=f(c);
b=b*10+a;
}
printf("%d\n",b);
printf("%d+%d=%d\n",b,b,b+b);
printf("\n");
}
编程题2编写程序求:1*1*1+2*2*2+3*3*3+4*4*4+5*5*5
unsigned f(unsigned num)
{
unsigned k=0;
do
{
k*=num/10;
num/=10;
}while(k);
return k;
}
void main()
{
int x;
printf(“input x=:\n”);
scanf(“%d”, x);
printf(“%d”, f(x));
{
int m=0,i;
for (i=1;i<=n;i++)
{
if(i%2==1)
m+=i;
else
m-=i;
}
return m;
}
void main()
{
printf("m=%d\n",fun(10));
}
(2)程序改错题
下列程序的功能是利用自定义函数计算一无符号的整数各位数字的乘积。
#include<stdio.h>
}
答:
#include<stdio.h>
unsigned f(unsigned num)
{
unsignedk=1;
do
{
k*=num%10;
num/=10;
}while(num!=0);
return k;
}Hale Waihona Puke Baidu
void main()
{
int x;
printf("input x=:\n");
scanf("%d",&x);
printf("%d", f(x));
}
2.
编程题1编写一函数,把输入的4个数字字符转换成一个int数据存放,如输入4123这字符转换为4123这个整数,并通过主函数验证结果。
答:
#include<stdio.h>
int f(char c)
{
int a;
a=int(c)-48;
return a;
}
void main()
{
int i,s=0;
……
}
void main()
{
int i,m,sum;
……
}
答:
#include <stdio.h>
{
int m, i;
for (i=1; i<=n; i++)
{
m+=i;
}
return m;
}
void main()
{
printf("m=%d\n", fun(10));
}
在上面程序的基础上,修改程序.计算m=1-2+3-4+…+9-10。
答:
#include<stdio.h>
int fun(int n)
提示:主函数用来现实结果,f1( )函数用来求一个数的立方,f2( )函数用来求和。
#include <stdio.h>
int f1(int n)
{
……
}
int f2(int m)
{
……
}
void main()
{
……
}
答:
1解(使用库函数)
#include<stdio.h>
void main()
{
int i=4;
答:
#include <stdio.h>
#define P(m,n) m+n;
#define Q(m,n) m-n;
void main()
{
int m,n,p,q;
scanf("%d %d",&m,&n);
p=P(m,n);
q=Q(m,n);
printf("%d=%d+%d\n",p,m,n);
printf("%d=%d-%d\n",q,m,n);
}
思考:为什么a,b的值没有交换?
答:
修改后的函数为
#include<stdio.h>
void s&x, int&y)
{
int temp;
temp=x;
x=y;
y=temp;
}
void main()
{
int a,b;
scanf("%d%d",&a,&b);
s);//if语句被去掉//
printf("%d\t %d\n", a,b);
}
因为调用函数中改变的是形参而非实参,加上&,其意义是改变实参的地址。
If语句中,只有当a>b时才交换a,b的值去掉后在任何情况下都交换a,b的值
调用函数fun计算:m=1+2+3+4+…+9+10,并输出结果。请验证下面的程序是否符合题目要求。
#include”stdio.h”
int fun(int n)
5.4实验五函数与预处理
一、实验目的与要求
1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。
2.理解函数实参与形参的对应关系以及“值传递”的方式。
3.掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。
4.掌握动态存储分配的方法。
5.掌握宏定义和文件包含处理方法。
6.实验4学时
二、实验内容
相关文档
最新文档