oj2006

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2006

图片发自简书App


思路:先用一个数去确定后面需要进行运算的整数个数,然后再用for语句进行奇数的判断和奇数的累乘,最后输出结果。

这题的关键是要写出第一行输入的表示后面有多少个整数的代码,我不知道怎么去写,就一直在干想,想了很久也想不出来,也没有去尝试写,就想着要找一个模板来输入那个数,但事实不可以,这也是我的一个大弊端了,要改过来才行。

干想很久以后写下了代码,运行出来有问题,代码是错误的。

错误代码:

#include "stdio.h"

void main()

{

    int n,a[100],i,m;

    while(scanf("%d%d",&a[n],&n)!=EOF)

    {

    for(i=0;i<100;i++)

        if (a[i]%2!=0)

          {

          m=a[i];

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

          a[i+1]=m;

          }

          printf("\n");

    }

    return 0;

}

错误之处:1.想着是用a[]来让我可以控制输入多少个整数,殊不知已是乱用了冒泡法

2.赋值错误:只有一个赋值,无法实现先输入一个代表后边有多少个整数的那个数

3.printf处出现基本错误,况且没有是在运算全部结束后才输出

4.没有写出累乘的步骤

解决方法1.多定义一个变量来与a[]结合实现先输入一个整数代表后边有多少整数进入运算的题目要求

2.进行二次赋值,让后面所需要进行运算的整数可以进去电脑缓冲区

3将printf移出循环之外,让其能输出最后结果

4.将if后的语句重新写过,定义要累乘的原始值为1,重写累乘步骤,让其可以实现累乘

改后正确代码:

#include "stdio.h"

void main()

{

    int n,i,m,num,a[100];

    while(scanf("%d",&m)!=EOF)

    {

    num=1;

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

    scanf("%d",&a[i]);

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

        {

        if (a[i]%2!=0)

          {

          num=num*a[i];

          } 

        }

        printf("%d\n",num);

    }

}

笔记:1.如果题目要求要输入一个数确定后面所输入数的数目,要进行两次赋值,并且使用一个for语句对后面的数进行下一步赋值

2.要注意for语句后的基本用法

3.要充分理解累乘或者累加的用法


图片发自简书App
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,433评论 0 2
  • 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...
    小狮子365阅读 10,754评论 3 71
  • C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的 算法 题目:...
    Poison_19ce阅读 1,214评论 0 0
  • 宿舍管理查询 #include "stdio.h" #include "stdlib.h" /* 标准库函数*/ ...
    YQ_苍穹阅读 764评论 0 2
  • 我是贪睡的人。没做二加九十天的计划之前我是十一点睡。然后睡到自然醒。这个星期自己调闹钟打卡。但是真的习惯了闹钟都闹...
    吕桂梅阅读 125评论 1 0