C语言基本数据类型及运算题库 下载本文

5. 以下程序的输出是什么?

#include void main ( ) {

int i;

unsigned int j; i= ~0; j= ~0;

printf (\}答:

输出结果为:

i=-1 j=-1

6. 使用运算符++可以把以下3个语句写成一个语句。请设法写出这个语句,并编程上机验证结果。

y=y+1; z=x+y; x=x+1; 答:

可使用语句: z=(x++)+(++y);

7. 假定输入的数据流如下:

23.456789 12.23 567 hello F 34.32

为了把第二个数赋给变量second,把第三个数赋给变量third,把字符’F’赋给变量ch。问scanf( )函数的表示形式是什么?

解:scanf (\

8. 找出并更正以下程序中的错误。 #include

void main ( ) {

double pound; double kilograms; scanf (“%f”,pound); kilogram=pound/2.2;

printf (“%d pounds equals %d kilograms\\n”,pounds,kilograms); } 答:

正确的程序如下: #include void main ( ) {

double pound;

}

double kilograms;

scanf (\输入输出double型数,要使用格式符%lf */ kilograms=pound/2.2;

printf (\

9. 语句printf(\的输出结果是 。 答案:Re’CH’you

10. 说明下面程序的输出结果:

#include void main() {

int x='f';

printf(\}

答:输出大写字母G。因为x-’a’是字符常量’f’的ASCII码值减去字符常量’a’的ASCII码值。结果是5,加1后为6。于是’A’+6得到的是大写字母G的ASCII码值。按格式“%c”输出,即是字母G。

11. 分析下面程序的输出结果。

#include void main( ) {

int x,m,n,a,b; m=n=a=b=8;

x=(m=a>b)&&(n=a>b);

printf(\}

【解】输出结果是:

x=0,m=0,n=8

这里,变量m、n、a、b初始值都是8。语句

x=(m=a>b)&&(n=a>b);

把逻辑表达式(m=a>b) &&(n=a>b)的值赋给变量x。逻辑运算符&&左右两边都是赋值表达式:左边是把关系表达式a>b的值赋给变量m;右边是把关系表达式a>b的值赋给变量n.

在计算这个逻辑表达式取值时,左边的关系表达式a>b不成立,因此取值为0。也就是说,变量m的值为0,所以&&左边的条件取值为假。于是,C语言不再去计算这个逻辑表达式右边的条件,而直接把逻辑值0赋给变量x。正因为没有去计算右边表达式的取值,所以并没有做把关系表达式的a>b的值赋给变量n的操作。因此变量n仍保持它原有的值8。

12. 执行下面的程序后,变量b里的值是什么? #include void main( ) {

int x =35; char c='A'; int b;

b=((x&15)&&(c<'a')); printf(\}

【解】这里是要把逻辑表达式(x&15)&&(c<‘a’)的值赋给变量b。该逻辑表达式进行的是逻辑与(“&&”)运算。它的左边是一个位逻辑表达式,右边是一个关系表达式。

先来看左边的x&15。从图3- 4看出,运算结果是3,即是逻辑真,取值为1。

X=35: 0 0 15: 0 0 & 0 0 0 0 0 0 0 0 0 0 0 0 1 1 结果: 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 图3-4 位逻辑运算示意

再来看右边的关系表达式c<‘a’。由于变量c里存放的是’A’,它的ASCII码值

(65)小于’a’的ASCII码值(97)。因此,该关系成立,运算结果为1。 所以,整个逻辑表达式的结果是1。因此,程序执行后,变量b里的值是1。

13. 以下程序的执行结果是什么?为什么?

#include main ( ) {

long a=32767; long b; b=a+1;

printf (\}

解:这里都是长整型数,存储一个数的位数是32,故直接相加即可。 所以,本程序的执行结果为:a=32767,b=32768

14. 执行以下程序时输入:

1234567 请写出程序运行结果。 #include void main( ) {

int x,y;

scanf(\ printf(\}

解:scanf ( )函数中第一个格式说明为“-”,表示接受两个数字即12赋给x;第二个格式说明为“%*2s”,表示接受两个数字不赋给任何变量,即跳过34;第三个格式说明为

“”,表示接受一个数字即5赋给y。所以程序输出为:

x=12,y=5

15. 阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

#include void main() {

int i; float f; char c;

scanf(\

printf (\}

当输入100a1.563时,程序的运行结果是: 当输入1.23456时,程序的运行结果是: 答案:当输入100a1.563时,程序的运行结果是:

i= 100, c=a, f=1.563000

当输入1.23456时,程序的运行结果是:

i= 1, c= ., f=23456.000000

16. 阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

#include void main() {

int i = 010, j = 10, k = 0x10;

printf (\}

运行结果是:

答案:运行结果是:

i= 8, j= 10, k= 16

17. 阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

#include void main() {

int a = 7, b = 9;

a = a + b; b = a - b; a = a - b; printf (\}

运行结果是:

答案:运行结果是:

a= 9, b= 7