C_5练习题

答案

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)

  1. 下列叙述中错误的是()。

A.计算机不能直接执行用C语言编写的源程序
B.C程序经C编译程序编译后,生成扩展名为obj的文件是一个二进制文件
C.扩展名为obj的文件,经连接程序生成扩展名为exe的文件是一个二进制文件
D.扩展名为obj和exe的二进制文件都可以直接运行

  1. 下列叙述中错误的是()

A.用户所定义的标识符允许使用关键字
B.用户所定义的标识符应尽量做到“见名知意”
C.用户所定义的标识符必须以字母或下划线开头
D.用户定义的标识符中、大、小写字母代表不同标识

  1. 以下正确的叙述是()

A.宏替换不占用运行时间,只占用编译时间
B.在程序的一行中可以出现多个有效的预处理命令行
C.使用带参数宏定义时,参数的类型应与宏定义时一致
D.宏定义不能出现在函数内部

4.下面正确的字符串常量是()

A. ‘a’
B. ‘376’
C. “\n”
D. 376

  1. 下面叙述中正确的是()。

A.若int a=3, b=2,c=1;f=a>b>c;则f值为真
B.若int m=0, n=1, a=1, b=2,c=3;(m=a>b)&&(n=c>4),则n值为真
C.若int a=2,b=3,c=1;c=a/b;则c的值为真
D.若int a=2,b=3;表达式a>b?a:0的值为真

6.对于变量定义:int a,b=0;下列叙述中正确的是()

A.a的初始值是0,b的初始值不确定。
B.a的初始值不确定,b的初始值是0。
C.a 和b的初始值都是0。
D.a 和b的初始值都不确定。

7,判断变量x、y中有且只有1个值为0的表达式为()

A.!(xy)&&x+y
B. (x
y)&&x+y
C.x*y0
D.x
0&&y!=0

8·假定w、x、y、z、m均为int型变量,有如下程序段:
int w=1,x=2,y=3,z=4,m;
m=(w<x)?w:x;
m=(m<y)?m:y;
m=(m<z)?m:z;
则该程序运行后,m的值是()

A.4
B.3
C. 2
D. 1

9,设字符型变量x的值是064,表达式~x^x<2&x的值对应的8进制值是()。

A.333
B. 0333
C.x333
D.020

10.若变量已正确定义并赋值,表达式()不符合C语言语法。

A.5&&3
B. int(5.5)
C. +a
D. a=b=c=3

11.阅读以下程序段,如果从键盘上输入1234567<回车>,则程序的运行结果是()
int i,j;
scanf(“%3d%2d”,&i,&j);
printf(“i = %d, j = %d\n”,i,j);

A. i = 123, j= 4567
B. i = 1234, j= 567
C. i=1, j=2
D. i=123, j=45

  1. 请阅读以下程序段:
    int a=5, b=0, c=0;
    if (a=b+c)
    printf(“Equal!\n”);
    else
    printf(“Not Equal!\n”);
    以上程序()

A.有语法错误不能通过编译
B.可以通过编译但是不能通过连接
C.输出 Not Equal!
D.输出Equal!

  1. 以下的 for 循环次数是()
    int x,y;
    for(x=0,y=0;(y!=123)ll (x<4);x++);

A.执行 3 次
B.执行4次
C.循环次数不定
D.是无限循环

  1. 合法的数组定义语句是()

A. int a=“string”;
B. int a[5]={0,1,2,3,4,5};
C. char a=“string”;
D. char a[]=“string”;

15.下列程序的运行结果是( )。

int main()
{
	int a[3][3]={{1,2,3}, {4,6,2}, {9,3,6}}, s=0;
       int i, j, k=1;
       for (i=0; i<3; i++){
       		for (j=0; j<3; j++)
       			a[i][i]=a[i][j] /k;
       			k++;
       		}
       		for (i=0; i<3; i++)
       			s+=a[i][i];
       			printf ("%d", s);
       			return 0;
       			}

A.3
B.6
C.7
D.14

16.判断字符串a和b是否相等,应当使用()

A. if (a==b)
B. if (a=b)
C. if (strcpy(a,b))
D. if (stremp(a,b)==0)

17,以下描述错误的是()。

A.函数调用可以出现在执行语句中
B.函数调用可以出现在一个表达式中
C.函数调用可以作为一个函数的实参
D.函数调用可以作为一个函数的形参

18.以下哪个定义中的p不是指针,请选择恰当的选项()

A. char **p;
B. char (*p)[10);
C. char *p[6);t
D.给出的三项中,p都是指针

19,若程序中有下面的说明和定义

struct abc
{
	int x;
	char y;
	}
	struct abc s1,s2;

A.编译出错,结构体定义完要加分号。
B.程序将顺利编译连接执行
C.能顺利通过编译连接但不能执行
D.能顺利通过编译但连接出错

20·已知字符0的ASCI码为十六进制的30,下面程序的输出结果是()。

#include <stdio.h>
int main()
{
	union{
		unsigned char c;
		unsigned int i[4];}z;
		z.i[0]=0x46;
		z.i[1]=0x56;
		printf("%d",z.i[1]);
		return 0;
		}

Α.6
B9
C.70
D.86

二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结构填写在答题纸的相应位置上。
1__________

#include <stdio.h>
void main(){
    int i,score;
    char grade;
    for(i=1;i<7;i++){
        scanf("%d", &score); 
        score = score/10; 
        switch(score) {
            case 10: case 9: case 8: case 7: case 6: 
                grade = 'P'; break;
            default:
                grade = 'F'; break;
            putchar(grade);
            }
        }
        printf("Thanks");
}
#输入100 90 50 82 72 69

2__________

#include <stdio.h>
int x;int f(int n) {
    int x=1; return x;}
    void main(){ printf("%d %d", f(3),x);}

3_______

#include <stdio.h> 
int main()
{
    int i,s=0; 
    for(i=0;i<=10;i++)
    {
        int s=2*i;
        s=s+i;
    }
    printf("s=%d\n",s);
    printf("i=%d\n",i); 
    return 0;
}

4_______

#include <stdio.h>
int main()
{
    int i,j,k;
    for(i=1;i<=4;i++)
    {
        for(j=1;j<=2*i-1;j++)
            printf("*");
        for(k=1;k<=2*i-1;k++)
            printf("*");
        printf("\n");
    }
     return 0;
}

5_________

#include <stdio.h>
f(int b[],int n)
{
    int i,r=1;
    for(i=0; i<=n; i++)
        r=r*b[i];
    return r;
}
int main()
{   
    int x,a[] ={2,3,4,5,6,7,8,9};
    x=f(a,3);
    printf("%d\n",x);
  return 0;
    }

三、程序填空题(每空5分,共35分。请将答案填写在答题纸的相应位置上。)1. 求100—999之间的水仙花数之和(水仙花数是指一个三位数的各位数字的立方和是这个数本身,如:153=13+53+3^3)。
#include <stdio.h>

int main(){
	int d1,d2,d3; 
	int n; 
	int sum; 
	sum = 0; 
	for(_____){
	for(_____){
	 for (_____){
	 n=dl*100 +d2*10+d3; 
	 if(_____)){
	 	sum += n;
	 	}
	 }
	}
}
printf("%dn",sum); 
return 0;
}

2,将给定的n个整数存入数组后,再按逆序输出数组中的元素。

#include <stdio.h>
#define MAXN 10
int main(){
	int i, first, n;
	int num[MAXN];
	scanf("%d", &n);
	for(i = 0; i <n; i++)
		scanf("%d", &num[i]);
	first = 1;
	for(_______){
	if(_______){
		printf("%d", num[i);
		_________;
		}else{
		printf(" %d", num[i]);
		}
	}
	printf("\n");
	return 0;
}

四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)1.编写程序,计算下列分段函数f(x)的值:

![在这里插入图片描述](https://img-blog.csdnimg.cn/77380ea06b9244c39beb847c79ad177c.png)

2.编写程序输出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1^3 + 5^3 + 3^3。

3,编写程序:给定某个正整数n,求其素因子分解结果。所谓素因子分解就是找这个数的所有约数并且约数是素数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

YJlio

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

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

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

打赏作者

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

抵扣说明:

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

余额充值