| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1709 人关注过本帖
标题:有四个题目系统都提示错误,大神们看下
只看楼主 加入收藏
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
结帖率:100%
收藏
 问题点数:0 回复次数:13 
有四个题目系统都提示错误,大神们看下
1.Description
输入n(n<100)个整数,找出其中最小的数,将它与最前面的数交换后输出这些数。
Input
输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。
Output
对于每组输入数据,输出交换后的数列,每组输出占一行。
Sample Input
4 2 1 3 4
5 5 4 3 2 1
0
Sample Output
1&nbsp;2&nbsp;3&nbsp;4&nbsp;
1&nbsp;4&nbsp;3&nbsp;2&nbsp;5&nbsp;
程序代码:
#include <stdio.h>
int main()
{
    int a[9999];
    int min;
    int n, i, swap;
    while (scanf("%d", &n) != 0)
    {
        if (n == 0) break;
        for (i = 0; i < n; i++)
            scanf("%d", &a[i]);
        min = 0;
        for (i = 0; i < n; i++)
            if (a[0] > a[i]) min = i;
        swap = a[min];
        a[min] = a[0];
        a[0] = swap;
        for (i = 0; i < n; i++)
        {
            if (i == n - 1) printf("%d\n", a[i]);
            else printf("%d ", a[i]);
        }
    }
}

2.Description
对于给定的一个字符串,统计其中数字字符出现的次数。
Input
输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。
Output
对于每个测试实例,输出该串中数值的个数,每个输出占一行。
Sample Input
2
asdfasdf123123asdfasdf
asdf111111111asdfasdfasdf
Sample Output
6
9
程序代码:
#include <stdio.h>
int main()
{
    int n, i, j;
    int count;
    char a[9999];
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        count = 0;
        scanf("%s", a);
        for(j=0;j!='0';j++)
            if (a[j] >= '0'&&a[j] <= '9') count++;
        printf("%d\n", count);
    }
}

3.Description
古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284。 而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇,并称之为亲和数。一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。 你的任务就编写一个程序,判断给定的两个数是否是亲和数
Input
输入数据第一行包含一个数M,接下有M行,每行一个实例,包含两个整数A,B; 其中 0 <= A,B <= 600000 ;
Output
对于每个测试实例,如果A和B是亲和数的话输出YES,否则输出NO。
Sample Input
2
220 284
100 200
Sample Output
YES
NO
程序代码:
#include <stdio.h>
int main()
{
    int n, m;
    int i, j;
    scanf("%d", &j);
    for (i = 1; i <= j; i++)
    {
        scanf("%d%d", &n, &m);
        if (q(m) == q(n)) printf("YES\n");
        else printf("NO\n");
    }
}
int q(int n)
{
    int i, sum = 0;
    for (i = 1; i < n; i++)
        if (n%i == 0) sum = sum + i;
    return sum;
}

4.Description
如果一个整数其所有因子(包括1但不包括自己)之和等于它自身,那么这个整数就是一个完数。例如,6是完数,因为 6 = 1+2+3。
Input
第一行为一个整数t,表示测试数据的组数。 接下来有t行,每行一个整数n(6 <= n <= 10000)。
Output
对于每个整数n,输出n(包含)以内的完数,每个完数后面跟一个空格。每组测试数据的输出占一行。
Sample Input
2
6
10
Sample Output
6&nbsp;
6&nbsp;
程序代码:
#include <stdio.h>
int a();
int main()
{
    int i, n, m, j;
    scanf("%d",&n);
        for (i = 1; i <= n; i++)
        {
            scanf("%d", &m);
            for (j = 2; j <= m; j++)
                if (a(j) == j) printf("%d ", j);
    }
    printf("\n");
}
int a(int n)
{
    int i, sum = 0;
    for (i = 1; i < n; i++)
        if (n%i == 0) sum = sum + i;
    return sum;
}

上面的题目想不通自己错在哪里,请大神指教
123都是答案错误
4是超时了,系统计算了20秒,然而限制在1秒内算对

[此贴子已经被作者于2017-1-9 22:43编辑过]

2017-01-09 20:47
云团
Rank: 2
等 级:论坛游民
帖 子:36
专家分:41
注 册:2017-1-9
收藏
得分:0 
程序代码:
#include <stdio.h>

 int main()

 {
     int a[9999];
     int min;
     int n, i, swap;
     while (scanf("%d", &n) != 0)
     {
         if (n == 0) break;
         for (i = 0; i < n; i++)
             scanf("%d", &a[i]);
         min = 0;
         for (i = 0; i < n; i++)
             if (a[min] > a[i]) min = i;
         swap = a[min];
         a[min] = a[0];
         a[0] = swap;
         for (i = 0; i < n; i++)
         {
             if (i == n - 1) printf("%d\n", a[i]);
             else printf("%d ", a[i]);
         }
     }

 }

收到的鲜花
  • Jonny02012017-01-09 21:04 送鲜花  3朵  
2017-01-09 20:57
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
收藏
得分:0 
回复 2楼 云团
谢谢,原来问题出在数组哪里。。一开始没看仔细
2017-01-09 21:05
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
收藏
得分:0 
回复 2楼 云团
谢谢,原来问题出在数组哪里。。一开始没看仔细
2017-01-09 21:05
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
第一题~数组可能出现负数,不能以0作为基点~

min=0//min=a[0];~~

[此贴子已经被作者于2017-1-9 21:25编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-09 21:24
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
第二题~典型人品问题~

for(j=0;j!='0';j++)//a[j]!='\0'~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-09 21:27
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
第三题~又是典型人品问题~

if (q(m) == q(n))// if (q(n) == m&&q(m)==n) ~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-09 21:37
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
第四题~发了第三题代码了,虽然算法很类型~我汗~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-09 21:43
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:0 
第四题int q()要提前声明

我是硬件工程师
2017-01-09 22:02
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
收藏
得分:0 
回复 6楼 九转星河
都是好低级的错误。。。。
谢谢啦
第四题更新了,帮忙看下
2017-01-09 22:29
快速回复:有四个题目系统都提示错误,大神们看下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030865 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved