C 最小化代码并获得相同的输出

C 最小化代码并获得相同的输出,c,C,有没有办法缩短这段代码?我的意思是,不要写那么多的台词;我能写几行并且得到相同的输出吗 #include<stdio.h> int main() { int input; printf("Enter Input \n"); scanf("%d",&input); switch(input) { case 1: printf("a"); break; cas

有没有办法缩短这段代码?我的意思是,不要写那么多的台词;我能写几行并且得到相同的输出吗

#include<stdio.h>
int main()
{
    int input;
    printf("Enter Input \n");
    scanf("%d",&input);

   switch(input)
    {
        case 1: 
            printf("a");
            break;
        case 2: 
            printf("b");
            break;
        case 3: 
            printf("c");
            break;
        case 4: 
            printf("d");
            break;
        case 5: 
            printf("e");
            break;
        case 6: 
            printf("f");
            break;
        case 7: 
            printf("g");
            break;
        case 8: 
            printf("h");
            break;
        case 9: 
            printf("i");
            break;
        case 10: 
            printf("j");
            break;
        default:
            printf("Invalid Input");
    }
    return 0;
}
#包括
int main()
{
int输入;
printf(“输入\n”);
scanf(“%d”,输入(&I));
开关(输入)
{
案例1:
printf(“a”);
打破
案例2:
printf(“b”);
打破
案例3:
printf(“c”);
打破
案例4:
printf(“d”);
打破
案例5:
printf(“e”);
打破
案例6:
printf(“f”);
打破
案例7:
printf(“g”);
打破
案例8:
printf(“h”);
打破
案例9:
printf(“i”);
打破
案例10:
printf(“j”);
打破
违约:
printf(“无效输入”);
}
返回0;
}

您可以检查
输入是否介于1和10之间
如果否,请打印您的无效声明

如果是,请打印
'a'+(输入-1)

如果您正在寻找替代方案,可以使用数组。差不多

 char arr [ ] = "abcdefghij";
if ( input >= 1 && input <= 10)
    printf("%c", arr[input -1]);
else
    puts ("Invalid");
然后,你可以像这样做

 char arr [ ] = "abcdefghij";
if ( input >= 1 && input <= 10)
    printf("%c", arr[input -1]);
else
    puts ("Invalid");

if(input>=1&&input我更喜欢不需要额外存储的方式,即数组。ASCII是答案的先决条件。小写
a
的ASCII值为97

#include <stdio.h>

int main() {
    int input;
    printf("Enter Input \n");
    scanf("%2d",&input);

    if (input <= 10 && input >= 1) {
        printf("%c", 'a' + input - 1);
    } else {
        printf("Invalid Input");
    }
    return 0;
}
#包括
int main(){
int输入;
printf(“输入\n”);
scanf(“%2d”,&input);
如果(输入=1){
printf(“%c”,“a”+输入-1);
}否则{
printf(“无效输入”);
}
返回0;
}

到目前为止,您尝试了什么?为什么?它已经编写好了,而且可能会起作用。我只是尝试通过嵌套的案例来压缩它,但这没有帮助much@Baldrick你能详细说明一下比特压缩版本吗:
scanf(“%d”,&input);putchar(input)
。最重要的是:它与EBCDIC一起工作。这具有在具有非连续字符集(如EBCDIC)的平台上工作的优势。他暗示使用数学来计算字母。您可以使用字符到整数转换来在字母及其ASCII值之间转换sprint
'a'+(输入-1)
否。只有数字
'0'
-
'9'
保证连续表示。@CimCim:并非所有平台都使用ASCII。这不是一个可移植的解决方案,因为您所依赖的行为不受标准的保证。(实际上,这几乎在任何地方都适用-但这不是重点!)@IsaacCarolWeisberg:主要是大型机。e、 g.IBM System/3,富士通西门子BS2000/OSD。但是,如果在EBCDIC计算机上执行该程序,则该程序中断并不一定是一件坏事。学究们可以添加
\u Static\u assert('Z'-'A'==25,“垃圾/EBCDIC不受支持”)在他们的程序上,然后在字符集上做算术。我不明白。回答得好。我也可以用同样的方法来做,我可以使用假设,比如C实现使用ASCII,只要你陈述这些假设。此答案假定为ASCII(并且确实提到ASCII),但既不承认C实现可能使用ASCII以外的字符集,也不明确指出ASCII是此答案正确的先决条件。工程的一部分是说明要求。此外,不需要硬编码的
96
。最好使用
'a'-1
,因为代码可以用于a到j连续的任何字符集,而不仅仅是ASCII。@EricPostPhishil先生,我还年轻,还在学习,是工程学的候选人。所以,我还没有像你那样有过辉煌的经历。我将在心里记下工程的一部分是说明要求。从现在开始。谢谢你突出的观点。