C语言程序设计实验与习题答案
更新时间:2024-03-14 12:32:01 阅读量: 综合文库 文档下载
2.程序填空
(1)以下程序的功能是计算1~50之间能被7整除的整数之和。
#include
{int i,sum= 0 ;
for(i=1; 50 ;i++)
if( i%7==0 ) sum+=i;
printf(\
}
(2) 下面程序接收来自键盘的输入,直到输入
#include
{char cx;
char front=’ ’;
while ( (cx=getchar())!=’\\n’ ) {if (cx!=’ ’)
putchar(cx); if (cx= =’ ’)
if (front!=’ ’) putchar(cx);
front=cx;
}
}
3.程序改错
(1)下列程序的功能是求1+3+5+?99的和。 #include
void main( )
{ int s,i; ★ //int s=0,i;
i=1;
while(i<=99) s=s+i; ★ //{s=s+i;i++;} printf(\?99的和是:%d\\n\
}
(2)下面程序的功能是输入一个正整数,判断是否是素数,若为素数输出1,否则输出0。
#include
{ int i,x,y=0; ★ //y=1
scanf(\
for(i=2;i<=x/2&&y;i++)
if ((x%i)!=0) y=0; ★ //x%i==0
printf(\ }
4.设计性实验
(1)题
/* 方法(1)精度控制 */ #include
float n,t,pi;
t=1; pi=0; n=1.0; s=1; while((fabs(t))>=1e-6) { pi=pi+t; n=n+2; s=-s; t=s/n; }
pi=pi*4;
printf(\}
/* 方法(2)次数控制*/ #include
long times; float n,t,pi;
t=1; pi=0; n=1.0; s=1;
for(times=1;times<=1e9;times++) { pi=pi+t; n=n+2; s=-s; t=s/n; }
pi=pi*4;
printf(\}
(2)题
main() {
int i,j,frame;
double wheattal=0; double wheatfnu=1;
printf(\ scanf(\ for(i=0;i
wheattal+=wheatfnu; wheatfnu+=wheatfnu;
}
printf(\n Total wheattatol’s timeter=%e\\n\} (3)题
/*方法一:使用递推公式n=n+2*/
main() {
int i,n=1; double s=0,t=1; for(i=1;i<=20;i++) {
t*=n; s+=t; n+=2; }
printf(\ getch(); }
/*方法二:使用通项公式2*i+1*/ main() {
int i;
double s=0,t=1; for(i=1;i<=20;i++) {
t*=2*i+1; s+=t; }
printf(\ getch(); }
/*方法三*/
#include \main() {
long total,sum,m,n,t; total=0;
for(m=1;m<=20;m++) {
sum=1;t=1;
for(n=1;n<=m;n++) { sum=sum*t; t=t+2;} total=total+sum; }
printf(\}
2.程序填空
(1)以下程序的功能是计算1~50之间能被7整除的整数之和。
#include
{int i,sum= 0 ;
for(i=1; 50 ;i++)
if( i%7==0 ) sum+=i;
printf(\
}
(2) 下面程序接收来自键盘的输入,直到输入
#include
{char cx;
char front=’ ’;
while ( (cx=getchar())!=’\\n’ ) {if (cx!=’ ’)
putchar(cx); if (cx= =’ ’)
if (front!=’ ’) putchar(cx);
front=cx;
}
}
3.程序改错
(1)下列程序的功能是求1+3+5+?99的和。 #include
{ int s,i; ★ //int s=0,i;
i=1;
while(i<=99) s=s+i; ★ //{s=s+i;i++;} printf(\?99的和是:%d\\n\
}
(2)下面程序的功能是输入一个正整数,判断是否是素数,若为素数输出1,否则输出0。
#include
{ int i,x,y=0; ★ //y=1
scanf(\
for(i=2;i<=x/2&&y;i++)
if ((x%i)!=0) y=0; ★ //x%i==0
printf(\ }
4.设计性实验
(1)题
/* 方法(1)精度控制 */ #include
float n,t,pi;
t=1; pi=0; n=1.0; s=1; while((fabs(t))>=1e-6) { pi=pi+t; n=n+2; s=-s; t=s/n; }
pi=pi*4;
printf(\}
/* 方法(2)次数控制*/ #include
long times; float n,t,pi;
t=1; pi=0; n=1.0; s=1;
for(times=1;times<=1e9;times++) { pi=pi+t; n=n+2;
s=-s; t=s/n; }
pi=pi*4;
printf(\}
(2)题
main() {
int i,j,frame;
double wheattal=0; double wheatfnu=1;
printf(\ scanf(\ for(i=0;i
wheattal+=wheatfnu; wheatfnu+=wheatfnu; }
printf(\n Total wheattatol’s timeter=%e\\n\} (3)题
/*方法一:使用递推公式n=n+2*/
main() {
int i,n=1; double s=0,t=1; for(i=1;i<=20;i++) {
t*=n; s+=t; n+=2; }
printf(\
getch(); }
/*方法二:使用通项公式2*i+1*/ main() {
int i;
double s=0,t=1; for(i=1;i<=20;i++) {
t*=2*i+1; s+=t; }
printf(\ getch(); } /*方法三*/
#include \main() {
long total,sum,m,n,t; total=0;
for(m=1;m<=20;m++) {
sum=1;t=1;
for(n=1;n<=m;n++) { sum=sum*t; t=t+2;} total=total+sum; }
printf(\}
2.程序填空
(1)求任意两个整数之间所有的素数。
#include
{int i1,i2,i,j,flag;
printf(\
scanf(\ &i1 , &i2 ); printf(\
for(i= i1 ;i<= i2 ;i++)
{
flag=1;
for(j=2;j<=i-1;j++) {
if(i%j==0) {
flag= 0 ;
break; } }
if(flag==1)printf(\ }
printf(\
}
(2)以下程序的功能是输出下三角九九乘法表。
#include
for(i=1;i<= 9 ;i++) { for(j=1;j<= i ;j++)
printf(\ i*j );
printf(\ }
}
if(m%i!=0) ★ //if(m%i==0)
{ k=0;break;}
if(k==1)
{printf(\ }
printf(\
}
(2)下面程序是求表达式1-1/2+1/3-1/4+1/5-??-1/100的值,结果保留小数后4位。
#include
i=0; ★ //i=1; s=1; ★ //s=0;
while(i<100) { if(i%2==0)
s=s-1/i; ★ //s=s-1.0/i;
else
s=s+1/i; ★ //s=s+1.0/i
i=i+1;
}
printf(\?-1/100=.3f\\n\ }
4.设计性实验
(1)编程输出以下图形。
#include
int i,j,k; for(i=1;i<=6;i++) {
for(k=1;k<=20-(2*i-1)/2;k++) printf(\ for(j=1;j<=2*i-1;j++) printf(\ printf(\ } }
(2)编写一个程序输出所有5位数字的回文。
方法一:
#include
long x,a,t; //x:原5位整数,a:用来暂存x,t:把a反序后的数 int i,num=0; //i:表示原5位数的某一位,num:回文数的个数 for(x=10000;x<=99999;x++) //每次取出1个5位整数 {
a=x; //把取出的5位整数保存到a t=0; //t用来存放反序后的数 while(a>0)
{ i=a; //取出当前数的最后一位到i t=t*10+i; //把取出的i组装到t a=a/10; }
if(x==t) //原来的5位整数等于反序后的数t {printf(\num++;}
if(num==0) printf(\//每行输出10个数 } } 方法二:
/*求5位整数中所有回文*/ #include
long int n,m,t=0;
for(n=10000;n<=99999;n++) {
if(hw(n)==1)
{ printf(\ t++;
if(t%5==0) printf(\/*每行输出5个数*/ } } }
int hw(long int a) /*hw函数测试a是否是回文*/ {
long int m,r=0; m=a; while(m) {
r=r*10+m; m/=10; }
if(a==r)
return 1; /*是回文返回1 */ else
return 0; /*是回文返回0 */ }
(3)编程计算e=1+1/1!+1/2!+1/3!+ ? +1/n!。精度为1e-6(即最后一项1/n!<1e-6就停止循环)。
提示:注意1/n!=1/(n-1)!*1/n;利用循环加上每一次的分项。
#include
{ long i;
double e,t;
e=1.0;
t=1.0;
for(i=1;t>1e-6;i++)
{t/=(double)i; e+=t; }
printf(\
} 2. ⑴
①a[10]=x; ②break; ③a[k]=x;
附:算法简析
main() {
int x,i,j,k;/*感觉似乎j定义了没什么作用*/
int a[11]={8,18,28,38,48,58,68,78,88,98};
printf(\请输入需要插入的一个整数:\
scanf(\
a[10]=x;/*把x放到数据串最末位置*/
for(i=0;i<10;i++)
if(x
时退出*/
for(i=10;i>k;i--)/*将插入点以及其后的每个数据后移一个
单位(给x腾位)*/
/*实例演示——腾位
8 18 28 38 48 58 68 78 88 98 (x)
8 18 28 38 38 48 58 68 78 88 98
↑ 插入点
*/
a[i]=a[i-1];
a[k]=x;/*将x放到插入点位置*/
for (i=0;i<11;i++)
printf(\ printf(\ }
⑵①i%7==0||i==0 ②n++ ③i%5==0
3.
⑴a.将continue;改为break;
b.将i=k-1;改为j=k-1; c.将j=k+1;改为i=k+1;
d.将for(i=0;i<10;i++)改为for(i=0;i<9;i++);
附:算法简析
#include
else
printf(\
}
3.程序改错
(1)以下程序的功能是求一元二次方程的实数根。
#include
double *quadratic(double *factor) { static double result[2]; double delta;
delta=factor[1]*factor[1]-4*factor[0]*factor[2];
if(delta<0) return 0;
delta=sqrt(delta);
result[0]=(-factor[1]+delta)/(2*factor[0]);
result[1]=(-factor[1]-delta)/(2*factor[0]);
return result;
}
void main()
{ double fun[3],r; ★ // double fun[3],*r; printf(\
scanf(\%f%f%f\★ //%lf%lf%lf
r=quadratic(fun[3]); ★ // r=quadratic(fun);
if(r)
printf(\
X1=%lf\\tX2=%lf\\n\
else
printf(\
}
(2)以下程序的功能是统计数组a中所有偶数的个数。
#include\
void main( )
{int a[10],*p,sum=0;
printf(\请输入10个整数:\
for(p=a;p
scanf(\★ //
scanf(\
for( ;p>=a;p--)★ //
for(p-- ;p>=a;p--)
if(p%2= =0) sum++;★ // if(*p%2==0)
sum++;
printf(\共有%d个偶数\
}
2.程序填空
(1)以下程序的功能是利用指针找出3个整数中的最小数。
#include
{ int *p1,*p2,*p3,min,x,y,z; p1=&x; p2=&y; p3=&z;
printf(″please input three integer: ″); scanf(″%d%d%d″,p1,p2,p3);
① ; //min=*p1
if(*p1>*p2)
② ; //min=*p2
if(min>*p3)
③ ; //min=*p3
printf(″min=%d\\n″,min);
}
(2)以下程序利用指向函数的指针实现函数调用,完成可选择的加减乘除运算。
#include
/*定义函数add*/
int add(int x,int y)
{ printf(\
/*定义函数sub*/
int sub(int x,int y)
{printf(\
/*定义函数mult*/
int mult(int x,int y)
{ printf(\
/*定义函数dev*/
int dev(int x,int y)
{ printf(\
void main()
{ int (*funp)(int,int); char op;
int x,y;
printf(\
scanf(\
scanf(\
scanf(\
① (op) //switch {case '+': funp= ② ;break; //add
case '-': case '*': case '/': default:
funp=sub; break; funp=mult; break; funp=dev; break; printf(\
}
printf(\ ③ (x,y)); //funp
}
3.程序改错
(1)以下程序的功能是:输入出。
#include
int *p1,*p2,*p3;
3个整数,按由小到大的顺序输
void swap(int ,int ); ★ // void swap(int *,int *)
★
printf(\
scanf(\
//
scanf(\
p1=i1;p2=i2;p3=i3; ★ //
p1=&i1;p2=&i2;p3=&i3;
if(i1>i2) swap(p1,p2); if(i1>i3) swap(p1,p3); if(i2>i3) swap(p2,p3);
printf(\}
void swap(int *p,int *q) {int t; t=*p; *p=*q; *q=t; }
(2)下列程序的功能是利用自定义函数计算一无符号整数各位数字的乘积。
#include
unsigned *f(unsigned num) {unsigned s=1,*p;
p=s; ★ //p=&s;
do
{s=s*(num); num/=10; }while(num); return p; }
void main() {unsigned x,p;
printf(\
scanf(\
p=f(x);
printf(\★ // printf(\
}
4.设计性实验
(1)编程一函数,其功能是求一个长正整数各位数字之和。要求使用指针函数实现结果的返回。在主函数中进行测试。例如在
主函数中输入 348762,输出结果应为为30即3+4+8+7+6+2的和。
//方法一:利用指向函数的指针 int sum(long n) { unsigned long x; if(n<10) x=n; else
x=sum(n/10)+n; return(x);
}
//利用递归求和
void main() {
long x;
int (*f)(long); // f=sum;
scanf(\ printf(\f(x));
}
//方法二:利用指针函数
#include
仿照第3)题改错(2)
unsigned s=0,*p;
p=&s;
do {
s=s+(num);
num/=10;
}while(num); return p; }
void main() { unsigned *p; long x;
printf(\
scanf(\
p=f(x);
printf(\
}
(2)编程一函数求两个整数的最大公约数,要求使用指针函数实现结果的返回。在主函数中调用此函数进行测试。两个整数由键盘输入。
//方法一:利用指向函数的指针
int mcf(int a,int b) { int temp; while(b)
{ temp=a%b; a=b; b=temp; }
return a; }
void main() {
int x,y;
int (*f)(int,int);
f=mcf;
scanf(\
printf(\f(x,y)); }
//方法二:利用指针函数
int *mcf(int a,int b) { int temp;
仿照第3)题改错(2)
while(b)
{ temp=a%b; a=b; b=temp; }
return &a;
}
void main() {
int x,y,*p;
scanf(\ p=mcf(x,y);
printf(\ }
正在阅读:
C语言程序设计实验与习题答案03-14
fluent常见问题04-18
Gauss完全主元素消去法解方程组完全09-23
普通生物学野外实习总结 - 图文09-15
看焦裕禄电影观后感1000字(个人篇)04-02
2019年郑州大学远程教育专升本英语专业报名条件?(最新)_ss03-08
幼儿园班级一日常规管理讲义04-27
ASP.NET验证码控件(附详细用法)10-09
生产效率计算方法02-28
- 计算机试题
- 【2012天津卷高考满分作文】鱼心人不知
- 教育心理学历年真题及答案--浙江教师资格考试
- 20180327-第六届“中金所杯”全国大学生金融知识大赛参考题库
- 洪林兴达煤矿2018年度水情水害预测预报
- 基本要道讲义
- 机电设备安装试运行异常现象分析与对策
- 《有机化学》复习资料-李月明
- 非常可乐非常MC2--非常可乐广告策划提案 - 图文
- 2011中考数学真题解析4 - 科学记数法(含答案)
- 企业人力资源管理师三级07- 09年真题及答案
- 基于单片机的光控自动窗帘控制系统设计说明书1 - 图文
- 20160802神华九江输煤皮带机安装方案001
- (共53套)新人教版一生物必修2(全册)教案汇总 word打印版
- 2014行政管理学总复习
- 中国银监会关于加强地方政府融资平台贷款风险监管的指导意见
- 民宿酒店核心竞争与研究
- 游园活动谜语大全2012
- 河南省天一大联考2016届高三英语5月阶段性测试试题(六)(A卷)
- 小型超市管理系统毕业论文详细设计4
- 习题
- 程序设计
- 答案
- 语言
- 实验