单选题阅读以下程序:#include main(){ int case; float printF; printf("请输入2个数:"); scanf("%d %f",&case,&printF); printf("%d %f",case,printF);}该程序编译时产生错误,其出错原因是(  )。A 定义语句出错,case是关键字,不能用作用户自定义标识符B 定义语句出错,printF不能用作用户自定义标识符C 定义语句无错,scanf不能作为输入函数使用D 定义语句无错,printf不能输出case

题目
单选题
阅读以下程序:#include main(){ int case; float printF; printf("请输入2个数:"); scanf("%d %f",&case,&printF); printf("%d %f",case,printF);}该程序编译时产生错误,其出错原因是(  )。
A

定义语句出错,case是关键字,不能用作用户自定义标识符

B

定义语句出错,printF不能用作用户自定义标识符

C

定义语句无错,scanf不能作为输入函数使用

D

定义语句无错,printf不能输出case的值


相似考题
更多“阅读以下程序:#include main(){ int case; float printF; printf("请输入2”相关问题
  • 第1题:

    若从键盘输入34,则以下程序输出的结果是______。 include main() {int a;scanf("%d",&am

    若从键盘输入34,则以下程序输出的结果是______。

    include<stdio.h>

    main()

    { int a;

    scanf("%d",&a);

    if(a>30)printf("%d",a);

    if(a>20)printf("%d",a);

    if(a>10)printf("%d",a);

    }


    正确答案:343434
    343434

  • 第2题:

    以下程序段的运行结果是( )。 include main() {int x=2,y=1: switch(x) {case 1: switch

    以下程序段的运行结果是( )。 include<stdio.h> main() {int x=2,y=1: switch(x) {case 1: switch(y) {case 0:printf("x=2,y=1\n");break; case 1:printf("y=1\n");break; } case 2:printf("x=2\n"); } }


    正确答案:x=2
    x=2

  • 第3题:

    以下程序的输出结果是【 】。include main() {int j,a[]={1,3,5,7,9,11,13,15},*P=a+5; f

    以下程序的输出结果是【 】。

    include <stdio.h>

    main()

    { int j,a[]={1,3,5,7,9,11,13,15},*P=a+5;

    for(j=3; j;j-)

    { switch(i)

    { case 1:

    case 2: printf("%d",*p++); break;

    case 3: printf("%d",* (-p));

    }

    }

    }


    正确答案:9911
    9911 解析:switch语句的一般格式如下:
    switch(表达式)
    {case 常量表达式 1:语句1
    case 常量表达式 2:语句2

    case 常量表达式 n:语句n
    default:语句n+1}
    switch语句在执行的先计算表达式的值,当表达式的值与某—个case后面的常量表达式的值相等时,就执行此case后面的语句系列。由于“case常量表达式”只是起语句标号作用,并不是在该处进行条件判断,所以当根据switch后面表达式的值找到匹配的入口标号时,就从此标号开始执行下去,不再进行判断,直到在执行某个case分支后,遇到break语句才会跳出switch结构,即终止switch语句的执行。
    本题定义并初始化了一个一维数组a,同时将指针变量p指向了a[5]的地址。在for循环中,首先j=3,执行case3后面的语句,由于--p是将p的地址前移一位,所以*(--p)的值为a[4]的值,即输出9;当j=2时,执行case2后面的语句。由于 *p++中++与*同优先级,结合方向为自右而左,因此它等价于*(p++),作用是先得到p指向的变量的值(即*p),然后再使p+1赋给p,所以j=2时先输出a[4]的值9,再使得p指向a[5]的地址;当j=1时,执行case1后面的语句,由于case1后面没有终业语句,所以继续执行case2后面的语句,此时*p的值即a[5]的值,所以输出11,然后p地址后移。故本程序的输出结果为9911。

  • 第4题:

    以下程序的输出结果是( )。 include void fun(int x) {if(x/2>0)fun(x/2); printf("%d",

    以下程序的输出结果是( )。

    include<stdio.h>

    void fun(int x)

    { if(x/2>0)fun(x/2);

    printf("%d",x);

    }

    main()

    {fun(3);printf("\n");

    }


    正确答案:13
    13 解析:函数fun是一个递归函数。执行fun(3);,x=3,x/2=1>0,又调用f(1),此时,x=1,x/2=0,不满足继续递归调用的条件,输出1,返回到fun(3)中,输出3。所以本题的输出结果为13。

  • 第5题:

    有以下程序:include main( ){ unsigned int a; int b=-1;a=b;printf(" % u", a);程序

    有以下程序: #include <stdio. h> main( ) { unsigned int a; int b=-1; a=b; printf(" % u", a);程序运行后的输出结果是( )。

    A.-1

    B.65535

    C.32767

    D.-32768


    正确答案:B
    解析:不同类型的对象进行混合运算时,需要进行数据的类型转换,其转换方向为int→unsigned→long→double。本题程序中的变量b为int型,需要转换为unsigned型。int型变量的数值范围为-32768~32767,最高位为符号位,而unsigned所表示的数的范围为0~65535,它的最高位为数值位。由于内存中是以补码形式存储数据的,所以整型数-1在内存中表示为16个1,最高位的1表示符号为负,将它转换为unsigned类型,即将原符号位的1看成数值,所以得到16个数值1,即65535。

  • 第6题:

    以下程序运行后的输出结果是( )。 include main() { int x=20; printf("%d", 0

    以下程序运行后的输出结果是( )。

    include<stdio.h>

    main()

    { int x=20;

    printf("%d", 0<x<20);

    printf("%d\n", 0<x && x<20);

    }


    正确答案:10
    10 解析:表达式0x20,首先计算0x,其值为1,再计算120,其值为1,输出1;表达式0x && x20,0x为1,x20为0,再计算1 && 0,其值为0,输出0。所以输出结果为10。

  • 第7题:

    以下程序的输出结果是【】。 include main() {struct stru {int a; float b; char d[4]; }

    以下程序的输出结果是【 】。

    include<stdio.h>

    main()

    { struct stru

    { int a;

    float b;

    char d[4];

    };

    printf("%d\n",sizeof(struct stru));

    }


    正确答案:10
    10 解析:结构体变量占用内存空间的字节数是结构体各分量占用内存空间的字节数的总和。int型变量占用2字节,float型变量占用4字节,char型占用1字节,char d[4]是含有4个元素的char型数组,占用4字节。sizeof(struct stru)是计算结构体变量占用内存空间的字节数,2+4+4=10。

  • 第8题:

    下面的程序在编泽时产生错误,其出错原因是()。includemain(){int 1_case;float printF;

    下面的程序在编泽时产生错误,其出错原因是( )。 #include<stdio.h> main() {int 1_case;float printF; printf("请输入2个数:"); scanf ("%d%f",&1_case,&printF); printf("%d%f\n",1_case,printF); }

    A.定义语句出错,1_case不能作为变量名

    B.定义语句出错,printF不能用作用户自定义标识符

    C.定义语句无错,scanf不能作为输入函数使用

    D.定义语句无错,printf不能输出1_case的值


    正确答案:A
    解析:C语言变量名可由数字,字母,下划线构成,但首字符不能为数字。

  • 第9题:

    阅读以下程序

    #include<stdio,h>

    main( )

    { int case;float printF;

    printf(“请输入2个数:”);

    scanf(“%d%f”,&zase,&rintF);

    prinff(“%d%f\n”,case,printF);

    }

    该程序在编译时产生错误,其出错原因是

    A.定义语句出错,ca8e是关键字,不能用作用户自定义标识符

    B.定义语句出错,pfintF不能用作用户自定义标识符

    C.定义语句无错,scanf不能作为输入函数使用

    D.定义语句无错,printf不能输出case的值


    正确答案:A
    解析:标识符不能与c编译系统已经预定义的、具有特殊用途的保留标识符(即关键字)同名,否则程序在编译时会出现错误。题目源程序中使用了已经预定义的关键字car,所以将出现错误。

  • 第10题:

    若有以下定义:float x;int a,b,c=2;,则正确的switch语句是( )

    A.switch(x) { case 1.0:printf("*\n"); case 2.0:printf("**\n"); }

    B.switch(int(x)) { case 1:printf("*\n"); case 2:printf("**\n"); }

    C.switch(a+b) { case 1:printf("*\n"); case 1+2:printf("**\n"); }

    D.switch(a+B){ case 1:printf("*\n"); case c:printf("**\n"); }


    正确答案:C

  • 第11题:

    有以下程序: include main() {int a=6,b=7,m=1;switch(a%2){ case 0:m++;break;case 1

    有以下程序: #include<stdio.h> main() { int a=6,b=7,m=1; switch(a%2) { case 0:m++;break; case 1 :m++; switch(b%2) { defaut:m++; case0:m++;break; } } printf("%d\n",m); }

    A.1

    B.2

    C.3

    D.4


    正确答案:B
    解析:本题考查swish语句。第一个switch语句,因为a=6,a%2=0,所以执行case 0,将m加1,遇到break语句跳出switch语句,结束循环。

  • 第12题:

    阅读以下C代码,回答问题1至问题3,将解答填入答题纸的对应栏内。【C代码1】 float adjustSalary(int service_year,int age,float salary) { if( service_year <=5 ) { if( age > 30 ) salary *= 1.2; } else salary *= 2.0; return salary;} 【C代码2】 void foo(int coin) { switch (coin) { case 1: printf("Cent\n"); case 5: printf("Nicke1\n");break; case 10: printf("Dime\n"); case 25: printf("Quarter\n"); }} 【C代码3】 int getSum(int n){ int t, i = 0, sum = 0; while ( i < n ) { scanf("%d", &t); if( t<0 ) continue; sum += t; i++; } return sum;} 问题:3.1 【问题1】(3分)对于【C代码1】,写出下面的函数调用后x1、x2和x3的值。x1 = adjustSalary(1,25,9000.0);x2 = adjustSalary(8,32,7000.0);x3 = adjustSalary(5,41,5000.0); 问题:3.2 【问题2】(6分)(1)写出函数调用为foo(1)的输出结果;(2)写出函数调用为foo(5)的输出结果;(3)写出函数调用为foo(10)的输出结果;(4)写出函数调用为foo(25)的输出结果。 问题:3.3 【问题3】(6分)(1)简要说明【C代码3】中的函数getSum()的功能;(2)程序员小王将函数getSum改写后得到下面的函数getSum_v2(即用for语句来描述循环)。请问,getSum_v2的功能是否与【C代码3】的getSum完全相同,若不同,请说明原因。int get Sum_v2(int n){int t,i=0,sum=0;for(i=0;1 scanf("%d",&t);if(t<0)continue;sum+=t;}return sum;}


    答案:
    解析:
    【参考答案】(1)x1=9000.000000(2)x2=14000.000000(3)x3=6000.000000【参考答案】(1)foo(1):Cent Nickel(2)foo(5):Nickel(3)foo(10):Dime Quarter(4)foo(25):Quarter
    【参考答案】(1)函数getSum()是求n个不小于0的整数之和。(2)函数getSum_v2的功能与函数getSum不同,getSum()是求n个不小于0的整数之和,计算和的数目总数是n个,而getSum_v2是总共输入了n个数,这n个数种有大于等于0,也有小于0的数,最终只把大于等于0的数进行求和,因此最终计算的和的个数有可能是小于n的。
    【解析】

    【解析】 对于x1,service_year=1,age=25,salary=9000.0,首先判断service_year<=5,因此再判断age<30,不进行任何运算,salary仍为9000.0,由于salary为float类型数据,因此输出为9000.000000。 对于x2,service_year=8,age=32,salary=7000.0,首先判断service_year>5,因此直接进行else中的运算,salary=7000.0*2.0=14000.0,由于salary为float类型数据,因此输出为14000.000000。 对于x3,service_year=5,age=41,salary=5000.0,首先判断service_year<=5,因此再判断age>30,进行运算salary=5000.0*1.2=6000.0,由于salary为float类型数据,因此输出为6000.000000。【解析】foo(1):coin=1,执行printf(“Cent\n”),输出Cent并回车,继续执行printf(“Nickel\n”),输出Nickel并回车,再执行break,结束foo函数。foo(5):coin=5,执行printf(“Nickel\n”),输出Nickel并回车,再执行break,结束foo函数。foo(10):coin=10,执行printf(“Dime\n”),输出Dime并回车,继续执行printf(“Quarter\n”),输出Quarter并回车,结束foo函数。Foo(25):coin=25,执行printf(“Quarter\n”),输出Quarter并回车,结束foo函数。【解析】(1)函数getSum()是求n个不小于0的整数之和。(2)函数getSum_v2的功能与函数getSum不同,原因:在getSum中,当t<0时,继续运行scanf函数获得t,而不会运行i++运算,i的值不会改变,最终会获得n个不小于0的整数并求和;而在getSum_v2中,当t<0时,首先进行i++,再继续scanf函数,因此当输入的数出现负值时,会导致最终运算的值可能少于n个。

  • 第13题:

    请阅读以下程序:includemain(){int x=1,y=0,a=0,b=0;switch(x){case 1:switch(y){case

    请阅读以下程序: #include<stdio.h> main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0:a++;break;} case 2: a++,b++;break;} printf("a=%d,b=%d\n",a,b); 上面程序的输出结果是

    A.a=2,b=1

    B.a=1,b=1

    C.a=1,b=0

    D.a=2,b=2


    正确答案:A

  • 第14题:

    *((int *)pval)/=2; //我想问一下,这个语法怎么理解,太复杂了 具体代码如下。

    #include "stdio.h"void half(void *pval,char type);main(){ int i=20; long l=100000; float ff=12.456; double d=123.044444; printf("%d\n",i); printf("%ld\n",l); printf("%f\n",ff); printf("%lf\n",d); half(&i,'i'); half(&l,'l'); half(&ff,'ff'); half(&d,'d'); printf("\n%d",i); printf("\n%ld",l); printf("\n%f",ff); printf("\n%lf",d); return 0; }void half(void *pval,char type){ switch(type) { case 'i': { *((int *)pval)/=2; //我想问一下,这个语法怎么理解,太复杂了 break; } case 'l': { *((long *)pval)/=2; break; } case 'ff': { *((float *)pval)/=2; break; } case 'd': { *((double *)pval)/=2; break; } } }


    *((int *)pval)/=2; 一步步讲解: 1,(int*)pval 是把pval指针强制类型转化成 int*,这时pval可看作是个指向int的指针。为了方便说明我们可以int *p = (int*)pval;以后就可以用p代替(int*)pval了。 2,*(p) /=2;也就是 *p /= 2; 这里括号可以去掉了。 /=类似+=、*=, *p /=2;就是 *p = *p/2;

  • 第15题:

    以下程序的运行结果是( )。

    main()

    (int a=2,b=7,c=5;

    switch(a>0)

    {case 1:switch(b<0)

    {case 1:switch(");break;

    case 2:printf("!");break;

    }

    case 0:switch(c==5)

    {case 0:printf("*");break;

    case 1:printf("");break;

    case 2:printf("$");break;

    }

    default:printf ("&");

    }

    printf("\n");

    }


    正确答案:#&
    #& 解析:刚开始时,switch后面的表达式a>0为真(1),与case1匹配,然后执行case1后面的switch语句,表达式b0值为0,没有与其匹配的语句,返回外层,因为外层没有break语句,顺序执行case 0后面的switch语句,表达式“c==5”值为1,与其后面的case1匹配,因此输出#,遇到break返回外层,又因为外层没有break语句,顺序执行default后的语句,输出&。

  • 第16题:

    有以下程序: include main ( ) int i;for(i =0;i <3 ;i ++ )switch (i)case 0: printf

    有以下程序: #include <stdio.h> main ( ) int i; for(i =0;i <3 ;i ++ ) switch (i) case 0: printf(" % d" ,i); case 2: printf(" % d" , i); default: printf( "% d" , i);程序运行后的输出结果是( )。

    A.22111

    B.21021

    C.122

    D.12


    正确答案:C
    解析:程序中没有使用break终止switch语句的执行。当i:0时,执行第一个case语句,因为它后面没有break,所以一直到执行完default语句结束,输出3个0,再执行下一循环。所以只有选项C)正确。

  • 第17题:

    以下程序的输出结果是()。include main(){int i; for(i=1;i<5;i++) {if(i%2) printf("*

    以下程序的输出结果是( )。 #include <stdio.h> main() { int i; for(i=1;i<5;i++) { if(i%2) printf("*"); else continue; printf("#"); } printf("$\n");

    A.*#*#*#$

    B.#*#*#*$

    C.*#*#$

    D.#*#*$


    正确答案:C
    解析:程序中当i不能整除2时输出*,然后输出#,能够整除2时将结束本次循环,进入到下一次循环。当循环结束后,输出$。

  • 第18题:

    以下程序的功能是:将输入的正整数按逆序输出。例如:若输入135则输出531。请填空。

    include <stdio.h>

    main()

    { int n, s;

    printf("Enter a number:"); scanf("%d",&n);

    printf("Output: ");

    do

    { s=n%10; printf("%d",s); [ ]; }

    while (n!=0);

    printf("\n');

    }


    正确答案:n/=10或n=n/10或n=(n-s)/10或n=(n-n%10)/10
    n/=10或n=n/10或n=(n-s)/10或n=(n-n%10)/10 解析:根据s=n%10可知:此操作可以将输入的数据n的最后—位赋给s,根据题目的要求是要将输入的数据逆序输出,现在已经将原数据的个位输出,在其后如果执行n/=10司将原数据的个位数去掉,满足do....while的条件继续s=n%10操作,此时可求出十位上的数进行输出,继续执行n/=10操作,与上相同最后将百位上的数进行输出,所以该题答案为: n/=10。

  • 第19题:

    针对一下C语言程序,请按要求回答问题。 已知weekday. c源程序如下: include include

    针对一下C语言程序,请按要求回答问题。

    已知weekday. c源程序如下:

    include<stidio. h>

    include<conio. h>

    / *主函数* /

    Int main()

    {

    Char letter;

    Printf("please input the first letter,"Y'to exit!\n");

    While((letter=getch())!="Y")//当输入字母为Y时结束

    {

    Switch(letter)

    {

    Case'S':

    Printf("%c\n",letter);

    Printf("please input second letter\n");//输入第二个字母

    If((letter=getch())=='a')

    Printf("Saturday\n");

    Else if(letter=='u')

    Printf("Sunday\n");

    Else printf('data error\n);

    Break;

    Case'F':

    Printf("fridaykn");

    Break;

    Case 'M':

    Printf("mondayha");

    Break;

    Case 'T':

    Printf("%c\n",letter);

    Printf("please input second letter\a");//输入第二个字母

    If((letter=getch())=='u')

    Printf("Tuesday\n"):

    Else if(letter=='h')

    Printf("Thursday\n");

    Break;

    Case 'W':

    Printf("Wednesday\n");

    }

    }

    Return 0;

    }

    (1) 画出主函数main的控制流程图;

    (2) 设计一组测试用例,使main函数的语句覆盖率尽量达到100%;

    (3) Main函数的语句覆盖率能否达到100%?如果认为无法达到,需说明原因。


    正确答案:[path1]12 [path2]23 [path3]234522 [path4]236722 [path5]236822 [path6]91022 [path7]111222 [path8]1314 [path9]13141516 [path10]1314171822 [path11]1 314822 [path12]192022 [path13]19822 生成测试用例确保基本路径集中每条路径的执行: path1.输入数据y输出的结果程序结束返回值0 path2.输入数据s输出结果“s输入第二个字母” path3.输人数据s后输入数据a输出结果“Saturday” path4.输入数据s后输入数据u输出结果“sunday” path5.输入数据s后输入数据非a非u输出结果“data erroi” path6.输入数据f输出结果“friday” path7.输入数据m输出结果“monday” path8.输入数据t输出结果“输入第二个字母” path9.输入数据t后输入数据u输出结果“tuesday” path10.输入数据t后输入数据h输出结果“thursday” path11.输入数据t后输入数据非u非h输出结果“data crror” pathl2.输入数据w输出结果“Wednesday"’ path13.输入数据defalt输出结果“data error”
    [path1]1,2 [path2]2,3 [path3]2,3,4,5,22 [path4]2,3,6,7,22 [path5]2,3,6,8,22 [path6]9,10,22 [path7]11,12,22 [path8]13,14 [path9]13,14,15,16 [path10]13,14,17,18,22 [path11]1 3,14,8,22 [path12]19,20,22 [path13]19,8,22 生成测试用例,确保基本路径集中每条路径的执行: path1.输入数据y,输出的结果程序结束返回值0 path2.输入数据s,输出结果“s输入第二个字母” path3.输人数据s后,输入数据a,输出结果“Saturday” path4.输入数据s后,输入数据u,输出结果“sunday” path5.输入数据s后,输入数据非a非u,输出结果“data erroi” path6.输入数据f,输出结果“friday” path7.输入数据m,输出结果“monday” path8.输入数据t,输出结果“输入第二个字母” path9.输入数据t后,输入数据u,输出结果“tuesday” path10.输入数据t后,输入数据h,输出结果“thursday” path11.输入数据t后,输入数据非u非h,输出结果“data crror” pathl2.输入数据w,输出结果“Wednesday"’ path13.输入数据defalt,输出结果“data error”

  • 第20题:

    执行下面程序的正确结果是 ( ) main() {float a=1.9 switch(A) { case 0:printf("0000"); case 1:printf("1111"); case 2:printf("3333"); } printf("%f",A) ; }

    A.1.900000

    B.111133331.900000

    C.33331.900000

    D.00001111233331.900000


    正确答案:B

  • 第21题:

    阅读以下程序: #include<stdio.h> main( ) {int case;float printF; printf("请输人2个数:"); scanf("%d%fl"&case,&printF); printf("%d ofof\n",case,printF); } 该程序在编译时产生错误,其出错原因是( )。

    A.定义语句出错,case是关键字,不能用做用户自定义标识符

    B.定义语句出错,printF不能用做用户自定义标识符

    C.定义语句无错,scanf不能作为输入函数使用

    D.定义语句无错,printf不能输出case的值


    正确答案:A
    本题中定义了整形变量case,但case是关键字,关键字不能用做标识符。单精度printF不是关键字,因为标识符区分大小写。所以A不正确。

  • 第22题:

    有以下程序: include < stdio. h > main ( ) int a=3,b=4,c=5,d=2;if(a>b) if(b>c)printf("%d",

    有以下程序: #include < stdio. h > main ( ) int a=3,b=4,c=5,d=2; if(a>b) if(b>c)printf("%d",d++ +1); else printf( "% d", + + d + 1 ); printf( "% d \n" ,d); 程序运行后的输出结果是( )。

    A.2

    B.3

    C.43

    D.44


    正确答案:A
    解析:C语言规定:else总是与离自己前面最近的if配对,程序中if(a>b)不成立,因此执行prinff("%d\n",d);,输出结果为2。

  • 第23题:

    请阅读以下程序:includemain(){ int x=1,y=0,a=0,b=0;switch(x){ case 1:switch(y){ c

    请阅读以下程序: #include<stdio.h> main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0:a++;break; case 2: a++,b++;break;} printf("a=%d,b=%d\n" ,a,b); 上面程序的输出结果是( )。

    A.a=2,b=1

    B.a=1,b=1

    C.a=1,b=0

    D.a=2,b=2


    正确答案:A
    解析:switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时则执行default后面的语句。注意:if语句及if嵌套语句的使用。