C_7练习题

答案

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)
1.下列关于C语言的叙述错误的是()。

A.大写字母和小写字母的意义相同
B.不同类型的变量可以在一个表达式中
C.在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型
D.同一个运算符号在不同的场合可以有不同的含义

2按照标识符的要求,()不能组成标识符。

A.连接符
B.下划线
C.大小写字母
D.数字字符

3.以下叙述中正确的是()。

A.在C语言中,预处理命令行都以“#”开头
B.预处理命令行必须位于e源程序的起始位置
C. #include必须放在C程序的开头
D.C语言的预处理不能实现宏定义和条件编译的功能

4.在C语言中,不允许有常量的数据类型是( )

A.整型
B.结构型
C.字符型
D. 字符串

5.与x*=y+z等价的赋值表达式是()

A.x=y+z
B.x=xy+2
C.x=x
(y+z)
D.x=x+y*2

6.下列运算符中,()不是关系运算符。

A.<=
B.>
C.=
D.!=

  1. 若变量已正确定义,表达式(j=3,j++)的值是()

A.3
B.4
C.5
D.6

  1. 有 int ii,ij,ik;则表达式ii=1,ij=2,ik=3,ii>ij && ik 的值为()。

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

9.下列语句中,()将输出%d。

A. printf(“%d”);
B. printf(“%%d”);
C. printf(“%d”);
D. printf(“%%%d”);

10.已知int ii,ij.ik;scanf(“%d%d%d”,&ii,&ij,&ik);若希望从键盘输入并使得ii,ij,ik 的值分别为12,3时,则错误的输人方式是()

A.1 2 3
B.1,2,3
C.1(回车)2(回车)3(回车)
D.1(回车)23

11.下列程序段输出结果为()。

#没有主函数不可直接运行
int x =-3, y = 2; 
if(x>y);
	x=-x;
if(x<y)
	y=-y;
printf("x=%d,y=%d\n", x, y);

A. x=3,y=-2
B.x=3,y=2
C. x=-3,y=2
D.x=-3,y=-2

  1. 要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,下列程序段正确的是()

A. while ((ch = getchar)) != ‘N’)printf(“%c”, ch);
B. while (ch =getchar) != ‘N’)printf(“%e”, ch);
C. while (ch = getchar) == ‘N’)printf(“%e”, ch);
D. while ((ch = getchar) == 'N")printf(“%c”, ch);

  1. 以下程序的输出结果是()
int main(){ int p[8]={11,12,13,14,15,16,17,18}, i=0, j=0; 
    while(i++<7)
        if(p[i]%2) j+=p[i];
        printf("%d\n",j); 
        return 0;
}

A. 42
B.45
C. 56
D.60

14.在int a[ ][3]={{1,4), (3,2), (4,5,6), {0));中,a[2][1]的值是()。

A.5
B.0
C.6
D.2

  1. 不正确的赋值或赋初值的方式是()

A. char str]=“string”;
B. char str(7]=(‘s’, ‘t’, ‘r’, ‘i’, ‘n’, ‘g’);
C.char str[10]; str=“string”;
D. char str7)=(‘s’, ‘t’, ‘r’, ‘i’, ‘n’,‘g’, "10’);

16.下列程序的输出结果是()。

void f(int v, int w)
{ int t;
t=v; v=w; w=t;
}
int main()
{
	int x=1, y=3, z=2;
	 if(x>y) f(x,y);
	 else if(y>z) f(y,z);
	 else f(x,z);
	 printf("%d,%d,%d\n", x, y, z);
	return 0;
}

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

17.C语言规定,数组名做实参时,它和对应的形参之间的数据传递方式是()。

A.地址传递
B.值传递
C.由实参传给形参,再由形参传给实参
D.由用户指定传递方式

  1. 下面程序的运行结果是()
#include<stdio.h>
int main(){
    int x[5]= {2,4, 6, 8, 10}, *p, **pp; 
    p=x;
    pp = &p;
    printf("%d", *(p++));
    printf("%d\n", **pp);
    return 0;
}

A.44.
B.24
C.22
D.46

  1. 设有以下说明语句:
    struct ex
    {
    int x;
    float y;
    char z;
    }example;则下面的叙述中不正确的是()。

A. struct是结构体类型的关键字
B. example是结构体类型名
C.x,y,z都是结构体成员名
D. struct ex是结构体类型

20.下面程序的输出结果是

#include<stdio.h>
void fun (int *x, int *y){
    printf("%d%d", *x,*y);
    *x=3; *y=4;
}
    int main(){
        int x=1,y=2;
        fun(&x,&y);
        printf("%d%d", x, y); 
        return 0;
}

A.2134
B.1212
C.1234
D.2112

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

1___________

#include <stdio.h>
void main()
{
    int num, r;
    num = 17; 
    r = num % 2;
    if(r=0) printf("even"); 
    else printf("odd");
}

2_________

#include<stdio.h>
#define N 7
void main()
{
    int i,j,temp,a[N]={1,2,3,4,5,6,7};
    for(i = 0;i<N/2;i ++)
    {
        j= N-1-i;
        temp=a[i];a[i]=a[j];a[j]=temp;
    }
    for(i=0;i<N;i++) printf("%d ",a[i]);
}

3_________

#include <stdio.h>
void p(int x,int*y){
    *y=x++;
    }
    void main(){
        int x=0,y=0;
        p(10,&y);
        printf("%d,%d#",x,y);
        p(y,&x);
        printf("%d,%d#",y);
    }

4______

#include<stdio.h>
int hzct(int n)
{
    if(n==4) return 1;
    else return 2*(hzct(n+1)+1);
    }
    int main()
    {
        printf("%d\n",hzct(1));
    }

5______

#include<stdio.h>
int main(){
    int fac(int n);
    int i;
    for(i=1;i<=5;i++)
        printf("%d!=%d\n",i,fac(i));
}
    int fac(int n)
    {
        static int f=1;
        f=f*n;
        return(f);
    }

三、程序填空题(每空5分,共35分。请将答案填写在答题纸的相应位置上。)
1.输出 1 到100之间的所有完数。要求定义和调用函数is(n)判断n是否为完数,若n为完数则返回1,否则返回0。完数就是因子和与它本身相等的数,6是完数(6=1+2+3),1不是完数。

#include <stdio.h>
 int main()
 { 
 	int i;
 	int is(int n); 
 	for(i= 1; i<=100; i++)
 	 if( is(i))
 	 	printf("%d ", i);
 	 	 return 0;
 	 	 }
 	 	 int is(int n)
 	 	 {
 	 	  int i, sum;
 	 	  _________;
 	 	  sum=0; 
 	 	  for(i = 1; i <= n/2; i++)
 	 	  if(______)
 	 	  		sum=sum + i;
 	 	  		if(_______)
 	 	  		return 1;
 	 	  		else
 	 	  		return 0;}
 	 	  		```
2. 下面程序的功能是利用指向结构体数组元素的指针,从键盘输入30名学生信息并进行访问,统计来自"山东"的学生人数,请填空。

```c
#include "stdio.h"#
define N 30
#include "string.h"
typedef struct student
{ 
	int number;
	char name[8];
	char addr[20];
	}STU;
	void main()
	{ STU stu[N],*p;
	int count=0;
	printf("input students information:\n");
	for(p=stu;p<______)p++)
	{ scanf("%d %s %s",_________);
	if(________)
		count++;
	}
	printf("%d come from 山东n",);
}

四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)
1.按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。编写程序根据车速和限速自动判别对该机动车的处理。输入2个正整数,分别对应车速和限速。输出处理意见:若属于正常行驶,则输出"OK";若应处罚款,则输出"Exceed x%. Ticket 200";若应吊销驾驶证,则输出"Exceed x%. License Revoked"。其中x是超速的百分比,精确到整数。

2,请按要求编程:由键盘输入全班30名学生成绩,按成绩从高到低排序,并输出排序后的成绩。要求:(1)主函数中输入30名学生成绩,输出排序后的成绩(2)子函数中对30个成绩排序

3,编写函数:函数int IsSquare(long int n)功能判定完全平方数。若一个数能表示成某个数的平方的形式,则称这个数为完全平方数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

YJlio

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

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

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

打赏作者

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

抵扣说明:

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

余额充值