华北水利水电大学20xx级C语言实验报告(4)

时间:2024.4.27

华北水院高级语言程序设计(C语言)实验报告(四)

2012--2013学年 第二学期

2012级 专业: 学号: 姓名:………………………………………………………………………………………………

一、实验题目:数组

二、实验目的:(略)

三、实验内容

1. 程序验证(略)

2.程序设计

1) 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。编程找出 1000 以内的所有完全数,并输出使该数成为完全数的因子。(例如6=1+2+

3。按照6, its factors are 1,2,3格式输出)。

源代码:

#include<stdio.h>

void main()

{

int i,m,n;

for (m=2;m<1001;m++)

{

n=0;

for(i=1;i<m;i++)

if(m%i==0)

n=n+i;

if(m==n)

printf("%d, its factors are\n",m);

{for(i=1;i<m;i++)

if(m%i==0)

if(m==n)

printf("%d\n",i);}

}

}

运行结果:

2) 从键盘输入字符串a和字符串b,并在a串中的最小元素(不含结束符)后面插入字符串b。

源代码:

#include<stdio.h>

#include<string.h>

void main( )

{

char a[200],b[200],i=0,min=0,j;

printf("please input string a:");

gets(a);

printf("please input string b:");

gets(b);

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

if(a[i]<a[min])

min=i;

for(i=min+i;a[j]!='\0';j++)

a[i-min-1]=a[j];

a[min+1]='\0';

a[j]=a[i+min+1];

strcat(a,b);

puts(a);

}

运行结果:


第二篇:华北水利水电大学C语言实验4


C语言程序设计实验报告

实验4 循环结构程序设计

 

班级       2013156          学号    201315613               姓名     吴浩         

一、实验目的

(1)掌握用while语句,do-while语句和for语句实现循环的方法;

(2)掌握循环结构的嵌套;

(3)掌握break语句和continue语句的使用方法。

二、实验内容及步骤

1.相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第一个格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。 国王能兑现他的许诺吗?

程序1:试编程计算舍罕王共要多少粒麦子赏赐他的宰相,这些麦子合多少立方米?(已知1立方米麦子约1.42e8粒) 总粒数为:sum=1+2+22+23+…+263

程序代码:

#include <stdio.h>

void main()

{   int i;

    double t=1,sum=1,v;

   for(i=1;i<=63;i++)

   {t=t*2;

    sum=sum+t;}

   printf("赏赐的麦子数(粒)=%f\n",sum);

   v=sum/1.42e8;

   printf("赏赐的麦子体积(立方米)=%f\n",v);

}

运行结果

2.求完数。

程序2:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程找出1000之内的所有完数,输出所有的完数(要求:一行显示6个数);

程序代码:                               

#include <stdio.h>

void main()

{

 int m,i,s;

 for(m=1;m<=1000;m++) //从1开始到1000循环结束

 {

  s=0;//初始化因子之和s为0

  for(i=1;i<m;i++) //寻找在1到m之间,有多少m的因子

   if(m%i==0) //如果m能整除i,则i为m的因子

    s=s+i;//将因子累加

   if(s==m) //如果因子之和等于这个数

   printf("%d\t",s);//输出

 }

}

运行结果:

3.打印九九乘法表

程序3:编程输出如下上三角形式的九九乘法表。

1      2    3    4    5    6    7    8    9

-      -    -    -    -    -    -    -    -

-      2    3    4    5    6    7    8    9

4    6    8    10   12   14   16   18

                       9    12   15   18   21   24   27

                            16   20   24   28   32   36

                                 25   30   35   40   45

                                      36   42   48   54

                                           49   56   63

                                                64   72

                                                     81

程序代码:

#include <stdio.h>

void main()

{  int i,j; 

   printf("   1  2  3  4  5  6  7  8  9\n"); 

   printf("   -  -  -  -  -  -  -  -  -\n");

   printf("   -  2  3  4  5  6  7  8  9\n"); 

   for(i=2;i<10;i++) 

   {  

      for(j=1;j<=i;j++)       

       printf("   ");   //输出空格达到来使得向右对齐   

       for(j=i;j<10;j++)  

       printf("%-2d ",i*j); 

       printf("\n"); 

   }

}

 

4.求1!+2!+3!+…+20!;

#include<stdio.h>

main()

{

    int i=1,j=1;

    long int s,sum=0;

    for(j=1;j<=20;j++)

{    s=1;//必须每次都初始化,否则结果不对

     for(i=1;i<=j;i++)

    {   s*=i;}//求阶乘

    sum+=s;//求和

}

printf("1!+2!+3!+…+20!=%ld\n",sum);

}

5. s=a+aa+aaa…

#include <stdio.h>

void main()

{

       int a,n,i=1,sn=0,m=0;

    printf("a,n=\n");

    scanf("%d%d",&a,&n);

    while(i<=n)

       {

              m+=a; sn+=m; a*=10; ++i;

       }

    printf("a+aa+aaa+...=%d\n",sn);

}

三、问题讨论

break语句和continue语句在循环结构中使用时有何区别?举例说明。

Break语句是结束整个循环过程,不再判断执行循环的条件是否成立,而continue语句只结束本次循环,而不是终止整个循环的执行。

比如(1)

main()

{int n;

for(n=100;n<=200;n++)

{if(n%3==0) continie;

print("%d",n); }

}

当n能被3整除时,执行continue语句,结束本次循环(即跳过print函数语句),只有n不被3整除时才执行print函数。

比如(2)

for (r=1;r<10;r++)

{area=pi*r*r;

if(area>100) break;

print("%f",area);

}

计算r=1到r=10时的圆面积,当面积area大于100为止。也就是说area>100时,执行break语句,提前结束循环,不再执行剩下的循环。

四、实验心得

基本上能够用while语句,do-while语句和for语句实现循环,对循环结构的嵌套还不能熟练掌握,尤其是第二题求完数,费了很大劲才明白该怎样做。

更多相关推荐:
东北大学物理实验报告

实验一霍尔效应及其应用预习思考题1列出计算霍尔系数载流子浓度n电导率及迁移率的计算公式并注明单位霍尔系数载流子浓度电导率迁移率2如已知霍尔样品的工作电流及磁感应强度B的方向如何判断样品的导电类型以根据右手螺旋定...

东北大学大物实验报告(含灵敏电流计)

东北大学大物实验报告(含灵敏电流计),内容附图。

东北大学物理实验电桥的使用 实际体会详细过程

1实验前进教室以后把书包什么的放到一个角落里不能放实验台上占地方把实验报告和书拿出来最好再拿个本好随时记老师说的注意事项教室的黑板上有板书有关电桥实验的原理的一些东西还有就是一些需要的数据可以把一些必需数据抄下...

东北大学15秋学期《大学物理Ⅰ》在线作业3答案

谋学网15秋学期大学物理在线作业3单选题一单选题共20道试题共100分1选择22R24R2R2R2选择3题面为图片选择4题面为图片选择5根据热力学第二定律下列说法正确的是功可以全部转换为热但热不能全部转换为功热...

东北大学大物实验灵敏电流计

东北大学大物实验灵敏电流计,内容附图。

东北大学数值分析第一次实验报告

数值分析实践报告东北大学软件学院实验一1实验目的1通过上机计算体会迭代法求解线性方程组的特点并能和消去法比较2运用所学的迭代法算法解决各类线性方程组编出算法程序3体会上机计算时终止步骤lt或kgt予给的迭代次数...

东北大学大学物理期末考题及答案20xx

一填空题3cost1已知两分振动的振动方程分别为x1cost和x22其中x的单位为mt的单位为s则合振动的振幅为A2m2在驻波中设波长为则相邻波节和波腹之间的距离为43火车A行驶的速率为20ms火车A汽笛发出的...

大学物理弗兰克赫兹实验报告

弗兰克赫兹实验报告UU4U5U6U1U2U3978065554021531042091144vUU0U1181144036vEUU0100036118100305误差分析1第一个峰值不明显实验测得的对应的U的值...

大学物理实验报告

大学物理2上机实验报告学院光电信息学院姓名王志强学号20xx054040019一对1试分析T及a取值范围为aPvabT1用Mathcad画出Pv360043300Pv3960043300Pv460043300P...

东北大学计算机硬件技术基础实验报告(2)

东北大学计算机硬件技术基础实验报告专业班级土木工程7班实验题目分支程序设计日期20xx1121一实验目的1掌握分支程序设计方法2学习数据传送及分支程序的设计调试方法3熟悉在PC机上建立汇编连接调试和运行8086...

东北大学计算机硬件基础实验报告模板

实验报告范例东北大学计算机硬件技术基础实验报告专业班级XXX姓名XXX学号XXXX实验题目顺序程序设计日期20xx0913实验目的1掌握顺序程序设计方法2学习数据传送及算术和逻辑运算指令的用法3熟悉在PC机上建...

东北大学大学物理期末考题及答案20xx

东北大学物理期末考试题20xx一填空题1已知两分振动的振动方程分别为x1cost和x23cost2其中x的单位为mt的单位为s则合振动的振幅为A2m2在驻波中设波长为则相邻波节和波腹之间的距离为43火车A行驶的...

东北大学大学物理实验报告(29篇)