首页 > 试题广场 >

请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正

[不定项选择题]
下列给定程序中,函数fun的功能是:进行数字字符转换。若形参ch中是数字字符'0'~'9',则将'0'转换成'9','1'转换成'8', '2'转换成'7',…, '9'转换成'0';如果是其他字符则保持不变,并将转换后的结果作为函数值返回。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
试题程序。
#include <stdio.h>
_____ fun(char ch) {
    if (ch >= '0' && _______)
        return '9' - (ch - ______);
    return ch;
}
int main() {
    char c1, c2;
    printf("\nThe result:\n");
    c1 = '2';
    c2 = fun(c1);
    printf("c1=%c c2=%c\n", c1, c2);
    c1 = '8';
    c2 = fun(c1);
    printf("c1=%c c2=%c\n", c1, c2);
    c1 = 'a';
    c2 = fun(c1);
    printf("c1=%c c2=%c\n", c1, c2);
}



  • int  ch<='9'  '0'
  • char ch<='9'  '0'
  • char ch<='9'  0
  • int ch<='9'  0
这题不严谨,AB输出结果都对。反正都要做类型转换,也无所谓哪个比较优

A、返回char,那么if条件里面做了隐式类型转换:int数字转成char

B、返回int,那么main中赋值给char变量的时候做了类型转换,int转char
int fun(char ch)
{
    if(ch>='0'&& ch<='9')
        return'9'-(ch-'0');
    return ch;
}
发表于 2016-08-30 16:04:55 回复(6)
答案:char   ch<='9'   ‘0’
解析:1,返回的是转换后的字符,因此是char
2,判断字符在’0’到’9’范围内,因此是 ch<=’9’
3,’9’-ch 得到的是两个字符之间的差值,是整型,要转成对应的字符要+’0’,在括号内为j减
编辑于 2017-04-06 18:18:37 回复(5)
A选项他的返回值是int类型,但是主函数中调用fun函数之后是以c%(字符)形式输出的,所以这里结果的输出与函数的fun函数的返回值类型是没有关系的
发表于 2020-10-21 14:11:31 回复(0)
刚刚测试过,答案就是 B。

发表于 2015-09-13 20:36:27 回复(5)
在Java中的话,
char类型的字符做运算的时候,提升为int型,如果返回值为char的话,if中的return需要强制类型转换。。。
编辑于 2017-02-21 09:16:17 回复(0)
我理解的是利用assic码来看,将这些字符都转化为它们所对应的assic码值,然后进行加减运算,得出另一个assic码值,这样该assic码值对应的字符就是所求字符。比如‘9’对应的assic码值是57,‘0’对应的是48,在函数中计算后就是57-(57-48),得48,返回‘0’
发表于 2016-06-20 14:49:03 回复(1)
划重点,多选题。。。
发表于 2019-03-25 14:50:55 回复(0)
弱弱的问下,那个返回类型不会有错误么
发表于 2017-07-18 11:01:14 回复(0)
'9'-ch得到的是对应的assic码的值
发表于 2017-04-13 11:49:10 回复(0)
选项中无正确答案
【解析】分别应填入(1) char (2) ch<='9' (3) '0'
发表于 2015-01-04 13:52:09 回复(1)
有没有一种可能是按照ascll码表进行输出?比如'a'输出用int输出就是97,用char输出就是'a',因此用char和int都可以进行接收?然后为什么是'0'而不是0,这是因为char与int运算时会转为对应的ascll进行计算,-0等于没有减,而-'0'等于-48,就可以得到一个正确的int对应的数字了,这时不管是用int还是char接受,在进行最终输出时都可以保证结果正确
发表于 2023-03-26 10:49:53 回复(0)
A选项就是按ASCII码
发表于 2018-10-10 22:24:41 回复(0)
其实可以把char当做特殊的int来处理,它们很多时候是相通的
发表于 2018-03-23 19:53:28 回复(0)
选择的答案都不正确,返main函数里规定了char c2来接fun()返回值,可以看出fun()的返回值类型是char类型,但return '9'-(ch-'0')返回的是int型数据,所以不能通过编译。
发表于 2015-08-23 20:47:57 回复(2)

A选项个人理解:字符就是对应的0-127的ASCII值,是一个字节的整型,可以隐式转换提高精度转为int类型。试了一下也没报错或警告。

发表于 2024-06-14 10:18:54 回复(0)
A选项就是字符和整形转换?通过ASCII码?
发表于 2024-03-09 20:10:23 回复(0)
注意是减去字符对应的AscII码 要用' '
发表于 2023-11-08 19:46:20 回复(0)
好家伙,这么搞。虽然结果对,不严谨啊
发表于 2023-03-11 16:33:42 回复(0)
nn的,答案有时A对,有时A又不对

发表于 2022-11-05 13:51:18 回复(0)
打印结果不是打印字符串,是要阿拉伯数字,所以参与被减数运算的需要是字符
发表于 2022-08-17 14:37:47 回复(0)