C语言程序设计题库 第三章:标准设备的输入输出

一、单选题

1、以下程序的运行结果是________。

#include <stdio.h> 
int main()
{   int a=12345,b=1234; 
    float c=34567.899; 
    printf("%4d\n",a); 
    printf("%d\t%s\n",b,"Welcome"); 
    printf("%10.2f\n",c); 
    return 0;
}

A.
12345
1234____Welcome
__34567.90

B.
12345
1234_______Welcome
__34567.90

C.
1234
1234____Welcome
__34567.89

D.
2345
1234_______Welcome
__34567.899

解析:答案选A在这里插入图片描述

2、已有如下程序定义和输入语句,要求输入变量a,b,c,d的值分别为 10,‘a’,‘b’,1234.56,当从屏幕的第一列开始输入数据,程序的输出如下:
a=10
b=a
c=b
d=1234.560000
则下列正确的数据输入方式是________。

#include <stdio.h> 
int main()
{   int a; 
    char b,c; 
    double d; 
    scanf("a=%d",&a); 
    getchar(); 
    scanf("%c",&b); 
    scanf("c=%c",&c); 
    scanf("%lf",&d); 
    printf("a=%d\nb=%c\nc=%c\nd=%f\n",a,b,c,d); 
    return 0;
}
A. a=10<回车> a<回车> c=b<回车> 1234.56<回车> B. a=10<回车> 'a'<回车> c='b'<回车> 1234.56<回车> C. 10<回车> ab<回车> 1234.56<回车> D. a=10a <回车> c=b1234.56<回车>

解析:答案选A
在这里插入图片描述
格式控制字符%c输入字符时不需要单引号,源程序中有一行getchar(),D选项中a=10a有误,10后紧跟字符a,这样字符a会被getchar()读入并舍弃,而之后的字符“回车”会被变量b读入。选项A正确。

3、执行程序,并按下列方式输入数据(从第1列开始输入)
12<回车>
34<回车>
以下程序的运行结果是________。

#include <stdio.h> 
int main()
{   char a,b,c,d; 
    scanf("%c%c",&a,&b); 
    c=getchar(); 
    d=getchar(); 
    printf("%c%c%c%c\n",a,b,c,d); 
    return 0;
}

A、1234
B、12
C、12
3
D、12
34

解析:答案选C
%c只会读取一个字符,输入12,只会读取1而不是12,请看图示:
在这里插入图片描述

4、以下程序的运行结果是________。

#include <stdio.h>
int main()
{   char c='A';
   int n=66,tmp;
   float f=23.456;
   printf("c=%d\tc=%o\n", c,c);
   printf("n=%c\tn=%x\n", n,n);
   tmp=printf("f=%5.1f\tf=%3.2f\n",f,f);
   printf("%d", tmp);
   return 0;
}
A、c=65 c=101 n=B n=42 f=_23.5_f=23.46 16 B、c=65 c=101 n=B n=42 f=_23.5_f=.46 13 C、c=65 c=101 n=B n=42 f=_23.5_f=0.46 14 D、c=65 c=101 n=B n=42 f=_23.5_f=.46 14

解析:答案选A
在这里插入图片描述

有关格式化输入输出的知识点总结如下

在这里插入图片描述
printf()的返回值:返回成功写入的字符个数。(\n也算)
在这里插入图片描述

scanf()的返回值:返回正确输入参数的个数。
在这里插入图片描述

5、语句printf(“a\bre’hi’y\\bou\n”);的输出结果是________。
(说明:'\b’是退格符)。
A、a\bre’hi’y\\bou
B、a\bre’hi’y\bou
C、re’hi’you
D、abre’hi’y\bou

解析:答案选B
在这里插入图片描述

6、以下程序的输出结果是________。

int main()
{   float x=3.6;
    int i;
    i=(int)x;
    printf("x=%f,i=%d\n",x,i);
    return 0;
}
A、x=3.600000,i=4 B、x=3,i=3 C、x=3.600000,i=3 D、x=3 i=3.600000

解析:答案选C
在这里插入图片描述

7、下列语句的结果是________。

int main()
{   int j;
    j=3;
    printf("%d,",++j);
    printf("%d",j++);
    return 0;
}

A、3,3
B、3,4
C、4,3
D、4,4

解析:答案选D
在这里插入图片描述

8、double x; scanf(“%lf”,&x);不可以正常赋值给x变量的常量是________。
A、123
B、100000
C、1.23e4
D、“abc”

解析:答案选D
"abc"是字符串。

9、putchar函数可以向终端输出一个________。
A、整型变量表达式值
B、实型变量值
C、字符串
D、字符或字符型变量值

解析:答案选D
scanf和printf可以针对各种各样类型的数据,比如整型、字符、浮点型都行,但getchar和putchar只针对字符。

10、运行以下程序,输入:a,b<回车>,则程序的运行结果是________。

#include <stdio.h>
int main()
{   char c1,c2;
    c1=getchar();
    c2=getchar();
    putchar(c1);
    putchar(getchar());
    return 0;
}

A、a,b
B、ab
C、a,
D、,b

解析:答案选B
在这里插入图片描述

二、填空题

11、以下程序的功能:输入半径r,求半径为r的圆的面积和半径为r的球的体积,请填空。

#include <stdio.h>
#define PI 3.14
int main()
{   double r ,area , volume;
    int t;
    printf("please input r:\n");
    t=scanf("%____", ____);
    if ( t____ && r>=0 )
    {   area=PI*r*r;
        volume=____/3*PI*r*r*r;
        printf("The area is %.2f.\n", area);
        printf("The volume is %.2f.\n", volume);
    }
    else
        printf("Input error!\n");
    return 0;
}

解析:答案是:(1) lf (2) &r (3) >0或>=1或==1 (4) 4.0或(float)4或(double)4
代码思路:
1、输入的半径应该是浮点数;
2、scanf的返回值作为if语句的条件进行判断,如果成功输入一个浮点数,scanf函数返回值为1,进入if语句,进行面积计算,输入错误,进入else语句,程序停止;
3、进入if语句开始计算面积:S=Πrr;体积:V=4.0/3Πrrr,注意此处的除法运算/要想得到一个浮点数,/左边应该输入浮点数,而非整数4。

12、getchar()函数,执行一次只能接收一个____。

解析:答案是:字符

13、下列语句输出的结果是____,int a=-1; printf(“%x”,a);

解析:答案是:ffffffff
运算是用的补码,但格式化打印是打印的原码,%x输出的是无符号十六进制数。
原码:1000 0000 0000 0000 0000 0000 0000 0001(4个字节)
反码:1111 1111 1111 1111 1111 1111 1111 1110(4个字节)
补码:1111 1111 1111 1111 1111 1111 1111 1111(4个字节)
A=-1在计算机中存储为补码1111 1111 1111 1111 1111 1111 1111 1111,无符号十六进制打印,则最高位变为数值位,不表示正负,十六进制中,每1111=f,所以1111 1111 1111 1111 1111 1111 1111 1111=ffffffff

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一直学不会编程的小徐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值