阅读以下C代码,回答问题1和问题2,将解答填入答题纸的对应栏内。 【C代码1】 #include<stdio.h> int main() { int a, tmp, b=0; scanf(“%d”,&a); tmp=a<0?-a

admin2020-05-13  26

问题 阅读以下C代码,回答问题1和问题2,将解答填入答题纸的对应栏内。
【C代码1】
#include<stdio.h>
int main()

    int a,  tmp,  b=0;
    scanf(“%d”,&a);
    tmp=a<0?-a:a;
    while  (tmp)  {
    b=b*10+tmp%10;
    tmp=tmp/10;
    }
    if(a==b ||-a==b)
    printf(“Palindromic number.\n”);
    printf(“a=%d b=%d\n”,a,b),
    return 0;

写出C代码2运行时的输出结果。

选项

答案Passed,points=4 Passed,points=1 Passed,points=1 Passed,points=1 Failed

解析 本题考查C程序基本结构的理解和应用。
    C代码1中,语句“tmp=a<0?-a;a”的作用是将所读入整数的绝对值用tmp表示。
    表达式tmp%10的结果为获取tmp所表示整数的个位数字,tmp=tmp/10则去掉该整数的个位数字(从而使整数位数少了1位),由于tmp为非负整数,重复以上两个表达式的计算,就能逐个得到整数的各位数字。表达式b=b*10+tmp%10将取出的各位数字再组成一个整数,其值正好是原整数的逆置。
    如果a与其逆置数相同,则a是回文数。
    C代码2主要考查循环结构以及对switch语句的理解和应用。
    字符的内部表示为其ASCII代码,循环语句中grade的初始值为‘A’,加1后即得到‘B’的代码,因此for语句的循环控制使得grade依次表示了字符‘A"B"C"D"E’和‘F’,在grade表示字符‘F’时结束循环。
    执行switch语句时,如果表达式的值匹配上某个case后面的常量,则执行该case后的语句,遇到break时结束switch语句,否则继续执行下面case之后的语句,直到遇到break或者switch语句结束。当grade为‘A’时,switch语句中case‘A’后的语句将points赋值为4,再由break结束switch;当grade为‘B’时,switch语句中case‘B’后的语句先将points赋值为3,之后再赋值为2,然后再赋值为1,再由break结束switch语句。grade的其他取值类推。
转载请注明原文地址:https://jikaoti.com/ti/i8W7FFFM
0

最新回复(0)