C_6练习题

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

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

A.C语言程序将从源程序中第一个函数开始执行
B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行

C.C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 D.main可作为用户标识符,用以命名任意一个函数作为主函数

  1. 下列合法的用户标识符是()。

A. float
B.-fx_1
C._4sum
D.ia%b

3,下列选项中不会引起二义性的宏定义是()。

A. #define POWER(x) xx
B. #define POWER(x) (x)
(x)
C. #define POWER(x)(xx)
D. #define POWER(x) ((x)
(x)

4,以下选项中不正确的整型常量是()

A. 12L
B.-10
C.012
D. 2,900

5.若变量x、y都是int型数,以下表达式中不能正确表示数学关系lx-yl<10的是( )。

A. abs(x-y)<10
B. x-y>-10 && x-y<10
C. (x-y)<-1011!(y-x)>10
D. (x-y)*(x-y)<100

6,逻辑运算符两侧运算对象的数据类型()

A.只能是0或者1。
B.只能是0或者非0正数
C.只能是整型或者字符型数据
D.可以是任何类型的数据

7.若有定义int x=3,y=2和floata=2.5,b=3.5,则表达式:(x+y)%2+(int)a/(int)b的值是()。

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

8.设x、y均为float型变量,则以下不合法的赋值语句是()

A. y=1+x;。
B. y=(x%2)/10;
C. x*=y+8;
D. x=y=0;

9.设字符型变量x的值是064,表达式~x"x<<2&x的值是()。

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

10.若x是double型变量,n是int型变量,执行以下语句(),并输入3 1.25后,x的值是1.25,n的值是3

A. scanf(“%d%r, &n, &x);
B. scanf(”%lf%d", &o, &n);
C. scanf(“%1%d”, &n,
D. scanf(“%d, %lf”, &n, &x);

11.以下if-else语句语法正确的是()。

A. if(x>0) printf(“%f”,x) else printf(“%f”,-x);
B. if(x>0) {x=x+y;printf(“%f”,x);} else printf(“%f”,-x);
C. if(x>0) {x=x+yprintf(“%f”,x); else printf(“%f”,-x);
D. if(x>0) (x=x+y;printf(“%f”,x)} else printf(“%f”,;

  1. 以下()for语句是不能编译的。

A. for(i=0; i<10, j<10; i++);
B. for(i=0; j=0; i<10; i++);
C. for(i=0; i<10; i–);D. for(i=0; j<10; j++);

  1. 以下程序的运行结果是()
#include
 int main(){
 	int a[5]={1,2,3,4,5},b[5]={0,2,1,3,0},i,s=0;
 	for(i=1;i<3;i++)
 	    s=s+a[b[i]];
 	    printf("%d\n",s);
 	    return 0;
 }

A.5
B. 10
C. 11
D. 15

14.有说明语句int a[4][5];,则a[2]+3表示()。

A.a数组行下标为2、列下标为3的元素的地址
B.a数组行下标为2、列下标为3的元素的值
C. a 数组第2行的首地址
D. a数组第3行的首地址

15,不能把字符串Hello!赋给数组b的语句是()。

A. char b[10]=(‘H’,‘e’,‘l’,‘l’,‘o’,‘!’);
B. char b[10];b="Hello! ";
C.char b[10];strcpy(b,“Hello!”).
D. char b[10]=“Hello!”;

  1. 下列程序的输出结果是()
void fun (int a, int b, int c)
{a=456; b=567; c=678; } 
int main()
{ int x=10, y=20,z=30; 
fun (x, y, z);
printf("%d,%d,%d\n", x, y, z);
return 0;
}

A. 30,20,10
B. 10,20,30
C.456,567,678
D.678,567,456

  1. 有以下函数定义:
    void fun(int n, double x) {…}
    若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是()。

A. fun(int y,double m);
B. k=fun(10,12.5);
C. fun(x, n);
D. void fun(n,x);

  1. 若定义pf为指向float类型变量f的指针,下列语句中()是正确的。

A. float f, *pf = f;
B. float f, *pf=&f;
C. float *pf = &f, f;
D. float f, *pf=0.0;

19,设有如下定义,下面各输入语句中错误的是

struct ss
{char name[10];
	int	age;char sex;} std[3],*p=std;

A. scanf(“%d”,&(*p).age);
B. scanf(“%d”,p->&age);
C.scanf(“%c”,&std[0].sex);
D. scanf(“%c”,&(p->sex));

  1. 下面程序的运行结果是
    #include
    int main(){
    int *a, b=3;
    *a=b;
    printf(“%d”,*s);
    }

A.0
B.3B
C.不确定
D.程序无法正常运行。

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

1_______

#include  
void main()
{
	char c= 'b'; 
	int k= 4;
	switch(c)
	{ case 'a':k=k+1;break;
      case 'b': k=k +2; 
      case 'c': k=k+3;} 
      printf("%d\n",k);
}

2_______

#include 
int F(int x){
    int p= 1;
    p*=x;
    return p;
}
    int G(int x)
    {
        static int p = 1;
        p*=x;
        return p;
    }
        void main(){
            int a, b, c, d;
            a=F(2);
            b=F(3);
            c=G(2);
            d=G(3);
            printf("%d%d%d%d\n", a, b, c, d);
        }

3________

#include
int x=10;
void main()
{
    int y=20;
    printf("x=%d,y=%d\n",x,y);
    {
        int x=30; y=y+x;
         printf("x=%d,y=%d\n",x,y);
    }
         printf("x=%d,y=%d\n",x,y);
}

4________

#include  
int fun()
{
    auto int x=1;
    static int y=1;
    x+=3;
    y+=3;
    return x+y;
}
    void main()
    {
        int a,b;
        a=fun();
        b=fun();
        printf("%d,%d\n",a,b);
    }

5_______

#include 
#include 
struct student
{
    int num; char name[20]; float score[3];
    };
    int main()
    {
        void print(struct student);
        struct student stu;
        stu.num=12345; strcpy(stu.name,"LiLin");
        stu.score[0]=67.5; stu.score[1]=89; stu.score[2]=78.6;
        print(stu);
        printf("%sln",stu.name);
        }
        void print(struct student stu)
        {
            printf("%d\n%s\n",stu.num,stu.name);
            printf("%f\n%f\n%f\n",stu.score[0],stu.score[1],stu.score[2]);
            strcpy(stu.name, "chen");
        }

三、程序填空题(每空5分,共35分。请将答案填写在答题纸的相应位置上。)1,输入一个正整数,判断其是否为素数。

#include 
#include  
int main(){
    int = m,i,is_prime, limit;
    scanf ("%d", &m); 
    if ( m == 1) {
        is_prime = 0;
        }else if (m == 2) {
            __________;
            }else if (m % 2 == 0) {
                is_prime = 0;
                }else{
                    _________;
                }
                limit=sqrt(m)+1;
                for(i=3;i<=limit,i+=2){
                    if(m % i == 0}{
                        ________;
                        ________;
                    }
}

                        if(______){
                            ( printf("Yes\n"); 
                            }else{
                                printf("Noln");
                            }
                        }
                      

2.下面invert函数的功能是将一个字符串str的内容颠倒过来。请填空。

void invert(char str)
{
    int i,j, k;
    for(i=0,j=________.i<j;i++________)
    {
        k=str[i];
        str{i]=str[j];
        str[j]=k;
        }
    }

四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)

1.编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。且保证除法和求余的分母非零。
当运算符为+、-、* 、/ 、%时,输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR。

2.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),a和几个数相加由键盘输入。

3.编写函数void swap(int *a,int *b),(该函数功能是实现变量交换),主函数实现对输入的n个整数数据进行升序排序。

你可能感兴趣的:(2模拟0_C,c语言,开发语言)