| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 531 人关注过本帖
标题:运行达不到预期目标啊
只看楼主 加入收藏
a646404908
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:189
专家分:492
注 册:2012-2-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
运行达不到预期目标啊
验证18位证件号:
  输入18位证件号,将奇位数的值相加的和求的平均数X,偶位数先与3相乘得到的个位数的和的平均数y。如果(X+Y)是10的倍数,则证件号正确,否则则错误。请编写程序验证证件号是否正确。(12分)
列入输入:431023198919230939
输出:正确
分析:
奇位数:3 0 3 9 9 9 3 9 9
偶位数:3 0 2 1 8 1 2 1 4
X:(3+0+3+9+9+9+3+9+9)/9 = 6
Y: 3X3 = 9
  0X3 = 0
  2X3 = 6
  1X3 = 3
  8X3 = 24
  1X3 = 3
  2X3 = 6
  1X3 = 3
  4X3 = 12
(9+0+6+3+4+3+6+3+2)/9 = 4
X+Y = 6+4 = 10

#include <stdio.h>
int main()
{
    char a[30]={"431023198919230939"};
    int i,j,k,sum=0,sum1=0,n1=0,n=0;
    float avg,avg1;
    for(i=0;a[i]!='\0';i++)
    {
        if(i%2==0)
        {
            k=a[i]*3;
            if(k>=10)
            {
                k=k%10;
            }
            sum=sum+k;
            n++;
        }
        else
        {
            sum1=sum1+a[i];
            n1++;
        }
    }
    avg1=sum1/n1;
    avg=sum/n;
    avg=avg+avg1;
    if((int)(avg)%10==0)
        printf("证件号正确");
    else
        printf("证件号错误");


}
不知道是我的代码错了还是 别的原因
高手来啊

[ 本帖最后由 a646404908 于 2012-3-8 17:41 编辑 ]
2012-03-08 17:14
bluetxray
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-5-18
收藏
得分:0 
以下是引用a646404908在2012-3-8 17:14:41的发言:

验证18位证件号:
  输入18位证件号,将奇位数的值相加的和求的平均数X,偶位数先与3相乘得到的个位数的和的平均数y。如果(X+Y)是10的倍数,则证件号正确,否则则错误。请编写程序验证证件号是否正确。(12分)
列入输入:431023198919230939
输出:正确
分析:
奇位数:3 0 3 9 9 9 3 9 9
偶位数:3 0 2 1 8 1 2 1 4
不知道是我的代码错了还是 别的原因
高手来啊
其他的先不看你的。你能不能先把你的这个输入分析得来的奇位数和偶位数是怎么得来的不?
2012-03-08 17:49
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:20 
自己想想看错的哪了
程序代码:
#include <stdio.h>
int main()
{
    char a[30]={"431023198919230939"};
    int i,j,k,sum=0,sum1=0,n1=0,n=0;
    float avg,avg1;
    for(i=0;a[i]!='\0';i++)
    {
        if(i%2==0)
        {
            k=(a[i]-48)*3;
            if(k>=10)
            {
                k=k%10;
            }
            sum=sum+k;
            n++;
        }
        else
        {
            sum1=sum1+a[i]-48;
            n1++;
        }
    }
    avg1=sum1/n1;
    avg=sum/n;
    avg=avg+avg1;
    if((int)(avg)%10==0)
        printf("证件号正确\n");
    else
        printf("证件号错误\n");


}
2012-03-08 18:54
yupeisx
Rank: 1
等 级:新手上路
帖 子:20
专家分:8
注 册:2012-3-7
收藏
得分:0 
顶楼上,在您的程序中0==48   
2012-03-08 22:54
a646404908
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:189
专家分:492
注 册:2012-2-14
收藏
得分:0 
回复 3楼 luchar
忘记了字符要减‘0’
后来我就该了

#include <stdio.h>
int main()
{
    char a[30]={"431023198919230939"};
    int i,j,k,sum=0,sum1=0,n1=0,n=0;
    float avg,avg1;
    for(i=0;a[i]!='\0';i++)
    {
        if(i%2==0)
        {
            k=((a[i]-'0')*3)%10;
            sum=sum+k;
            n++;
        }
        else
        {
            sum1=sum1+(a[i]-'0');
            n1++;
        }
    }
    avg1=sum1/n1;
    avg=sum/n;
    avg=avg+avg1;
    if((int)(avg)%10==0)
        printf("证件号正确\n");
    else
        printf("证件号错误\n");
}
2012-03-09 16:30
a646404908
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:189
专家分:492
注 册:2012-2-14
收藏
得分:0 
以下是引用bluetxray在2012-3-8 17:49:00的发言:

其他的先不看你的。你能不能先把你的这个输入分析得来的奇位数和偶位数是怎么得来的不?
那道题的输入分析有点错误
2012-03-09 16:31
天天涯涯
Rank: 4
等 级:业余侠客
帖 子:215
专家分:267
注 册:2011-10-17
收藏
得分:0 
你奇偶位搞反了,当i为偶时,其实是奇数位。别忘了数组的下标从0开始。
2012-03-09 16:39
a646404908
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:189
专家分:492
注 册:2012-2-14
收藏
得分:0 
回复 7楼 天天涯涯
哎。。是哦
搞反了
2012-03-09 19:43
快速回复:运行达不到预期目标啊
数据加载中...
 
   



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

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