欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    [信息与通信]C语言程序设计汇编.doc

    • 资源ID:1970202       资源大小:223KB        全文页数:33页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [信息与通信]C语言程序设计汇编.doc

    C语言程序设计汇编分支、循环结构一、程序分析题1阅读程序,写出运行结果。     main() int a10, b4,C3;         if(ab) ab;         if(aC)  aC;         printf("d,d,dn", a,b,c); 【解】程序中,第一个if语句if(a<b)ab,当a<b时,让b值置a,该语句确保a的值不比b小。同样第二个if语句if(ac)ac,当ac时,让c值置a,使a的值不比c小。实际;情况是a本来就比b和c都大,所以a的值没有变,程序输出a、b和 c的原来值:10,4,3。=2阅读下列程序,写出程序的输出结果。     main()      int x=100, a10, b20, Ok15,Ok20;     if(ab)if(b!15)if(!Ok1) x1;      else if(ok2) x10;     else x-l;      printf("dn",x);       【解】程序预置变量x的值为100,a的值为10,b的值为20,ok1为5,Ok2为0。程序中给出的if语句可以写成更结构化的形式如下:     if(ab)      if(b!15)     if(!Ok1) x1;     else     if(Ok2) x10;     else xl;    由于条件ab成立,并且条件b!=15也成立,而ok1不等于0,执行else后的语句。又因ok2等于0,执行else后的语句赋-1给x。所以程序输出一l。= 3阅读下列程序,写出程序的输出结果。     main()           int y9;         for(; y0; y-)          if(y3=0) printf(”d”,-y);continue;       【解】循环前,变量y的值为9,其中的循环语句在y大于0情况下循环,每次循环后y的值减1。循环体是当y能被3整除时输出表达式-y,输出的是减1后的y值。这样,第一次循环因y为9,能被3整除,输出8,y也变成8。又经两次循环,y的值变为6,又让y减1变成5,并输出5;又经两次循环,y的值变成3,让y减至变成2,输出2;再经两次循环后,y的值变成0,结束循环。所以程序输出852。二、  程序设计题  1编一个程序,输入华氏温度(F),按下列公式计算并输出对应的摄氏温度(C):C 5( F32)9【解】利用公式:C5(F32)9,输入F氏温度,计算并输出对应的C氏温度,程序要引入两个变量,分别用于存储F氏温度和C氏温度,计算时应采用浮点型,包括公式中的常数也应写成浮点数,不能采用整型和把常数写成整数。因采用整型编写,公式中的除运算变成整除,会得出与实际要求不一致的结果。程序如下:   include <stdio.h>      main()        float f,c;/*变量定义*/         printf(”输入F氏温度”);        scanf(”f,f);        c 5.0*(f32.0)9.0;        printf(”对应的C氏温度6.2fn”,c);       = 2编一个程序,输入一个整数,输出其符号(若0,输出1;若0输出-1)。 【解】程序可用if语句判断输入数的符号,并控制输出1或-l。程序如下:     include<stdio.h>          main()         int c;*变量定义*          printf("输入一个整数");          scanf(” d”, c);         if(C0) printf("1n");         else printf("-ln");         =3编一个程序,输入X的值,按下列公式计算并输出y的值。       X(Xl)        y 2xl(lx10)       3X-11(10X)【解】输入x,按公式计算y。这可用一个嵌套的if语句分段判断并计算出y的值。然后输出y值。程序如下:      includestdioh          main()         int x,y;*变量定义*          printf(”输入一个整数”);          scanf(”d”,x);          if( xl) yX;          else if(x10)y2*xl;          else y3*X11;         printf(”y%d n”, y);        = 4编一个程序,输入三个单精度数,输出其中最小数。【解】设最小数存于变量min中,为求三个数中的最小数,可分以下多步完成,先预置min为x,然后分别将其余两个数逐一与min比较,当它们中的某个值比存于min中的值更小时,就用它们更新min。写出程序如下:     include<stdio.h>       main()       float X,y,Z,min;/*变量定义*/         printf("输入三个单精度浮点数");       scanf("%f%f%f", &x,&y,&Z);       min x;       if(min>y) min y;       if(min>Z) minZ;       printf("浮点数%f,%f,%f中的最小值是%fn",X,y,Z,min);     = 5编一个程序,求出所有各位数字的立方和等于1099的3位数。【解】找出所有各位数字的立方和等于1l99的3位整数。 3位整数是100至999范围内的整数,设分别用a,b,c存储3位数的百位、十位和个位的数字,程序用三重循环求出a,b,c的立方和为1099的3位数a*100+b*10c。程序如下:     include <stdio.h>       main()       int a,b, c;/*变量定义*/        for(a1; a<=9;a+)       for(b0; b<=9; b+)        for(c0;c<9;c+)        if(a*a*a+b*b*b+c*c*c=1099)        printf("%dn",(10*ab)*10c);      若用一个变量i表示3位数,循环体将3位数变量i分拆出它的百位、十位和个位共3个数字,然后判这三个数字的立方和是否是1099,若是就输出该变量的值。程序如下:      include<stdio.h>           main()          int i,a,b, c;/*变量定义*/            for (i100;i<=999;i+)             ai/100;           b(i%100)/10; /*或b(i/10)%l0*/            c=i%10;           if(a*a*a+b*b*b+c*c*c=1099)           printf("%dn", i);                  = 6编一个程序,输入10个整数,统计并输出其中正数、负数和零的个数。【解】输入10个整数,统计其中正数、负数和零的个数。程序引入3个计数器变量,用于统计大于以小于0和等于0的整数的个数。开始时,这3个计数器都置0,然后用循环逐一输入10个整数,并判定当前输入的整数是大于0,或小于0,或等于0,并按判定结果累加相应计数器。最后,程序输出这3个计数器的值。程序如下:        # include<stdio.h>       main()      int i,d,n,z,p;/*变量定义*/     nZp0;     for(i1;i<=10;i+)      print(" 输入第%d个整数", i);     scanf("%d",&d);     if(d<0)n+;     else if(d>0)p+;     else z+;         printf("负数有%d个,正数有%d个,零有%d个。n",n,p,z);    = 7编程序,按下列公式计算e的值(精度为1e6):           e1+1/1!+1/2!+1/3!+1/n!+ 【解】按e的幂级数展开式计算e的值。这是典型的求级数和计算问题。通常采用逐项计算,并累计的方法。计算新的项时,可用上一轮循环计算出的项,这能提高程序的效率。循环直至当前项的值小于精度要求结束。程序如下:         # include<stdio.h>          main()          double e,t,i;/*变量定义*/           e0.0;t=1.0;i1.0;          while(t>1.0e-6)           e+t;           t/= i;          i+= 1.0;                   printf(”e%.6fn”, e);       = 8编程序,按下列公式计算y的值(精度为1e6):          y=1/r*r+1【解】按所给公式计算数列的和。类似上一小题的解,逐项计算并累计。程序如下:       # include<stdio.h>         main()         double y,r,t;/*变量定义*/           y0.0;r1.0;          while(t=1.0/(r*r+1.0)>=1.0e-6)           y+=t;          r+=1.0;                   printf("y=%.6fn", y);        =9编一个程序显示ASCII代码0x20至ox6f的十进制数值及其对应字符。【解】显示ASCII代码为十六进制0x20至ox6f的字符的十进制代码值与其字符。程序可用一个循环,让变量i顺序地取0X20至OX6f的值,并逐一输出其十进制代码和对应的字符,程序如下:       # include<stdio.h>           main()            int i,k0;             for(i=0x20; i<=0x6f;i+)              if(k+%10= O)/*每行十个*/             printf("n");              printf("%3d(%C)", i,i);                           printf("n");         =10用三种循环语句分别编写程序显示1至100的平方值。【解】用三种循环语句分别编写显示1至100的平方值的程序。直接写出3个程序如下:          (1) 用输循环实现的程序      # include<stdio.h>       main()        /*用for循环*/       int i,k0;       for(il;i<=100;i+)       if(k+%5=0)       /*每行五个*/      printf("n");      printf("%3d*%3d%5d",i,i,i*i);           printf("n");               (2) 用while循环实现的程序       # include<stdio.h>         main()       /*用 while循环*/       int i,k=0 ;          i=1;          while(<=100)         if(k+%5=0)/*每行五个*/         printf("n");         printf("%3d*%3d%5d", i,i,i*i);         1+;                 printf("n");                   (3) 用do-while循环实现的程序       # include<stdio.h>         main()      /*用do-while循环*/   int i, k0 ;           i=1;         do       if(k+%5=0)    /*每行五个*/       printf("n");       printf("%3d*%3d%5d",i,i,i*i);      1+;        while(<=100);      printf("n");     数组一、  程序分析题 1阅读程序,写出程序运行结果。,      main()     static int a39,7,5,3,l,2,4,6,8;      int i,j,sl0,s20;     for(i0; i<3;i+)     for(j0;j<3;j+)      if(ij) s1s1aij;     if(i+j 2) s2s2aij;           printf("%dn%dn", sl,s2);    【解】已知数组。共有3行3列席一行依次是9,7,5;每二行是3,1,2;第三行是4,6,8。程序引用数组元素的游标变量是i和j,外循环控制变量i是数组的行下桥,内循环控制变量j是数组的列下标。循环体的工作是将数组的某些元素累计到sl,某些元素累计到S2。将行下标i和列下标j相同的元素累计到sl,sla00al1a22。将行下标i与列下标j的和为 2的元素累计到 s2,s2a02alla20。所以sl是18,s2是10。程序输出:    18    10= 2说明下列程序的功能。   main()    int i,j;    float a33,b33,x;    for(i0;i<3;i+)     for(j0;j<3 ;j+)     scanf("%f",&x); aij x;       for(i0;i<3;i+)    for(j0;j<3;j+)   bjiaij;   for(i=0;i<3;i+)   printf("n");    for(j0;j<3;j+)    printf("%f",bij);    printf("n");    【解】程序第一段两重循环,实现按行顺序输入数组a的全部元素的值。程序第二段两重循环是将数组a转置复制到数组b。程序第三段两重循环实现按行输出数组b的全部元素。所以程序的功能是按行顺序输入3*3二维数组的全部元素,然后按列顺序输出。= 3写出下列程序的运行结果。    main()    static char a'*','*','*','*','*','*';    int i,j,k;    for( i0;i<5;i+)     printf("n")    for(j 0;j<i;j+) printf("%c",'');    for(j0;j<5 ;j+)printf("%c",ak);        printf( "n");     【解】程序的外循环控制循环五次,每次开始先输出一个换行符,共输出5行信息。对于i(自0开始计算)行,先输出i个空白符,接着输出字符数组a中的五个字符,由于a中的五个字符都是字符。,所以输出五个*字符。这样程序是输出以下形式的图案:            * * * * *            * * * * *            * * * * *            * * * * *            * * * * *=4说明下列程序的功能。      main()       int i,j ;       float a33,b33,c33,x;       for(i0;i<3;i+)      for(j=0;j<3;j+)     scanf("%f", &x); aij= x;          for(i0;i<3;i+)     for(j0;j<3;j+)     scanf("%f",&x);bijx;          for(i0; i<3; i+)    for(j0;j<3;j+)    cijaij bij ;    for(i0; i<3;i+)     printf("n");    for(j0;j<3;j+)    printf("%f", cij);         printf("n");    【解】程序第一段的功能是按行顺序输入数组a 的元素。程序第二段的功能是按行顺序输入数组b的元素。程序第三段的功能是顺序累加数组a和数组b的对应元素,并将和存于数组C的对应元素中。最后,按行顺序输出数组C的全部元素。二、程序设计题1编程序,输入单精度型一维数组 a10 ,计算并输出 a数组中所有元素的平均值。【解】为了计算数组元素的平均值,首先要累计它的全部元素的和,然后除以数组元素的个数,即得数组元素的平均值。写成C程序如下:     # include<stdio.h>      main()   int i, n10;     float s,a10 ;     printf("Enter %d numbers! n", n);     for( i=0;i< n; i+)     scanf("%f",&s); ai= s;         for(s=0.0,i=0;i<n;i+)    s+= ai ;     s /n;     printf("平均值是%.2fn", s);     =2编程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。【解】将数组的元素逆序重新存放,就是将数组的首尾对应元素两两交换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的下标,交换以这两个变量值为下标的数组元素。开始时,i的值为0,j的值为末元素的下标。每次交换后,i增1,j减1。继续交换的条件是i<j。程序如下:    # include<stdio.h>        main()        int a10, i,j,t,n10;         printf("Enter %d numbers! n", n);     for(i0;i<n;i+)         scanf("%d",&ai );       for(i=0,jn-1;i<j;i+,j-)       t ai; aiaj ;aj t;              for(i0; i<n; i+)       printf("%dt", ai);       printf("n");       = 3编程序,输入两个字符串(<40个字符) ,连接后输出(不准用系统函数) 。【解】将字符串s2连接到字符串s1的计算过程可分两个步骤完成。首先找到字符串s1的末尾,然后参照字符串s2,将字符串s2的全部有效字符逐一复制到字符串s1,最后在字符串s1的末尾接上字符率结束标记符。完整程序如下:      # include<stdio.h>       # define N 40      main()       char s1N ,s2N;        int i,j;         printf("Enter stringl!n");       scanf("%s",s1);     printf("Enter string2! n");       scanf("%s", s2);       for(i0; sli!'0' ; i+) ;       for(j0;s2j!'0' ;i+,j+)        soisj ;        s1i'0'       printf("sl%sn" ,sl);       =4编程序按下列公式计算S的值(其中X1、X2、Xn由键盘输入):       s(xi-x0)(xi-x0) (其中x0是X1、x2、Xn的平均值) 【解】输入数组x的n个元素的值,按公式计算。程序首先输入n,设n<100,然后输入n个数据,接着求它们的平均值,最后按计算公式求出s,并输出。程序如下:      # include<stdio.h>      # define N 100     main()      double xN+1, s;       int i,n;      do        printf("Enter n(<100)"); scanf("%d", &n);        while(<=0|n>=100);       for(i=1; i<=n;i+)       scanf("%lf", &s);xis;               for(s0.0,i1;i<=n; i+)      s+=xi ;     x0  s/n;     for(s0.0, i=1;i<= n;i+)      s+=(xi-x0)*(xix0);      printf("s=%fn", s);      = 5输入一个3X5的整数矩阵,输出其中最大值、最小值和它们的下标。【解】输入一个二维数组,寻找二维数组的最大值和最小值。其中寻找最大值和最小值的工作可用两重循环实现,即按行按列考察二维数组的元素。程序如下:     # include<stdio.h>     main()     int a35, i,j,t,n3, m5,      min,max, minrow, mincol, maxrow, maxcol;      printf("Enter %d*%d numbers !n" , n,m);      for(i0; i<n;i+) )for( j0;j<m;j+)     scanf("%d", &t); aij t;          minmax=a00; minrowmincolmaxrow=maxcol=0;     for(i0;i<n;i+)     for(j0;j<m; j+)      if( aij> max )     max= aij ;maxrow= i;maxcol=j ;          if( aij<min)       minaij ; minrow= i; mincolj ;      printf("MAXa%d%d %d MIN a%d%d %d n",     maxrow,maxcol,max,minrow,mincol,min) ;      =6输入一个字符串,将其中的所有大写字母改为小写字母,而所有小写字母全部改为大写字母,然后输出。【解】程序先输入字符率,然后顺序考察输入字符串中的字符,当发现是大写字母时,将它改写成对应的小写字母,而当它是小写字母时,就将它改写成对应的大写字母。若变量ch中的字符是大写字母,则与它对应的小写字母的表达式可以写成ch- 'A''a' ;类似地,若变量ch中的字符是小写字母,则与它对应的大写字母的表达式可以写成ch'a''A' 。完整程序如下:      # include<stdio.h>       # define N 200        main()        char sN ;         int i;        printf(" Enter string! n");        scanf ("%s" ,s);       for(i0; si!'0';i+)       if(si >='A'&&si <='Z' )      sisi -'x''a' ;      else if(si >='a'&& si <='z')       si si'a' 'A' ;      printf("s%sn", s);      =7设某班50名学生的三科成绩表如下:     课程一    课程二     课程三          .        .        .试编一个程序,输入这50个学生的三科成绩,计算并输出每科成绩的平均分。【解】程序定义一个50行3列的二维数组,用于存储全班学生的成绩。程序顺序输入各个学生的三科成绩,然后按列的顺序,累计各科总分,并计算平均分。完整程序如下:     # include<stdio.h>     # define N 50     # define M 3      main()     int scoreNM, i,j,t;     double aM;     printf("Enter scores!n");     for(i0;i< N; i+)     for(j0;j<M;j+)       scanf("%d",&t);scoreijt;           for(j0;j<M;j+)aj0.0;     for(j0;j< M;j+)      for(i0;i< N; i+)     aj+= scoreij;    aj/ N;         for(j0;j<M;j+)      printf("课程%d的平均分是%.2fn", j+1,aj);     =8编一个程序,输入一个整型数据,输出每位数字,其间用远号分隔。例如,输入整数为2345,则输出应为: 2, 3, 4, 5。【解】程序的主要工作是从输入整数分拆出它的十进制整数的各位数字,将分拆出来的各位数字存于数组中,然后将这些数字自高位到低位的顺序逐位输出。要将一个整数按十进制数的要求分拆,需用一个循环,每次循环求出被分拆数除以10的余数的办法来求出它的个位,每分拆出一位就将被分拆的数除以10。循环过程直至被分拆的数为0结束。完整程序如下:      # include<stdio.h>        main()      int a20,i,base10;       int n;       printf("Enter a number! n");       scanf("%d", &n);/*整数输入*/        i0;/*对n进行分拆,各位数字自低位到高位存于数组 a*/       do      ai+n% base;      n/ base;       while(n) ;for(i-;i>=0;i-)/*自高位到低位输出*/       printf("%d%c",ai, i? ',' :'n');         =9编一个程序,输入一个字符串,将其中所有的大写英文字母的代码+3,小写英文字母的代码-3。然后输出加密后的字符串。【解】程序的主要工作是输入字符串,并顺序考察输入字符率中的字符,分别对其中大小写英文字母完成问题要求的更改,而跳过不是英文字母的字符。完整程序如下:      # include<stdio.h>       # define N 200        main()       char sN; int i;        printf("Enter string! n");        scanf("%s", s);        for(i0;si !'0' i+)       if(si >='A' && si<='Z')       si+=3;       else if(si>='a'&& si<='z' )        si-=3;       printf("s%sn",s);       =10编一个程序,将按第9题中加密的字符率(从键盘输入)解密后输出。【解】本问题编写的程序是完成上一程序的逆操作。同样是顺序考察输入字符串,对满足要求的字符作恢复更改。要求是当字符减3后是大写英文字母时,则对其作减3处理的替换;当字符加3后是小写英文字母时,则对它作加3的处理。如此做法是有错误的,程序未考虑原先不是英文字母,而未被加3或减3处理,但对它减3或加3后是英文字母时,将被下面的程序转换成英

    注意事项

    本文([信息与通信]C语言程序设计汇编.doc)为本站会员(音乐台)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开