| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1022 人关注过本帖
标题:自学,求高手点拨下面程序哪里出错了!
只看楼主 加入收藏
馨馨泡沫
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-12-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
自学,求高手点拨下面程序哪里出错了!
题目如下:
无线电台的RS制信号报告是由三两个部分组成的:
R(Readability) 信号可辨度即清晰度.
S(Strength)    信号强度即大小.
其中R位于报告第一位,共分5级,用1—5数字表示.
1---Unreadable
2---Barely readable, occasional words distinguishable
3---Readable with considerable difficulty
4---Readable with practically no difficulty
5---Perfectly readable
报告第二位是S,共分九个级别,用1—9中的一位数字表示
1---Faint signals, barely perceptible
2---Very weak signals
3---Weak signals
4---Fair signals
5---Fairly good signals
6---Good signals
7---Moderately strong signals
8---Strong signals
9---Extremely strong signals
现在,你的程序要读入一个信号报告的数字,然后输出对应的含义。如读到59,则输出:
Extremely strong signals, perfectly readable.
输入格式:
一个整数,信号报告。整数的十位部分表示可辨度,个位部分表示强度。输入的整数范围是[11,59],这个范围外的数字不可能出现在测试数据中。

输出格式:
一句话,表示这个信号报告的意义。按照题目中的文字,先输出表示强度的文字,跟上逗号和空格,然后是表示可辨度的文字,跟上句号。注意可辨度的句子的第一个字母是小写的。注意这里的标点符号都是英文的。

输入样例:
33

输出样例:
Weak signals, readable with considerable difficulty.

下面是我的程序:
程序代码:
#include <stdio.h>
main()
{
    int R,S;
    int N;
    char n1,n2;
    scanf("%d",&N);
    R=N%10;
    S=N-S;
    if(R=1)
    {
        n1="Unreadable";
    }
    else if(R=2)
    {
        n1="Barely readable,occasional words distinguishable";
    }
    else if(R=3)
    {
        n1="Readable with considerable difficulty";
    }
    else if(R=4)
    {
        n1="Readable with pratically no difficulty";
    }
    else if(R=5)
    {
        n1="Perfectly readable";
    }
    if(S=1)
    {
        n2="Faint signals,barely perceptible";
    }
    else if(S=2)
    {
        n2="Very weak signals";
    }
    else if(S=3)
    {
        n2="Weak signals";
    }
    else if(S=4)
    {
        n2="Fair signals";
    }
    else if(S=5)
    {
        n2="Fairly good signals";
    }
    else if(S=6)
    {
        n2="Good signals";
    }
    else if(S=7)
    {
        n2="Moderately strong signals";
    }
    else if(S=8)
    {
        n2="Strong signals";
    }
    else if(S=9)
    {
        n2="Extremely strong signals";
    }
    printf("%s,%s",n2,n1);
}
编译后出现warning如下:
[Warning] assignment makes integer from pointer without a cast [enabled by default]
全部n1和n2都出现上述warning
运行后无法得到结果,出错
请问上述程序出错在哪里?我觉得我的思路是对的,是字符串变量的赋值出错了?
另外,我就是想要用if语句来解决问题,不想用开关语句或者数组之类的。
求高手指教,谢谢!
2014-12-14 16:03
醒悟wjn
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2014-11-26
收藏
得分:2 
if(R=1)是否要改为if(R==1)
2014-12-14 18:44
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:1 
程序代码:
#include "stdafx.h"

#include <stdio.h>
int main()
{
    int R=0,S=0;
    int N=0;
    scanf("%d",&N);
    R=N%10;
    if(R==1)  printf("Unreadable");
    if(R==2)  printf("Barely readable,occasional words distinguishable");
    if(R==3)  printf("Readable with considerable difficulty");  
    if(R==4)  printf("Readable with pratically no difficulty");
    if(R=5)  printf("Perfectly readable");
    S=N-10*R;
    if(S==1)  printf("Faint signals,barely perceptible");
    if(S==2)  printf("Very weak signals");   
    if(S==3)  printf("Weak signals");   
    if(S==4)  printf("Fair signals");  
    if(S==5)  printf("Fairly good signals");
    if(S==6)  printf("Good signals"); 
    if(S==7)  printf("Moderately strong signals");   
    if(S==8)  printf("Strong signals");  
    if(S==9)  printf("Extremely strong signals"); 
    return 0;
}
你的错误太多,首先字符串要么存入数组,要么利用printf输出;char n1,n2;
你这样能保存字符串吗。再次,你的if和else间的配对关系对吗?if(R=1)
条件是这样写吗?

一片落叶掉进了回忆的流年。
2014-12-14 18:46
yahwei
Rank: 7Rank: 7Rank: 7
来 自:湖~
等 级:黑侠
威 望:3
帖 子:145
专家分:644
注 册:2011-11-10
收藏
得分:17 
我第一时间只能想到数组,所以请勉强看看:
程序代码:
#include <stdio.h>

char * R[] = { 
                "Unreadable",
                "Barely readable, occasional words distinguishable",
                "Readable with considerable difficulty",
                "Readable with practically no difficulty",
                "Perfectly readable"
             };
char * S[] = {
                "Faint signals, barely perceptible",
                "Very weak signals",
                "Weak signals",
                "Fair signals",
                "Fairly good signals",
                "Good signals",
                "Moderately strong signals",
                "Strong signals",
                "Extremely strong signals",
             };

int main ( void )
{
    int iTens ;
    printf ( "输入一个11-59之间的整数:" ) ;
    scanf ( "%d", &iTens ) ;
    setbuf ( stdin, NULL ) ;
    printf ( "%s, %s.\n", S[iTens / 10 - 1], R[iTens % 10 - 1] ) ;
    return 0;
}


你的代码有两处错误:1、“char n1, n2;”应该改为“char *n1, *n2;
2、if(R=1)这句里的等号改为“==”,下面的所有IF语句都一样要改。

[ 本帖最后由 yahwei 于 2014-12-14 20:11 编辑 ]

[qq]949654600[/qq]
2014-12-14 20:04
快速回复:自学,求高手点拨下面程序哪里出错了!
数据加载中...
 
   



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

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