C语言每日练习

1.程序运行的结果为( )
#include<stdio.h>
int main()
{
int x=1.9;
x++;
printf("%d",x);
}
A、1    B、2    C、2.9    D、3

答案:
 解析:简单题,考察的是你对于整型变量的理解整型变量如果初始值被赋予小数,那么在vs编译器上就会直接将小数部分给舍去,也就是说,代码1中给x赋予1.9,实际上只是给x赋予1,接着走到x++,使x=2,所以最后打印出来的结果就是2,选B 


2.设有整型变量a,b,c,它们的初值是1,运行表达式++a||++b&&++c后,a,b,c的值分别是 ()
A、2,1,1       B、2,2,2     C、2,2,1      D、2,1,2
提示:考察||和&&运算的运用

答案:A
解析:易错题,考察||(或)运算和&&(且)运算的运用,||运算只要一边为真即为真,所以当我们判定完一边为真的时候另一边就不用再判定,计算机会直接跳过。&&运算,两边都为真才为真,只要有一边为假就为假,所以一旦发现一边为假则不再判定另一边。
跟据规则走,首先遇到的是++a,先++后使用,a=2,2为真,是||运算,所以后面的部分不进行,连带着&&也没有进行,所以最后a=2,b=1,c=1,选A
 


3.程序运行的结果为( )
#include<stdio.h>
int main()
{
    int x = 5;
    int i = 0, j = 0, k = 0;
    x = (i = 4, j = 16, k = 32);
    printf("%d %d %d %d", x,i,j,k);
}
 A、5,4,16,32     B、5,0,0,0    C、32,4,16,32    D、32,0,0,0
提示:逗号运算符

答案:C
解析:考察你对于逗号表达式的理解,逗号表达式从左往右进行,整个表达式的结果为最后一个表达式。
从左往右走,首先给i赋值为4,接着给j赋值为16,最后来到最后一个表达式,k=32,而根据逗号表达式的运行可知整个表达式的结果也是k=32,所以最后是x=k=32,同时对x和k赋值,所以x和k最后均为32,综上所述,i=4,j=16,x=k=32,所以最后打印出来的结果为32,4,16,32选C
 


4.程序运行的结果为( )
#include <stdio.h>
int main()
{
int x = 072;
printf("%d\n", x+1);
}
A、72      B、73       C、115       D、59
提示:八进制

答案:D
解析:基础题,考察你对细节的掌控,八进制数的前缀为0,十六进制的前缀为0x,十进制数没有前缀。所以该程序赋值给x的值是一个八进制的72,转换为十进制就是2*1+7*8=58,最后打印出x+1即59,故选D
 


5.若想定义 int 型变量 a,b,c,d 并都赋值为 1,以下写法中错误的是
A、int a=b=c=d=1;  

B、int a=1, b=1, c=1, d=1;  

C、int a,b,c,d; a=b=c=d=1;  

D、int a,b,c,d=1; a=b=c=d;

答案.A
解析:一个一个走,先看A选项,A选项的操作并没有定义b,c,d这三个整型变量,故A错误,B选项挨个定义,没有问题,B正确。C选项全部定义完了再赋值,C正确,D选项,先定义a,b,c,d四个变量的同时给d赋值为1,最后令a=b=c=d,令a,b,c与d相等,所以最后,a,b,c,d均为1,D正确,综上所述,选A
 

6.程序运行的结果为( )
#define ADD(x) x+x
#include<stdio.h>
int main()
{
    int m = 1, n = 2, k = 3;
    int sum = ADD(m + n) * k;
    printf("sum = %d", sum);
}
A、 sum=9 B、 sum=10 C、 sum=12 D、 sum=18
提示:宏定义

答案:B
解析:考察你对宏定义的理解。宏定义在预处理阶段就会被处理,也就是它走不到编译的阶段它就会被执行,因此我们可以粗略地把宏定义当作是一种替换。
比方说#define abc 5,那么abc*6,就可以直接看作5*6,不需要管其他运算符,你先替换完再说。这道题将ADD(x)宏定义为x+x,因此sum=1+2+1+2*3,不用管别的,你就先替换,所以sum=10,答案选B

宏定义相关知识点:https://blog.csdn.net/qq_41660119/article/details/123907404

7.程序运行的结果为( )
#include<stdio.h>
void incre()
{
    static int x = 1;
    x *= x + 1;
    printf("%d ", x);
}
int main()
{
    int i;
    for (i = 1; i <= 2; i++) incre();
}
 A、 3 3 B、 2 2 C、 2 6 D、 2 5

答案:C
解析:观察代码构成发现,代码由一个main函数和一个incre函数构成,而main函数的主要作用就是调用了两次incre函数进行对应地操作。所以关键在incre,incre函数首先定义了一个x并将它初始化为1,但特别地是,这个x被static所修饰,因此,这个x的储存是放在静态区中的,故x是不会再被重定义,它在程序运行的一开始就会被定义且生命周期一直到程序结束。
由于次数少,所以直接进行代入,第一次进入incre(),x*=x+1,令x=2,故打印2,第二次进入,此时x=2,x*=x+1,令x=6,故打印6,因此答案为C

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值