文章目录[隐藏]

本答案对应课程为:点我自动跳转查看
本课程起止时间为:2020-02-17到2020-08-12
本篇答案更新状态:已完结

第14周——结构设计的艺术 练兵区——单选题——不计入总分

1、 问题:已知head是非空单链表的头指针,p结点既不是头结点,也不是尾结点,q是尾结点的前驱结点。且所有结点都已具有如下形式的结构定义:struct node{     int data;    struct node next;}p,*q;则下面语句序列的功能是while(p->next->next != NULL)
{
  p = p->next;
}
free(p->next);
p->next = NULL;
选项:
A:删除链表的尾结点
B:删除p结点
C:删除结点q
D:删除p的前驱结点
答案: 【删除链表的尾结点

2、 问题:已知L是非空单链表,head是链表的头指针,且所有结点都已具有如下形式的结构定义:struct node{     int data;    struct node next;}p;若要删除头结点,则下面正确的语句序列是
选项:
A:p = head;head = p->next;free(p);
B:head = head->next;free(head);
C:p = head->next;free(p);
D:head = head->next;p = head;free(p);
答案: 【p = head;head = p->next;free(p);

3、 问题:关于图的说法正确的是
选项:
A:图由顶点和边构成
B:图的邻接表属于顺序存储方式
C:图的邻接表属于链式存储方式
D:图的邻接矩阵中存储的是图的顶点
答案: 【图由顶点和边构成

4、 问题:若已建立下面的链表结构,指针p、q分别指向图中所示结点,则不能将q所指的结点插入到链表末尾的一组语句是
选项:
A:p = p->next; q->next = p; p->next = q; 
B:q->next = NULL; p = p->next; p->next = q; 
C:p = p->next; q->next = p->next; p->next = q;
D:p = (p).next; (q).next = (p).next; (p).next = q; 
答案: 【p = p->next; q->next = p; p->next = q; 

5、 问题:以下程序执行后的输出结果是#include <stdio.h>

include <stdlib.h>

struct NODE
{
    int num;
    struct NODE *next;
};

int main( )

    struct NODE p,q,r;
    int sum=0;
    p=(struct NODE 
)malloc(sizeof(struct NODE));
    q=(struct NODE )malloc(sizeof(struct NODE));
    r=(struct NODE 
)malloc(sizeof(struct NODE));
    p->num=1;
    q->num=2;
    r->num=3;
    p->next=q;
    q->next=r;
    r->next=NULL;
    sum+=q->next->num;
    sum+=p->num;
    printf("%d",sum);
    return 0;
}
选项:
A:4
B:3
C:5
D:6
答案: 【4

6、 问题:有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是struct node

    int data;
    struct node next;
}
p, q, r;
选项:
A:r->next=q; q->next=r->next; p->next=r;
B:q->next=r->next; p->next=r; r->next=q;
C:p->next=r; q->next=r->next; r->next=q;
D:q->next=r->next; r->next=q; p->next=r;
答案: 【r->next=q; q->next=r->next; p->next=r;

7、 问题:下面属于动态数据结构的是
选项:
A:链表
B:栈
C:结构体数组
D:指针数组
E:字符数组
答案: 【链表;

8、 问题:向建立好的单向链表中的结点pr后插入一个新结点p,且所有结点都已具有如下形式的结构定义:struct node{     int data;    struct node next;}p, pr, head;则操作正确的是
选项:
A:p->next = pr->next;pr->next = p;
B:struct node * pTemp;pTemp = pr->next;pr->next = p;p->next = pTemp;
C:pr->next = p;
D:p->next = pr->next;pr = p;
E:pr->next = p;p->next = pr->next;
答案: 【p->next = pr->next;pr->next = p;;
struct node * pTemp;pTemp = pr->next;pr->next = p;p->next = pTemp;

9、 问题:已知head是非空单链表的头指针,p结点既不是头结点,也不是尾结点且所有结点都已具有如下形式的结构定义:struct node{     int data;    struct node next;}p, pr, head;若要找到p的前驱结点并将地址保存在pr中,则下面正确的语句序列是
选项:
A:pr = head;
while(pr->next!=p) 
{
    pr = pr->next;
}
B:p = head;
pr = head;
while(pr->next!=p) 
{
   pr = pr->next;
}
C:pr = head;
while(pr!=p) 
{
   pr = pr->next;
}
D:p = head;
while(p->next!=pr)
{
   p = p->next;
}
答案: 【pr = head;
while(pr->next!=p) 
{
    pr = pr->next;
}

10、 问题:下列叙述中正确的是
选项:
A:作为线性单向链表的尾结点,其指针域的值设为空指针NULL,表示链表的结束。
B:对于单向链表而言,一旦链表中某个结点的指针域数据丢失,将会导致无法找到下一个结点,进而丢失该节点后面的所有结点数据。
C:线性链表的长度是固定的,在访问之前就已经确定下来。
D:构成线性链表的存储单元是连续的,如结点P与它的前驱结点及后继结点之间就是连续的。
E:线性链表的数据域一般只包含一个成员数据,如data。
F:作为线性单向链表的尾结点,其指针域的值设为空指针void,表示链表的结束。
答案: 【作为线性单向链表的尾结点,其指针域的值设为空指针NULL,表示链表的结束。;
对于单向链表而言,一旦链表中某个结点的指针域数据丢失,将会导致无法找到下一个结点,进而丢失该节点后面的所有结点数据。

11、 问题:关于队列的说法正确的是
选项:
A:队列和栈都属于线性结构
B:队列存储在数组a中,队首为a[front],队尾为a[rear],则队列为空的条件是rear == front
C:一个队列的入队顺序是a,b,c,d,则出队顺序应该是d,c,b,a
D:队列具有先进后出的特点
答案: 【队列和栈都属于线性结构

12、 问题:关于树的说法错误的是
选项:
A:树至少有一个结点
B:树必须有根结点
C:树是一种非线性结构
D:树的结点之间是一对多的关系
E:二叉树的左右子树不能交换
答案: 【树至少有一个结点;
树必须有根结点

13、 问题:关于单向链表说法错误的是
选项:
A:单向链表在内存中是连续存储的
B:结点的存储空间分两部分,一部分用于存储结点的数据,另一部分用于存储其他结点的指针
C:存储空间可以动态的获取和释放
D:与数据相比,单向链表适合反复进行删除、插入操作
答案: 【单向链表在内存中是连续存储的

第8周—— 一堆数据来了,你准备好了吗 练兵区——单选题——不计入总分

1、 问题:假设有40个学生被邀请来给餐厅的饮食和服务质量打分,分数划分为1~10这10个等级(1表示最低分,10表示最高分),编程统计并按如下格式输出餐饮服务质量调查结果。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

define  M  40

define  N  11

int main()
{
    int  i, j, grade, feedback[M], count[N] = {0};
    printf("Input the feedbacks of 40 students:");
    
    for (i=0; i<M; i++)
    {
        scanf("%d", &feedback[i]);
    }
    
    for (i=0; i<M; i++)
    {
        ___;
    }
    
    printf("Feedback\tCount\tHistogram");
    
    for (
_; grade<=N-1; grade++)
    { 
        printf("%8d\t%5d\t", grade, count[grade]);
        for (j=0; _____; j++)
        {
            printf("%c",’*’);
        }
        printf("");
    }
    return 0;
}
选项:
A:第16行:    count[feedback[i]]++第21行:    grade=1第24行:    j<count[grade]
B:第16行:    feedback[i]++第21行:    grade=1第24行:    j<N-1
C:第16行:    count[i]++第21行:    grade=0第24行:    j<N-1
D:第16行:    count[feedback[i]]++第21行:    grade=0第24行:    j<grade
答案: 【第16行:    count[feedback[i]]++第21行:    grade=1第24行:    j<count[grade]

2、 问题:输入某班学生某门课的成绩(最多不超过40人,具体人数由用户键盘输入),用函数编程统计不及格人数。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include  <stdio.h>

define N 40

intGetFailNum(int score[], int n);
int main()

    int i, n, fail, score[N];
    printf("How many students?");
    scanf("%d", &n);
    for (i=0; i<n; i++)
    {
        scanf("%d", ___);
    }
    fail = ___;
    printf("Fail students = %d", fail);
    return 0;
}
/ 函数功能:统计不及格人数 /
int GetFailNum(int score[], int n)
{
    int  i, count = 0;
    for (i=0; i<n; i++)
    {
        if (
_)  count++;
    }
    return count;
}
选项:
A:第11行:    &score[i]第13行:    GetFailNum(score, n)第23行:    score[i] < 60
B:第11行:    score[i]第13行:    GetFailNum(score, n)第23行:    score[i] <= 60
C:第11行:    score[i]第13行:    GetFailNum(n,score)第23行:    score[i] < 60
D:第11行:    &score[i]第13行:    GetFailNum(score[i], n)第23行:    score[i] >= 60
答案: 【第11行:    &score[i]第13行:    GetFailNum(score, n)第23行:    score[i] < 60

3、 问题:模拟骰子的6000次投掷,编程统计并输出骰子的6个面各自出现的概率。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include ___

include <time.h>

include <stdio.h>

int main()
{
    int  face, roll, frequency[7] = {0};
    srand(time (NULL));
    
    for (roll=1; roll<=6000; roll++)
    { 
        face = ___;
        
____;
    }
    
    printf("%4s%17s", "Face", "Frequency");
    
    for (face=1; face<=6; face++)
    {
        printf("%4d%17d", face, frequency[face]);
    }
    
    return 0;
}
选项:
A:第1行:    <stdlib.h>第11行:    rand()%6 + 1第12行:    frequency[face]++
B:第1行:    <math.h>第11行:    rand()/6 + 1第12行:    frequency[face]++
C:第1行:    <stdlib.h>第11行:    rand()%6 + 1第12行:    frequency[roll]++
D:第1行:    <math.h>第11行:    rand()/6 + 1第12行:    frequency[roll]++
答案: 【第1行:    <stdlib.h>第11行:    rand()%6 + 1第12行:    frequency[face]++

4、 问题:以下程序中函数Fun的功能是对b所指数组中的第m至第n个数据取累加和,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
Fun(__,int m,int n)

    int  i,s=0;
    for( __;i<=n;i++)  
        s=s+b[i];
    return 
_____;
}

int main()

    int  x,a[]={1,2,3,4,5,6,7,8,9};
    x=Fun(a,3,7);
    printf("%d",x);
    return 0;
}
选项:
A:第2行:    int b[]第5行:    i=m第7行:    s
B:第2行:    int b[]第5行:    i=1第7行:    i
C:第2行:    int b第5行:    i=0第7行:    s
D:第2行:    int b[]第5行:    i=n-1第7行:    b[i]
答案: 【第2行:    int b[]第5行:    i=m第7行:    s

5、 问题:以下程序中函数Sort的功能是对a所指数组中的数据进行由大到小的排序,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
void Sort(int a[],int n)

    int i,j,t;
    for(i=0;___;i++)
        for(__;j<n;j++)
            if(a[i]<a[j])
            {
                t=a[i];
                ____;
                a[j]=t;
            }
}

int main()
{
    int aa[10]={1,2,30,4,5,6,7,8,9,10},i;
    ____;
    
    for(i=0;i<10;i++)
        printf("%d,",aa[i]);
    printf("");
    return 0;
选项:
A:第5行:    i<n-1第6行:    j=i+1第10行:    a[i]=a[j]第18行:    Sort(aa,10)
B:第5行:    i<n-1第6行:    j=i第10行:    a[i]=a[j]第18行:    Sort(aa[],10)
C:第5行:    i<n第6行:    j=i+1第10行:    a[j]=a[i]第18行:    Sort(aa,10)
D:第5行:    i<=nj第6行:    =i第10行:    a[i]=a[j]第18行:    Sort(10,aa)
答案: 【第5行:    i<n-1第6行:    j=i+1第10行:    a[i]=a[j]第18行:    Sort(aa,10)

6、 问题:以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出。程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是#include <stdio.h>
int main()

    int n,k;
    float score ,sum,ave;
    sum=0.0;
    for(n=1;n<=10;n++)
    { 
        for(k=1;k<=4;k++)
        { 
            scanf("%f",&score); 
            sum+=score;
        }
        
        ave=sum/4.0;
        printf("NO%d:%f",n,ave);
        
    }
    
    return 0;
选项:
A:sum=0.0;
B:sum+=score;
C:ave=sun/4.0;
D:printf("NO%d:%f",n,ave);
答案: 【sum=0.0;

7、 问题:以下程序中函数Reverse的功能是对数组a中的前一半元素逆序、后一半元素逆序,再将逆序后的前、后两部分数据位置交换。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。例如:主程序中数组b中的元素为{16,22,13,41,50,62,27,18,9,10},调用函数Reverse后,数组b中元素变为{10 9 18 27 62 50 41 13 22 16}#include <stdio.h>
void Reverse(int a[],int n)
{   
    int i,t;
    for(i=0;__;i++)
     { 
         t=a[i]; 
         ____; 
         a[n-i]=t;
      }
}

int main()
{   
    int b[10]={16,22,13,41,50,62,27,18,9,10}; 
    int i,s=0;
    ____;
    
    for(i=0;i<10;i++) 
    {
         printf("%4d",b[i]);
    }
    
    return 0;
}
选项:
A:第5行:    i<=n/2第8行:    a[i]=a[n-i]第17行:    Reverse(b,9)
B:第5行:    i<=n第8行:    a[n-i]=a[i]第17行:    Reverse(b,9)
C:第5行:    i<=n/2第8行:    a[n]=a[i]第17行:    Reverse(9,b)
D:第5行:    i<=n/2第8行:    a[i]=a[n]第17行:    Reverse(b,9)
答案: 【第5行:    i<=n/2第8行:    a[i]=a[n-i]第17行:    Reverse(b,9)

8、 问题:输入n×n阶矩阵,用函数编程计算并输出其两条对角线上的各元素之和。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

define  N   10

void InputMatrix(int a[N][N], int n);
int AddDiagonal(int a[N][N], int n);
int main()
{
    int a[N][N], n, sum;                
    printf("Input n:");
    scanf("%d", &n);
    InputMatrix(a, n);
    sum = AddDiagonal(a, n);
    printf("sum = %d", sum);
    return 0;
}

/  函数功能: 输入n×n矩阵的元素值,存于数组a中 /
void InputMatrix(__, int n)
{
    int i, j;                
    printf("Input %d*%d matrix:", n, n);
    for (i=0; i<n; i++)
    {
        for (j=0; j<n; j++)
        {
              scanf("%d",
__);
        }
    }
}

/  函数功能: 计算n×n矩阵中两条对角线上的元素之和 /
int AddDiagonal(int a[N][N], int n)
{
    int i, j, sum = 0;                
    for (i=0; i<n; i++)
    {
        for (j=0; j<n; j++)
        {
            if (____)
                sum = sum + a[i][j];      
        }  
    }
    return ______;
}
选项:
A:第17行:    int a[N][N]第25行:    &a[i][j]第38行:    i==j || i+j==n-1第42行:    sum
B:第17行:    int a[N][N]第25行:    &a[i][j]第38行:    i==j && i+j==n-1第42行:    a[i][j]
C:第17行:    int a[N][N]第25行:    a[i][j]第38行:    i==j || i+j==n-1第42行:    a[N][N]
D:第17行:    int a[][]第25行:    &a[i][j]第38行:    i==j && i+j==n-1第42行:    sum
答案: 【第17行:    int a[N][N]第25行:    &a[i][j]第38行:    i==j || i+j==n-1第42行:    sum

9、 问题:下面代码的功能是将数组a中存放的5个整型数据逆序后在屏幕上输出,具体输出内容如下:5    4    3    2    1按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
void Fun(int b[],int i,int j)

     int t;
     if(i<j)
     { 
          _
          
          b[i]=b[j];
          _
;
          
          Fun(b,i+1,j-1);
     }
}

int main( )

     int i,a[5]={1,2,3,4,5};
     ___;
     
     for(i=0;i<5;i++) printf("%d\t",a[i]); 
     printf("");
     return 0;
 }
选项:
A:第7行:    t=b[i]第10行:    b[j]=t第19行:    Fun(a,0,4)
B:第7行:    t=b[i]第10行:    b[i]=t第19行:    Fun(a,0,5)
C:第7行:    t=b[j]第10行:    b[j]=t第19行:    Fun(a,1,4)
D:第7行:    t=b[i]第10行:    b[i]=t第19行:    Fun(a,1,5)
答案: 【第7行:    t=b[i]第10行:    b[j]=t第19行:    Fun(a,0,4)

10、 问题:某人有5张2分的邮票和5张3分的邮票,问使用这些邮票可以组合出多少种不同面值的邮资。(例如:1张2分邮票加1张3分邮票可以组成5分的邮资;3张2分的邮票或2张3分的邮票都可以组成同样的6分邮资。)按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
int main()
{
    int i,j,k,s,n=0;
    int a[100]={0};
    
    for(i=0;_;i++)
        for(j=0;__;j++)
        {
            s=___;
            
            for(for(k=0;a[k]!=0;k++))
                if(s==a[k])
                   
_;
                   
            if(a[k]==0&&s>0)
            {
                _
;
                n++;
            }
        }
        
    printf(" %d kinds:",n);
    
    for(k=0;a[k];k++)
        printf("%2d,",a[k]);
        
    return 0;
选项:
A:第7行:    i<=5第8行:    j<=5第10行:    2i+3j第14行:    break第18行:    a[k]=s
B:第7行:    i<5第8行:    j<5第10行:    2i+3j第14行:    break第18行:    s=a[k]
C:第7行:    i<=5第8行:    j<=5第10行:    2i+3j第14行:    continue第18行:    a[k]=s
D:第7行:    i<5第8行:    j<5第10行:    2i+3j第14行:    continue第18行:    s=a[k]+1
答案: 【第7行:    i<=5第8行:    j<=5第10行:    2i+3j第14行:    break第18行:    a[k]=s

11、 问题:某矩阵m存储的数据如下:1 4 72 5 83 6 9现将该矩阵最后一行的所有数据输出到屏幕,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
int main()

    int m[][3]={1,4,7,2,5,8,3,6,9};
    int i,j,k=_;
    
    for(i=0;
_;i++)
    { 
        printf("%d",
______); 
    }
    
    return 0;
}
选项:
A:第5行:    2第7行:    i<3第9行:    m[k][i]
B:第5行:    3第7行:    i<=3第9行:    m[k][i]
C:第5行:    2第7行:    i<2第9行:    m[i][k]
D:第5行:    3第7行:    i<3第9行:    m[i][k]
答案: 【第5行:    2第7行:    i<3第9行:    m[k][i]

12、 问题:下列说法正确的是
选项:
A:在C语言中,数组的下标都是从0开始的。
B:在C语言中,不带下标的数组名代表数组的首地址,即第一个元素在内存中的地址。
C:简单变量做函数参数时,是将实参的值传给形参,实参和形参在内存中占用不同的存储单元,因此形参值的改变不会影响实参。
D:数组做函数参数时,是将实参数组的首地址传给形参,形参数组和实参数组在内存中共享相同的存储单元,因此对形参数组元素值的修改也就相当于是对实参数组元素值的修改。
E:在声明函数的一维数组形参时,通常不指定数组的大小,而用另一个形参来指定数组的大小。
F:C语言中的二维数组在内存中是按列存储的。
G:对于一个二维数组,可以按任意的顺序对其进行赋值,输出二维数组元素也可以按任意的顺序来输出。
H:在声明函数的二维数组形参时,可省略数组第二维的长度,但不能省略数组第一维的长度。
I:定义数组的大小、访问数组元素时在下标中都可以使用变量或表达式。
答案: 【在C语言中,数组的下标都是从0开始的。;
在C语言中,不带下标的数组名代表数组的首地址,即第一个元素在内存中的地址。;
简单变量做函数参数时,是将实参的值传给形参,实参和形参在内存中占用不同的存储单元,因此形参值的改变不会影响实参。;
数组做函数参数时,是将实参数组的首地址传给形参,形参数组和实参数组在内存中共享相同的存储单元,因此对形参数组元素值的修改也就相当于是对实参数组元素值的修改。;
在声明函数的一维数组形参时,通常不指定数组的大小,而用另一个形参来指定数组的大小。

13、 问题:用函数编程计算并输出如图所示的杨辉三角形。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include<stdio.h>

define  N  20

void  CaculateYH(int a[][N], int  n);
void  PrintYH(int a[][N], int  n);
int main()
{
    int  a[N][N] = {0}, n;
    printf("Input  n(n<20):");
    scanf("%d", &n);     
    CaculateYH(a, n);
    PrintYH(a, n);
    return 0;
}

/ 函数功能:计算杨辉三角形前n行元素的值 /
void CaculateYH(_, int n)
{
    int  i, j;
    for (i=0; i<n; i++)
     {   
        a[i][0] = 1;
        
__; 
     }
    for (_; i<n; i++)
    {
        for (j=1; j<=i-1; j++)
        {
           a[i][j] = ___;
        }
   } 
}
/ 函数功能:输出杨辉三角形前n行元素的值 /
void PrintYH(int a[][N], int n)
{
    int  i, j;
    for (i=0; i<n; i++)
    {
        for (j=0; 
______; j++)
        {
            printf("%4d", a[i][j]);
        }
        printf("");
    }
}
选项:
A:第16行:    int a[][N]第22行:    a[i][i] = 1第24行:    i=2第28行:    a[i-1][j-1] + a[i-1][j]第38行:    j<=i
B:第16行:    int a[][]第22行:    a[i][i] = 1第24行:    i=1第28行:    a[i-1][j-1] + a[i-1][j]第38行:    j<=i
C:第16行:    int a[][N]第22行:    a[0][i] = 1第24行:    i=2第28行:    a[i-1][j-1] + a[i-1][j]第38行:    j<i
D:第16行:    int a[N][]第22行:    a[i][i] = 1第24行:    i=2第28行:    a[j-1][i-1] + a[j][i-1]第38行:    j<=i
答案: 【第16行:    int a[][N]第22行:    a[i][i] = 1第24行:    i=2第28行:    a[i-1][j-1] + a[i-1][j]第38行:    j<=i

14、 问题:输入某班学生某门课的成绩(最多不超过40人),当输入为负值时,表示输入结束,用函数编程统计成绩高于平均分的学生人数。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

define N 40

int Average(int score[], int n); 
int ReadScore(int score[]);      
int GetAboveAver(int score[], int n);
int main()
{
    int score[N], m, n;
    n = ReadScore(score);           / 输入成绩,返回学生人数 /
    printf("Total students are %d", n);
    m = GetAboveAver(score, n);    / 统计成绩在平均分及其上的学生人数 /   
    if (__) printf("Students of above average is %d", m);
    return 0;
}

/ 函数功能:若n>0,则计算并返回n个学生成绩的平均分,否则返回-1 /
int Average(int score[], int n) 
{
    int i, sum = 0;
    for (i=0; i<n; i++)
    {
        sum += score[i];
    }
    return  __
}

/ 函数功能:输入学生某门课成绩,当输入成绩为负值时,结束输入,返回学生人数 /
int ReadScore(int score[])  
{
    int i = -1;         
    do{
            i++;
            printf("Input score:");
            scanf("%d", &score[i]);
       }while (_);   
    return 
____;                     
}

/ 函数功能:若n>0,则统计并返回成绩在平均分及平均分之上的学生人数,否则返回-1 /
int GetAboveAver(int score[], int n)
{
    int   i, count = 0, aver;
    aver = __;  / 计算并打印平均分 /
    if (aver == -1) return -1;
    printf("Average score is %d", aver);
    for (i=0; i<n; i++)
    {
        if (score[i] >= aver)  count++;
    }
    return ____;
}
选项:
A:第12行:    m != -1第24行:    n>0 ? sum/n : -1第35行:    score[i] >= 0第36行:    i第43行:    Average(score, n)第50行:    count
B:第12行:    m == -1第24行:    n>0 ? sum/n : -1第35行:    score[i] >= 0第36行:    i第43行:    Average(score, n)第50行:    i
C:第12行:    m != -1第24行:    n>0 ? -1 : sum/n第35行:    score[i] >= 0第36行:    i第43行:    Average(n,score)第50行:    count
D:第12行:    m == -1第24行:    n<=0 ? sum/n : -1第35行:    score[i] >= 0第36行:    score第43行:    Average(score, n)第50行:    aver
答案: 【第12行:    m != -1第24行:    n>0 ? sum/n : -1第35行:    score[i] >= 0第36行:    i第43行:    Average(score, n)第50行:    count

15、 问题:下面代码的功能是在屏幕上输出以下内容013程序中空白处缺少的代码由下列选项给出,其中有一个不能满足题目要求,请将其找出。#include <stdio.h>
int main()
{  
     int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=0;
     
     for(i=0;i<3;i++)
         for(j=i;j<=i;j++) 
           {
                t=t+______;
                printf("%d",t);
           }  
     
     return 0;
}
选项:
A:b[j][t]
B:b[i][b[j][j]]
C:b[t][j]
D:b[i][j]
答案: 【b[j][t]

16、 问题:以下程序的输出结果是void swap1(int c[])

    int t;
    t=c[0];
    c[0]=c[1];
    c[1]=t;
}

void swap2(int c0,int c1)

    int t;
    t=c0;
    c0=c1;
    c1=t;
}

int main( )

    int a[2]={3,5},b[2]={3,5};
    swap1(a); 
    swap2(b[0],b[1]);
    printf("%d %d %d %d",a[0],a[1],b[0],b[1]);
    return 0;
}
选项:
A:5 3 3 5
B:5 3 5 3
C:3 5 3 5
D:3 5 5 3
答案: 【5 3 3 5

第2周——数字间的那些事儿,做点计算哈 第2周测验

1、 问题:下列程序的输出结果是#include <stdio.h>
int main()

   int a=7,b=5;   
   printf("%d",b/a);
   return 0;   
}
选项:
A:0
B:5
C:1
D:0.7
答案: 【0

2、 问题:下列关于单目运算符++、–的叙述中正确的是
选项:
A:a++的运算过程是:先使用变量a的值,然后再执行a=a+1。
B:++a的运算过程是:先使用变量a的值,然后再执行a=a+1。
C:a++的运算过程是:先执行a=a+1,然后再使用变量a的值。
D:a++和++a都是最终使变量a执行a=a+1,因此对于包含a++或++a的表达式而言(如j=a++;或者j=++a;),两种情况下表达式的最终运算结果一定是相同的。
答案: 【a++的运算过程是:先使用变量a的值,然后再执行a=a+1。

3、 问题:以下程序的输出结果是:#include <stdio.h>
int main() 

    int a=1, b=2; 
    a=a+b; 
    b=a-b; 
    a=a-b; 
    printf("%d,%d", a, b );
    return 0;  
}
选项:
A:2,1
B:3,1
C:3,2
D:1,2
答案: 【2,1

4、 问题:程序运行后的输出结果是#include <stdio.h>
int main()

    int m=3,n=4,x;
    x=m++;
    ++n;
    x=x+8/n;
    printf("%d,%d",x,m);
    return 0;
}
选项:
A:4,4
B:4,3
C:5,4
D:5,3
答案: 【4,4

5、 问题:下面程序的运行结果是#include  <stdio.h>
int main()
{
    int    a = 2, b = 3 ;
    float  x = 3.5, y = 2.5 ;
    printf("%f", (float)(a+b) / 2 + (int)x % (int)y) ;
    return 0;
}
选项:
A:3.500000
B:3.000000
C:3.5
D:3
答案: 【3.500000

6、 问题:以下非法的赋值语句是
选项:
A:++(i+1);
B:x=(j–);
C:n=++i;
D:j++;
答案: 【++(i+1);

7、 问题:设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
选项:
A:6.000000
B: 6.500000
C:6             
D:5.500000  
答案: 【6.000000

8、 问题: 以下程序的运行结果是#include <stdio.h>
int main() 

    int  a = 12, b = 3; 
    float  x = 18.5, y = 4.5; 
    printf("%f", (float)(a * b) / 2); 
    printf("%d", (int)x %(int)y); 
    return 0;
}
选项:
A:18.0000002
B:182
C:182.000000
D:18.0000002.000000
答案: 【18.0000002

9、 问题:设有语句“int a = 3;”,执行语句“a += a -= a * a;”后,变量a的值是
选项:
A:-12
B:3
C:0
D:9
答案: 【-12

10、 问题:在C语言中,要求操作数必须是整型的运算符是
选项:
A:%
B:/
C:*
D:+
E:-
答案: 【%

11、 问题:程序运行后的输出结果是#include <stdio.h>
int main()

    char a=’a’;
    printf("%c,",++a);
    printf("%c",a++);
    return 0;
}
选项:
A: b,b
B:b,c
C:a,b
D:a,c
答案: 【 b,b

12、 问题:下面哪条语句可以生成0-9之间的随机数
选项:
A:magic=rand()%10;
B:magic=rand()%10+1;
C:magic=rand()/10;
D:magic=rand()/10+1;
答案: 【magic=rand()%10;

13、 问题:在下面的C语言语句中,存在错误的是
选项:
A:int a=b=10;
B:int a=10,b=10;
C:int a,b;a=b=10;
D:int a,b;a=10;b=10;
答案: 【int a=b=10;

14、 问题:若以下选项中的变量已正确定义,则正确的赋值语句是
选项:
A:x3=x2=x1=0; 
B:x1=26.8%3;
C:1+2=x2; 
D:x4=1+2=3;
答案: 【x3=x2=x1=0; 

15、 问题:若有以下定义,则表达式“a * b + d – c”的值的类型为#include <stdio.h>
int main()
{
    char  a;
    int b;
    float  c;
    double d;
    ….
    return 0;
}
选项:
A:double
B:int
C:float
D:char
答案: 【double

16、 问题:在C程序中如果要使用数学函数,如sin(x),log(x)等,需要在程序中加入的语句是
选项:
A:#include <math.h>
B:#include <stdio.h>
C:#define <math.h>
D:#define <stdio.h>
答案: 【#include <math.h>

17、 问题:十进制3位数整数x,下面哪条语句能正确分离出它的十位上的数字d?
选项:
A:d=(x-(x/100)100)/10;
B:d=(x%100)/10;
C:d=(x/10)%10;
D:d=x%10;
E:d=(x-x%10)/10;
F:d=x%100;
答案: 【d=(x-(x/100)
100)/10;;
d=(x%100)/10;;
d=(x/10)%10;】

18、 问题:在C语言中对下面的语句而言,哪个说法是错误的?int a, b;
选项:
A:变量a和b中的值都是0
B:变量a和b中都没有数值
C:变量a和b中的值都是未知的随机数
D:a和b都是整型变量
E:变量a和b占用的内存空间的大小是相同的
答案: 【变量a和b中的值都是0;
变量a和b中都没有数值

19、 问题:已知int a,b;并且有a=5%3;以及b=5/3;,则a和b的值分别是(     )。
选项:
A:2和1
B:0和1.67
C:3和1
D:5和1
E:0和1
F:3和1.67
G:5和1.67
答案: 【2和1

20、 问题:设有以下定义,则下面给出的语句中错误的是int a=0; 
float b=1.25;
char c=’A’;

define d 2

选项:
A:d++;
B:(a+b)++;
C:(-a)++;
D:(a+1)++;
E:a++;
F:b++;
G:c++;
答案: 【d++;;
(a+b)++;;
(-a)++;;
(a+1)++;

第2周——数字间的那些事儿,做点计算哈 练兵区——单选题——不计入总分

1、 问题:设有语句“int a = 3;”,执行语句“a += a -= a * a;”后,变量a的值是
选项:
A:-12
B:3
C:0
D:9
答案: 【-12

2、 问题:在C程序中如果要使用数学函数,如sin(x),log(x)等,需要在程序中加入的语句是
选项:
A:#include <math.h>
B:#include <stdio.h>
C:#define <math.h>
D:#define <stdio.h>
答案: 【#include <math.h>

3、 问题:设有以下定义,则下面给出的语句中错误的是int a=0; 
float b=1.25;
char c=’A’;

define d 2

选项:
A:d++;
B:(a+b)++;
C:(-a)++;
D:(a+1)++;
E:a++;
F:b++;
G:c++;
答案: 【d++;;
(a+b)++;;
(-a)++;;
(a+1)++;

4、 问题:下列关于单目运算符++、–的叙述中正确的是
选项:
A:a++的运算过程是:先使用变量a的值,然后再执行a=a+1。
B:++a的运算过程是:先使用变量a的值,然后再执行a=a+1。
C:a++的运算过程是:先执行a=a+1,然后再使用变量a的值。
D:a++和++a都是最终使变量a执行a=a+1,因此对于包含a++或++a的表达式而言(如j=a++;或者j=++a;),两种情况下表达式的最终运算结果一定是相同的。
答案: 【a++的运算过程是:先使用变量a的值,然后再执行a=a+1。

5、 问题:以下程序的输出结果是:#include <stdio.h>
int main() 

    int a=1, b=2; 
    a=a+b; 
    b=a-b; 
    a=a-b; 
    printf("%d,%d", a, b );  
    return 0;
}
选项:
A:2,1
B:3,1
C:3,2
D:1,2
答案: 【2,1

6、 问题:下面哪条语句可以生成0-9之间的随机数
选项:
A:magic=rand()%10;
B:magic=rand()%10+1;
C:magic=rand()/10;
D:magic=rand()/10+1;
答案: 【magic=rand()%10;

7、 问题:在下面的C语言语句中,存在错误的是
选项:
A:int a=b=10;
B:int a=10,b=10;
C:int a,b;a=b=10;
D:int a,b;a=10;b=10;
答案: 【int a=b=10;

8、 问题:若有以下定义,则表达式“a * b + d – c”的值的类型为#include <stdio.h>
int main()
{
    char  a;
    int b;
    float  c;
    double d;
    ….
    return 0;
}
选项:
A:double
B:int
C:float
D:char
答案: 【double

9、 问题:十进制3位数整数x,下面哪条语句能正确分离出它的十位上的数字d?
选项:
A:d=(x-(x/100)100)/10;
B:d=(x%100)/10;
C:d=(x/10)%10;
D:d=x%10;
E:d=(x-x%10)/10;
F:d=x%100;
答案: 【d=(x-(x/100)
100)/10;;
d=(x%100)/10;;
d=(x/10)%10;】

10、 问题:在C语言中对下面的语句而言,哪个说法是错误的?int a, b;
选项:
A:变量a和b中的值都是0
B:变量a和b中都没有数值
C:变量a和b中的值都是未知的随机数
D:a和b都是整型变量
E:变量a和b占用的内存空间的大小是相同的
答案: 【变量a和b中的值都是0;
变量a和b中都没有数值

11、 问题:下列程序的输出结果是#include <stdio.h>
int main()

   int a=7,b=5;   
   printf("%d",b/a);
   return 0;   
}
选项:
A:0
B:5
C:1
D:0.7
答案: 【0

12、 问题:程序运行后的输出结果是#include <stdio.h>
int main()

    int m=3,n=4,x;
    x=m++;
    ++n;
    x=x+8/n;
    printf("%d,%d",x,m);
    return 0;
}
选项:
A:4,4
B:4,3
C:5,4
D:5,3
答案: 【4,4

13、 问题:下面程序的运行结果是#include  <stdio.h>
int main()
{
    int    a = 2, b = 3 ;
    float  x = 3.5, y = 2.5 ;
    printf("%f", (float)(a+b) / 2 + (int)x % (int)y) ;
    return 0;
}
选项:
A:3.500000
B:3.000000
C:3.5
D:3
答案: 【3.500000

14、 问题:以下非法的赋值语句是
选项:
A:++(i+1);
B:x=(j–);
C:n=++i;
D:j++;
答案: 【++(i+1);

15、 问题:已知int a,b;并且有a=5%3;以及b=5/3;,则a和b的值分别是
选项:
A:2和1
B:0和1.67
C:3和1
D:5和1
E:0和1
F:3和1.67
G:5和1.67
答案: 【2和1

16、 问题:设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
选项:
A:6.000000
B: 6.500000
C:6
D:5.500000  
答案: 【6.000000

17、 问题:以下程序的运行结果是#include <stdio.h>
int main() 

    int  a = 12, b = 3; 
    float  x = 18.5, y = 4.5; 
    printf("%f", (float)(a * b) / 2); 
    printf("%d", (int)x %(int)y); 
    return 0;
}
选项:
A:18.0000002
B:182
C:182.000000
D:18.0000002.000000
答案: 【18.0000002

18、 问题:在C语言中,要求操作数必须是整型的运算符是
选项:
A:%
B:/
C:*
D:+
E:-
答案: 【%

19、 问题:程序运行后的输出结果是#include <stdio.h>
int main()

    char a=’a’;
    printf("%c,",++a);
    printf("%c",a++);
    return 0;
}
选项:
A:b,b
B:b,c
C:a,b
D:a,c
答案: 【b,b

20、 问题:若以下选项中的变量已正确定义,则正确的赋值语句是
选项:
A:x3=x2=x1=0; 
B:x1=26.8%3;
C:1+2=x2; 
D:x4=1+2=3;
答案: 【x3=x2=x1=0; 

第3周——从键盘中来,到键盘中去,开始输入和输出啦 第3周测验

1、 问题:分析下列程序,写出程序运行结果#include <stdio.h>
int main()

    char c1 = ‘a’, c2 = ‘b’, c3 = ‘c’;
    printf("a%cb%cc%cabc", c1, c2, c3);
    return 0;
}
选项:
A:aabbccabc
B:acbcabc
C:aabcabc
D:acbbcabc
答案: 【aabbccabc

2、 问题:有如下语句,为使变量a的值为1,b的值为2,从键盘输入数据的正确形式是scanf("a=%d,b=%d",&a,&b);
选项:
A:a=1,b=2
B:1 2
C:1,2
D:a=1 b=2
答案: 【a=1,b=2

3、 问题:#include <stdio.h>
int main()

    int a,b,c,d;
    scanf("%c%c%d,%d",&a,&b,&c,&d);
    printf("%c,%c,%c,%c",a,b,c,d);
    return 0;
}若运行以上程序时从键盘上输入:6565,66<回车>。则输出结果是
选项:
A:6,5,A,B
B:6,5,65,66
C:6,5,6,5
D:6,5,6,6
答案: 【6,5,A,B

4、 问题:给出程序的运行结果,程序运行时从键盘输入:54321<回车>#include <stdio.h>
int main()
{  
    int a,b,s;
    scanf("%2d%2d",&a,&b);
    s=a/b;
    printf("s=%d",s);
    return 0;
}
选项:
A:1
B:1.6875
C:2
D:0
答案: 【1

5、 问题:以下程序的输出结果为#include <stdio.h> 
int main() 

   float a = 1234.567,b = 55.32; 
   printf("a = %4.2f, b = %5.1f", a,b); 
   return 0;
 }
选项:
A:a = 1234.57, b = 55.3
B:a =1234, b =55
C:a = 1234.6, b = 5.32
D:a =1234.567, b = 55.32
答案: 【a = 1234.57, b = 55.3

6、 问题:以下程序的输出结果为#include <stdio.h>
int main()
{
      int a=2, c=5;
      printf("a = %%d, b = %%d", a, c);
      return 0;
}
选项:
A:a = %d, b = %d
B:a = %2, b = %5
C:a = 2, b = 5
D:a = %%d, b = %%d
答案: 【a = %d, b = %d

7、 问题:有以下程序,运行时若输入为B,则输出是#include <stdio.h>
int main()
 { 
     char ch;
     ch=getchar();
     ch=ch+32;
     printf("%c",ch);
     return 0;
}
选项:
A:b
B:98
C:32
D:66
答案: 【b

8、 问题:在调用printf函数输出数据时,当数据的实际位宽小于printf函数中的指定位宽时,下面叙述正确的是
选项:
A:如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。
B:如果格式字符前面没有负号,那么输出的数据将会左对齐、右补空格;如果格式字符前面有负号,那么输出的数据将会右对齐、左补空格。
C:如果格式字符前面没有负号,那么输出的数据将会右对齐、左补0;如果格式字符前面有负号,那么输出的数据将会左对齐、右补0。
D:如果格式字符前面没有负号,那么输出的数据将会左对齐、右补0;如果格式字符前面有负号,那么输出的数据将会右对齐、左补0。
答案: 【如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。

9、 问题:设有语句“char c=’\72′;”,则变量c
选项:
A:包含1个字符
B:包含2个字符
C:包含3个字符
D:不合法
答案: 【包含1个字符

10、 问题:在下列语句中存在错误的是
选项:
A:int a,b;scanf("%d %f",&a,&b);
B:int a,b;scanf("%d %d",a,b);
C:int a,b;scanf("%d%d",&a,&b);printf("%d %d",a,b);
D:float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);
E:float a,b;scanf("%f %f",&a,&b);printf("%f %f",a,b);
F:float a,b;scanf("%f %f",&a,&b);printf("a=%4.3f,b=%4.3f",a,b);
G:int a,b;scanf("%2d%2d",&a,&b);printf("a=%d,b=%d",a,b);
H:int a,b;scanf("%d,%d",&a,&b);printf("a=%2d,b=%2d",a,b);
I:int a,b;scanf("a=%d,b=%d",&a,&b);printf("a=%d,b=%d",a,b);
答案: 【int a,b;scanf("%d %f",&a,&b);;
int a,b;scanf("%d %d",a,b);;
int a,b;scanf("%d%d",&a,&b);printf("%d %d",a,b);;
float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);

11、 问题:程序运行后的输出结果是#include <stdio.h>
int main()

    int a=666,b=888;
    printf("%d",a,b);
    return 0;
}
选项:
A:666
B:错误信息 
C:888  
D:666,888
答案: 【666

12、 问题:有以下语句段#include <stdio.h>
int main()
{
    int n1=10,n2=20;
    printf("___",n1,n2);
    return 0;
}要求按以下格式输出n1和n2的值,每个输出行都是从第一列开始,则空白处代码填写正确的是运行结果示例如下:n1=10n2=20
选项:
A:n1=%dn2=%d
B:n1=%dn2=%d
C:n1=%d,n2=%d
D:n1=%d n2=%d
答案: 【n1=%dn2=%d

13、 问题:以下选项中合法的字符常量是
选项:
A: ‘\010’
B:"B"
C:68
D:D
答案: 【 ‘\010’

14、 问题:写出下面程序的输出结果#include<stdio.h>
int main()
  {
     int x=6,y,z;
     x*=18+1;
     printf("%d,",x–);
     x+=y=z=11;
     printf("%d",x);
     return 0;
}
选项:
A:114,124
B:113,124
C:109,116
D:110,116
答案: 【114,124

15、 问题:给出程序的运行结果,程序运行时从键盘输入:45-12<回车>#include <stdio.h>
int main()
{  
    int a,b,sum;
    scanf("%d%*c%d",&a,&b);
    sum=a+b;
    printf("sum=%d",sum);
    return 0;
}
选项:
A:57
B:输出报错
C:33
D:输出一个随机数
答案: 【57

16、 问题:给出程序的运行结果#include <stdio.h>
int main()
{  
    int a,b,s;
    char op;
    scanf("%d %c%d",&a,&op,&b);
    s=a%b;
    printf("s=%d",s);
    return 0;
}程序运行时从键盘输入:15<回车>%5<回车>
选项:
A:0
B:程序报错
C:输出一个随机数
D:3
答案: 【0

17、 问题:给出程序的运行结果#include <stdio.h>
int main()
{
  int a,b,c,d;
  char op1,op2,op3;
  int sum;
  printf("please input:a+b+c+d");
  scanf("%d%c%d%c%d%c%d",&a,&op1,&b,&op2,&c,&op3,&d);
  sum=a+b+c+d;
  printf("sum=%d",sum);
  return 0;
}程序运行时从键盘输入:1<回车>2+3+1<回车>
选项:
A:7
B:1
C:3
D:6
答案: 【7

18、 问题:在C语言中,字符型数据在内存中以(  )形式存放
选项:
A:ASCII码
B:国标码
C:BCD码
D:反码
答案: 【ASCII码

19、 问题:以下程序的执行结果是#include  <stdio.h> 
int main() 

   int  a = 5, b = 4, x, y; 
   x = 2  a++;
   y = –b 
 2; 
   printf("a=%d, x=%d", a, x); 
   printf("b=%d, y=%d", b, y); 
   return 0;
}
选项:
A:a=6,  x=10b=3,  y=6
B:a=6,  x=10b=3,  y=8
C:a=6,  x=12b=3,  y=6
D:以上均不对
答案: 【a=6,  x=10b=3,  y=6

20、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()

    int a; 
    int c=10;
    float f=100.0; 
    double x;
    a=f/=c*=(x=6.5);
    printf("%d,%d,%3.1f,%3.1f",a,c,f,x);
    return 0;
}
选项:
A:1,65,1.5,6.5
B:1,65,1,6.5
C:1,65,1.0,6.5
D: 2,65,1.5,6.5
答案: 【1,65,1.5,6.5

21、 问题:给出程序的运行结果#include <stdio.h>
int main()
{
  char a,b;
  int s;
  printf("please input a and b:");
  a=getchar();
  b=getchar();
  s=a+b;
  printf("a=%c,b=%c",a,b);
  return 0;
}程序运行时从键盘输入:1<空格>2<回车>
选项:
A:a=1,b=
B:a=1,b=2
C:a= ,b=2
D:输出乱码
答案: 【a=1,b=

22、 问题:以下程序的输出结果是#include <stdio.h>
int main()
{
    int a=1234;
    printf("%2d",a);
    return 0;
}
选项:
A:1234
B:12
C:34
D:提示出错、无结果
答案: 【1234

第3周——从键盘中来,到键盘中去,开始输入和输出啦 练兵区——单选题——不计入总分

1、 问题:以下程序的输出结果为#include <stdio.h> 
int main() 

   float a = 1234.567,b = 55.32; 
   printf("a = %4.2f, b = %5.1f", a,b); 
   return 0;
 }
选项:
A:a = 1234.57, b = 55.3
B:a =1234, b =55
C:a = 1234.6, b = 5.32
D:a =1234.567, b = 55.32
答案: 【a = 1234.57, b = 55.3

2、 问题:以下选项中合法的字符常量是
选项:
A: ‘\010’
B:"B"
C:68
D:D
答案: 【 ‘\010’

3、 问题:给出程序的运行结果程序运行时从键盘输入:1<空格>2<回车>#include <stdio.h>
int main()
{
  char a,b;
  int s;
  printf("please input a and b:");
  a=getchar();
  b=getchar();
  s=a+b;
  printf("a=%c,b=%c",a,b);
  return 0;
}
选项:
A:a=1,b=
B:a=1,b=2
C:a= ,b=2
D:输出乱码
答案: 【a=1,b=

4、 问题:有如下语句,为使变量a的值为1,b的值为2,从键盘输入数据的正确形式是scanf("a=%d,b=%d",&a,&b)
选项:
A:a=1,b=2
B:1 2
C:1,2
D:a=1 b=2
答案: 【a=1,b=2

5、 问题:#include <stdio.h>
int main()

    int a,b,c,d;
    scanf("%c%c%d,%d",&a,&b,&c,&d);
    printf("%c,%c,%c,%c",a,b,c,d);
    return 0;
}若运行以上程序时从键盘上输入:6565,66<回车>。则输出结果是
选项:
A:6,5,A,B
B:6,5,65,66
C:6,5,6,5
D:6,5,6,6
答案: 【6,5,A,B

6、 问题:给出程序的运行结果,程序运行时从键盘输入:54321<回车>#include <stdio.h>
int main()
{  
    int a,b,s;
    scanf("%2d%2d",&a,&b);
    s=a/b;
    printf("s=%d",s);
    return 0;
}
选项:
A:1
B:1.6875
C:2
D:0
答案: 【1

7、 问题:在调用printf函数输出数据时,当数据的实际位宽小于printf函数中的指定位宽时,下面叙述正确的是
选项:
A:如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。
B:如果格式字符前面没有负号,那么输出的数据将会左对齐、右补空格;如果格式字符前面有负号,那么输出的数据将会右对齐、左补空格。
C:如果格式字符前面没有负号,那么输出的数据将会右对齐、左补0;如果格式字符前面有负号,那么输出的数据将会左对齐、右补0。
D:如果格式字符前面没有负号,那么输出的数据将会左对齐、右补0;如果格式字符前面有负号,那么输出的数据将会右对齐、左补0。
答案: 【如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。

8、 问题:程序运行后的输出结果是#include <stdio.h>
int main()

    int a=666,b=888;
    printf("%d",a,b);
    return 0;
}
选项:
A:666
B:错误信息 
C:888
D:666,888
答案: 【666

9、 问题:在C语言中,字符型数据在内存中以(  )形式存放
选项:
A:ASCII码
B:国标码
C:BCD码
D:反码
答案: 【ASCII码

10、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()

    int a; 
    int c=10;
    float f=100.0; 
    double x;
    a=f/=c*=(x=6.5);
    printf("%d,%d,%3.1f,%3.1f",a,c,f,x);
    return 0;
}
选项:
A:1,65,1.5,6.5
B:1,65,1,6.5
C:1,65,1.0,6.5
D: 2,65,1.5,6.5
答案: 【1,65,1.5,6.5

11、 问题:以下程序的输出结果是#include <stdio.h>
int main()
{
    int a=1234;
    printf("%2d",a);
    return 0;
}
选项:
A:1234
B:12
C:34
D:提示出错、无结果
答案: 【1234

12、 问题:设有语句“char c=’\72′;”,则变量c
选项:
A:包含1个字符
B:包含2个字符
C:包含3个字符
D:不合法
答案: 【包含1个字符

13、 问题:有以下语句段#include <stdio.h>
int main()
{
    int n1=10,n2=20;
    printf("___",n1,n2);
    return 0;
}要求按以下格式输出n1和n2的值,每个输出行都是从第一列开始,则空白处代码填写正确的是运行结果示例如下:n1=10n2=20
选项:
A:n1=%dn2=%d
B:n1=%dn2=%d
C:n1=%d,n2=%d
D:n1=%d n2=%d
答案: 【n1=%dn2=%d

14、 问题:给出程序的运行结果,程序运行时从键盘输入:45-12<回车>#include <stdio.h>
int main()
{  
    int a,b,sum;
    scanf("%d%*c%d",&a,&b);
    sum=a+b;
    printf("sum=%d",sum);
    return 0;
}
选项:
A:57
B:输出报错
C:33
D:输出一个随机数
答案: 【57

15、 问题:给出程序的运行结果#include <stdio.h>
int main()
{  
    int a,b,s;
    char op;
    scanf("%d %c%d",&a,&op,&b);
    s=a%b;
    printf("s=%d",s);
    return 0;
}程序运行时从键盘输入:15<回车>%5<回车>
选项:
A:0
B:程序报错
C:输出一个随机数
D:3
答案: 【0

16、 问题:分析下列程序,写出程序运行结果#include <stdio.h>
int main()

    char c1 = ‘a’, c2 = ‘b’, c3 = ‘c’;
    printf("a%cb%cc%cabc", c1, c2, c3);
    return 0;
}
选项:
A:aabbccabc
B:acbcabc
C:aabcabc
D:acbbcabc
答案: 【aabbccabc

17、 问题:以下程序的输出结果为#include <stdio.h>
int main()
{
      int a=2, c=5;
      printf("a = %%d, b = %%d", a, c);
      return 0;
}
选项:
A:a = %d, b = %d
B:a = %2, b = %5
C:a = 2, b = 5
D:a = %%d, b = %%d
答案: 【a = %d, b = %d

18、 问题:有以下程序,运行时若输入为B,则输出是#include <stdio.h>
int main()
 { 
     char ch;
     ch=getchar();
     ch=ch+32;
     printf("%c",ch);
     return 0;
}
选项:
A:b
B:98
C:32
D:66
答案: 【b

19、 问题:在下列语句中存在错误的是
选项:
A:int a,b;scanf("%d %f",&a,&b);
B:int a,b;scanf("%d %d",a,b);
C:int a,b;scanf("%d%d",&a,&b);printf("%d %d",a,b);
D:float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);
E:float a,b;scanf("%f %f",&a,&b);printf("%f %f",a,b);
F:float a,b;scanf("%f %f",&a,&b);printf("a=%4.3f,b=%4.3f",a,b);
G:int a,b;scanf("%2d%2d",&a,&b);printf("a=%d,b=%d",a,b);
H:int a,b;scanf("%d,%d",&a,&b);printf("a=%2d,b=%2d",a,b);
I:int a,b;scanf("a=%d,b=%d",&a,&b);printf("a=%d,b=%d",a,b);
答案: 【int a,b;scanf("%d %f",&a,&b);;
int a,b;scanf("%d %d",a,b);;
int a,b;scanf("%d%d",&a,&b);printf("%d %d",a,b);;
float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);

20、 问题:写出下面程序的输出结果#include<stdio.h>
int main()
  {
     int x=6,y,z;
     x*=18+1;
     printf("%d,",x–);
     x+=y=z=11;
     printf("%d",x);
     return 0;
}
选项:
A:114,124
B:113,124
C:109,116
D:110,116
答案: 【114,124

21、 问题:给出程序的运行结果#include <stdio.h>
int main()
{
  int a,b,c,d;
  char op1,op2,op3;
  int sum;
  printf("please input:a+b+c+d");
  scanf("%d%c%d%c%d%c%d",&a,&op1,&b,&op2,&c,&op3,&d);
  sum=a+b+c+d;
  printf("sum=%d",sum);
  return 0;
}程序运行时从键盘输入:1<回车>2+3+1<回车>
选项:
A:7
B:1
C:3
D:6
答案: 【7

22、 问题:以下程序的执行结果是#include  <stdio.h> 
int main() 

   int  a = 5, b = 4, x, y; 
   x = 2  a++;
   y = –b 
 2; 
   printf("a=%d, x=%d", a, x); 
   printf("b=%d, y=%d", b, y); 
   return 0;
}
选项:
A:a=6,  x=10b=3,  y=6
B:a=6,  x=10b=3,  y=8
C:a=6,  x=12b=3,  y=6
D:以上均不对
答案: 【a=6,  x=10b=3,  y=6

第4周——无处不在的抉择 第4周测验

1、 问题:程序代码如下:#include <stdio.h>
int main()
{
  int a,b;
  printf("please input a and b:");
  scanf("%d%d",&a,&b);
  printf("the output data is %d",a<b?b:a);
  return 0;
}从键盘输入以下数据:2<回车>7<回车>则程序输出为
选项:
A:the output data is 7
B:the output data is 2
C:the output data is 1
D:the output data is 0
答案: 【the output data is 7

2、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()
{ int a,b,c;
  a=10;
  b=20;
  c=(a%b<1)||(a/b>1);
  printf("%d,%d,%d",a%b,a/b,c);
  return 0;
}
选项:
A:10,0,0
B:10,1,0
C:10,0,1
D:10,1,1
答案: 【10,0,0

3、 问题:从键盘输入三角形的三边长为a,b,c,按下面公式计算并输出三角形的面积。程序代码如下,但程序运行后输出结果不正确,请找出有问题的语句。#include <stdio.h>

include  <math.h>

int main()
{
    float  a, b, c;             
    float  s, area;                
    printf("Input a,b,c:");
    scanf("%f,%f,%f",&a,&b,&c);
    if (a+b>c && b+c>a && a+c>b)  
    {
       s = 1/2  (a + b + c); 
       area = sqrt(s 
 (s – a)  (s – b)  (s – c));
       printf("area=%.2f", area); 
    }
    else
    {
       printf("It is not a triangle");    
    }
    return 0; 
}
选项:
A:第11行:   s = 1/2 * (a + b + c); 
B:第9行:   if (a+b>c && b+c>a && a+c>b)  
C:第12行:   area = sqrt(s * (s – a) * (s – b) * (s – c));
D:第8行:  scanf("%f,%f,%f",&a,&b,&c);
答案: 【第11行:   s = 1/2 * (a + b + c); 

4、 问题:编程设计一个简单的计算器程序,要求用户从键盘输入如下形式的表达式:        操作数1    运算符op    操作数2然后,计算并输出表达式的值指定的运算符为:    加(+)    减(-)    乘()    除(/)代码如下,所给程序是否存在错误,若有,找出错误所在并改正。#include <stdio.h>
int main()
{
         float    data1, data2;            
         char   op;
         printf("Please enter the expression:");
         scanf("%f  %c%f", &data1, &op, &data2); /
 %c前有一个空格 
         switch (op) 
         {
                   case ‘+’:
                            printf("%f + %f = %f", data1, data2, data1 + data2); 
                            break;
                   case ‘-‘:
                            printf("%f – %f = %f", data1, data2, data1 – data2);
                            break;
                   case ‘
‘:
                            printf("%f  %f = %f", data1, data2, data1  data2); 
                            break;
                   case ‘/’:
                            printf("%f/%f = %f", data1, data2,data1/data2); 
                            break;
                   default: 
                            printf("Invalid operator!");
         }
        return 0;
}
选项:
A:第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!");else  printf("%f/%f = %f", data1, data2, data1/data2);同时,第1行语句下方应加入#include  <math.h>#define   EPS 1e-6
B:default分支缺少break语句
C:没有错误
D:第20行语句有错误,改成:if (data2=0) printf("Division by zero!");else  printf("%f/%f = %f", data1, data2, data1/data2);
答案: 【第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!");else  printf("%f/%f = %f", data1, data2, data1/data2);同时,第1行语句下方应加入#include  <math.h>#define   EPS 1e-6

5、 问题:若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
选项:
A:(x-y)<-10||!(y-x)>10
B: fabs(x-y)<10
C:x-y>-10 && x-y<10
D:(x-y)*(x-y)<100
答案: 【(x-y)<-10||!(y-x)>10

6、 问题:下列复合语句中,不能实现两数交换的是
选项:
A:{
  a=b;
  b=a;
}
B:{
    b = a * b;
    a = b / a;
    b = b / a; 
}
C:{
   t=a;
   a=b;
   b=t;
}
D:{
    a = a + b;
    b = a – b;
    a = a – b; 
}
答案: 【{
  a=b;
  b=a;
}

7、 问题:写出下面程序的输出结果#include <stdio.h>
int main()

   int x=1, y=0, a=0, b=0;
   switch(x)
   {  
       case 1:
              switch(y)
              {
                case 0: a++; 
                case 1: b++;
              }
      case 2:  a++;
               b++;
   }
   printf("a=%d, b=%d", a, b) ;
   return 0;
}
选项:
A:a=2, b=2
B:a=2, b=1
C:a=1, b=1
D:a=1, b=0
答案: 【a=2, b=2

8、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()

   int a=5,b=4,c=3,d;
   d=(a>b>c);
   printf("%d",d);
   return 0;
}
选项:
A:0
B:1
C:5
D:4
E:3
答案: 【0

9、 问题:执行以下程序后的输出结果为#include <stdio.h>
int main()
{
   int a=1,b=0;
   switch (a)
   {  
     case  1:
            switch (b)
            {   
               case  0: printf("0");break;
               case  1: printf("1");break;
            }
    case  2: printf("2");break;
   }
  return 0;
}
选项:
A:0*2*
B:
0

C:0*1*2
D:有语法错误
答案: 【02

10、 问题:下面程序运行后的输出结果是#include <stdio.h> 
int main()
{
    int a=3,b=4,c=5,d=2;
    if(a>b)
    { 
         if(b>c)
         { 
             printf("%d",d++ +1);
         }
         else
         { 
             printf("%d",++d +1);
         }
   }
   printf("%d",d);
   return 0;
}
选项:
A:2
B:3
C:43
D:44
答案: 【2

11、 问题:下面程序代码的功能是判断输入整数的正负性和奇偶性,请将第19行和22行标号处缺少的代码填写完整。#include <stdio.h>
int main()
{
    int m;
    printf("Input m: ");
    scanf("%d", &m);        //输入一个整数
    if (m > 0)              //是否为正数
    {
        if (m % 2 == 0)     //是正数,且能被2整除,则是正偶数
        {
            printf("%d is a positive even", m);
        }
        else                    //不能被2整除,则是正奇数
        {
            printf("%d is a positive odd", m);
        }
    }

    
   __          //判断是否为负数
    
    {
        __

        
        {
             printf("%d is a negative even", m);   //是负偶数
        }
        else
        {
             printf("%d is a negative odd", m);    //是负奇数
        }
    }
    else
    {
        printf("%d is zero.It is an even", m);    
    }
   return 0;
}
选项:
A:第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)
B:第19行代码: if(m < 0)第22行代码: if (m % 2 == 0)
C:第19行代码: else if(m < 0)第22行代码: if (m % 2 != 0)
D:第19行代码: if(m < 0)第22行代码: if (m % 2 != 0)
答案: 【第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)

12、 问题:程序功能:从键盘输入一个字符,判别它是否为大写字母。如果是,将它转换成小写字母,如果不是,不转换。在屏幕上输出最后得到的字符。程序代码如下,为实现上述功能,请将第8行标号处缺少的语句填写完整。#include<stdio.h> 
int main() 
{  
  char c;   
  printf("Please input a character:");  
  scanf("%c",&c); 
  if(c >=’A’&&c <= ‘Z’)   
    c =___;  
  printf("%c",c); 
  return 0;  
}
选项:
A:c+32 
B:c+48
C:C+65
D:C+97
答案: 【c+32 

13、 问题:执行下列程序,k输入为1时的输出结果是#include <stdio.h>
int main()

  int k;
  scanf("%d",&k);
  switch(k)
  { 
     case 1:   printf("%d",k++);
     case 2:   printf("%d",k++);
     case 3:   printf("%d",k++);
               break;
     default:  printf("Full!");
  } 
  return 0;
}
选项:
A:123
B:1
C:2
D:3
答案: 【123

14、 问题:编程计算下面的分段函数,根据从键盘输入的x值,在屏幕上输出y值。 程序代码如下,为完成以上功能,请将第13行标号处缺少的代码填写完整。 #include <stdio.h>

include <math.h>

int main()
{
    int x;
    double y;
    printf("Input x: ");
    scanf("%d", &x);        // 输入一个整数
    if (x > 0)
    {
        y = exp(-x);        //如果大于0,计算y=exp(-x)的值 
    }
    _______
    {
        y = 1;              //x=0,则y=1
    }
    else
    {
        y = -exp(x);        //x<0,则y=-exp(x)
    }
    printf("y=%f", y);
    return 0;
}
选项:
A:else if (x == 0)
B:else if (x = 0)
C:if (x == 0)
D:if (x = 0)
答案: 【else if (x == 0)

15、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()

   int a=1,b=2,m=0,n=0,k;
   k=(n=b>a)||(m=a<b);
   printf("%d,%d",k,m);
   return 0;
}
选项:
A:1,0
B:0,0
C:0,1
D:1,1
答案: 【1,0

16、 问题:以下程序的功能是计算一元二次方程的根。代码如下,请将第10行标号处缺少的语句填写完整。 #include  <stdio.h>

include  <stdlib.h>

include  <math.h>

define   EPS 1e-6

int main()

      float  a, b, c, disc, p, q;
      printf("Please enter the coefficients a,b,c:"); 
      scanf("%f,%f,%f", &a, &b, &c); 
      _________      / a=0时,输出"不是二次方程" /

     {
               printf("It is not a quadratic equation!");
               exit(0);  / C标准库函数,用于终止整个程序的执行,强制返回操作系统 /
     }
      disc = b  b – 4  a  c; / 计算判别式 /
      p = – b / (2 
 a);
      q = sqrt(fabs(disc)) / (2  a);
      if (fabs(disc) <= EPS)    /
 判别式等于0时,输出两相等实根 /
      {
                   printf("x1 = x2 = %.2f", p);
      }
     else                      
     { 
                 if (disc > EPS)        /
 判别式大于0时,输出两不等实根 /
                 {
                            printf("x1 = %.2f, x2 = %.2f", p+q, p-q);
                 }
                 else                     /
 判别式小于0时,输出两共轭复根 */
                 {
                            printf("x1 = %.2f+%.2fi, ", p, q);
                            printf("x2 = %.2f-%.2fi", p, q);
                 }
      }
     return 0;
}
选项:
A:if (fabs(a) <= EPS)
B:if (a <= EPS)       
C:if (a=0)     
D:if (a<= EPS || a>=-EPS)
答案: 【if (fabs(a) <= EPS)

17、 问题:下列说法错误的是()。
选项:
A:case后的“常量表达式”的类型只能是整型。
B:若case后面的语句省略不写,则表示它什么也不做。
C:switch语句中的break和default可有可无。
D:每个case后的“常量表达式”的类型应该与switch后括号内表达式的类型一致。
E:程序执行到switch语句时,先计算表达式的值,然后自上而下寻找与该值匹配的case常量,找到后则按顺序执行此case后的所有语句,而不再进行判断,直到遇break语句或右花括号}为止。
F:若所有的case常量都不能与表达式的值相匹配,那么就执行default后面的语句。通常用于处理不在合理区间内的非法数据。
G:每个case后的常量只起语句标号的作用,所以case常量的值必须互不相同,而且在每个case的语句序列后都有break的情况下,改变case常量出现的次序,不影响程序的运行结果。
H:case后面的表达式不能是含有变量的关系表达式和逻辑表达式,它不能像if语句那样起到判断表达式真假的作用。
答案: 【case后的“常量表达式”的类型只能是整型。;
若case后面的语句省略不写,则表示它什么也不做。;
switch语句中的break和default可有可无。

第4周——无处不在的抉择 练兵区——单选题——不计入总分

1、 问题:下面程序代码的功能是判断输入整数的正负性和奇偶性,请将第19行和22行标号处缺少的代码填写完整。#include <stdio.h>
int main()
{
    int m;
    printf("Input m: ");
    scanf("%d", &m);        //输入一个整数
    if (m > 0)              //是否为正数
    {
        if (m % 2 == 0)     //是正数,且能被2整除,则是正偶数
        {
            printf("%d is a positive even", m);
        }
        else                    //不能被2整除,则是正奇数
        {
            printf("%d is a positive odd", m);
        }
    }
    
    __          //判断是否为负数
    
    {
        __

        
        {
             printf("%d is a negative even", m);   //是负偶数
        }
        else
        {
             printf("%d is a negative odd", m);    //是负奇数
        }
    }
    else
    {
        printf("%d is zero.It is an even", m);    
    }
   return 0;
}
选项:
A:第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)
B:第19行代码: if(m < 0)第22行代码: if (m % 2 == 0)
C:第19行代码: else if(m < 0)第22行代码: if (m % 2 != 0)
D:第19行代码: if(m < 0)第22行代码: if (m % 2 != 0)
答案: 【第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)

2、 问题:执行以下程序后的输出结果为#include <stdio.h>
int main()
{
   int a=1,b=0;
   switch (a)
   {  
     case  1:
            switch (b)
            {   
               case  0: printf("0");break;
               case  1: printf("1");break;
            }
    case  2: printf("2");break;
   }
  return 0;
}
选项:
A:0*2*
B:
0

C:0*1*2
D:有语法错误
答案: 【02

3、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()

   int a=1,b=2,m=0,n=0,k;
   k=(n=b>a)||(m=a<b);
   printf("%d,%d",k,m);
   return 0;
}
选项:
A:1,0
B:0,0
C:0,1
D:1,1
答案: 【1,0

4、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()

    int a,b,c;
    a=10;
    b=20;
    c=(a%b<1)||(a/b>1);
    printf("%d,%d,%d",a%b,a/b,c);
    return 0;
}
选项:
A:10,0,0
B:10,1,0
C:10,0,1
D:10,1,1
答案: 【10,0,0

5、 问题:编程设计一个简单的计算器程序,要求用户从键盘输入如下形式的表达式:        操作数1    运算符op    操作数2然后,计算并输出表达式的值指定的运算符为:    加(+)    减(-)    乘()    除(/)代码如下,所给程序是否存在错误,若有,找出错误所在并改正。#include <stdio.h>
int main()
{
         float    data1, data2;            
         char   op;
         printf("Please enter the expression:");
         scanf("%f  %c%f", &data1, &op, &data2); /
 %c前有一个空格 
         switch (op) 
         {
                   case ‘+’:
                            printf("%f + %f = %f", data1, data2, data1 + data2); 
                            break;
                   case ‘-‘:
                            printf("%f – %f = %f", data1, data2, data1 – data2);
                            break;
                   case ‘
‘:
                            printf("%f  %f = %f", data1, data2, data1  data2); 
                            break;
                   case ‘/’:
                            printf("%f/%f = %f", data1, data2,data1/data2); 
                            break;
                   default: 
                            printf("Invalid operator!");
         }
        return 0;
}
选项:
A:第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!");else  printf("%f/%f = %f", data1, data2, data1/data2);同时,第1行语句下方应加入#include  <math.h>#define   EPS 1e-6
B:default分支缺少break语句
C:没有错误
D:第20行语句有错误,改成:if (data2=0) printf("Division by zero!");else  printf("%f/%f = %f", data1, data2, data1/data2);
答案: 【第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!");else  printf("%f/%f = %f", data1, data2, data1/data2);同时,第1行语句下方应加入#include  <math.h>#define   EPS 1e-6

6、 问题:下列复合语句中,不能实现两数交换的是
选项:
A:{
  a=b;
  b=a;
}
B:{
    b = a * b;
    a = b / a;
    b = b / a; 
}
C:{
   t=a;
   a=b;
   b=t;
}
D:{
    a = a + b;
    b = a – b;
    a = a – b; 
}
答案: 【{
  a=b;
  b=a;
}

7、 问题:写出下面程序的输出结果#include <stdio.h>
int main()

   int x=1, y=0, a=0, b=0;
   switch(x)
   {  
       case 1:
              switch(y)
              {
                case 0: a++; 
                case 1: b++;
              }
      case 2:  a++;
               b++;
   }
   printf("a=%d, b=%d", a, b) ;
   return 0;
}
选项:
A:a=2, b=2
B:a=2, b=1
C:a=1, b=1
D:a=1, b=0
答案: 【a=2, b=2

8、 问题:执行下列程序,k输入为1时的输出结果是#include <stdio.h>
int main()

  int k;
  scanf("%d",&k);
  switch(k)
  { 
     case 1:   printf("%d",k++);
     case 2:   printf("%d",k++);
     case 3:   printf("%d",k++);
               break;
     default:  printf("Full!");
  } 
  return 0;
}
选项:
A:123
B:1
C:2
D:3
答案: 【123

9、 问题:编程计算下面的分段函数,根据从键盘输入的x值,在屏幕上输出y值。程序代码如下,为完成以上功能,请将第13行标号处缺少的代码填写完整。#include <stdio.h>

include <math.h>

int main()
{
    int x;
    double y;
    printf("Input x: ");
    scanf("%d", &x);        // 输入一个整数
    if (x > 0)
    {
        y = exp(-x);        //如果大于0,计算y=exp(-x)的值 
    }
    _______
    {
        y = 1;              //x=0,则y=1
    }
    else
    {
        y = -exp(x);        //x<0,则y=-exp(x)
    }
    printf("y=%f", y);
    return 0;
}
选项:
A:else if (x == 0)
B:else if (x = 0)
C:if (x == 0)
D:if (x = 0)
答案: 【else if (x == 0)

10、 问题:以下程序的功能是计算一元二次方程的根。代码如下,请将第10行标号处缺少的语句填写完整。#include  <stdio.h>

include  <stdlib.h>

include  <math.h>

define   EPS 1e-6

int main()

      float  a, b, c, disc, p, q;
      printf("Please enter the coefficients a,b,c:"); 
      scanf("%f,%f,%f", &a, &b, &c); 
      _________      / a=0时,输出"不是二次方程" /
    
     {
               printf("It is not a quadratic equation!");
               exit(0);  / C标准库函数,用于终止整个程序的执行,强制返回操作系统 /
     }
      disc = b  b – 4  a  c; / 计算判别式 /
      p = – b / (2 
 a);
      q = sqrt(fabs(disc)) / (2  a);
      if (fabs(disc) <= EPS)    /
 判别式等于0时,输出两相等实根 /
      {
                   printf("x1 = x2 = %.2f", p);
      }
     else                      
     { 
                 if (disc > EPS)        /
 判别式大于0时,输出两不等实根 /
                 {
                            printf("x1 = %.2f, x2 = %.2f", p+q, p-q);
                 }
                 else                     /
 判别式小于0时,输出两共轭复根 */
                 {
                            printf("x1 = %.2f+%.2fi, ", p, q);
                            printf("x2 = %.2f-%.2fi", p, q);
                 }
      }
     return 0;
}
选项:
A:if (fabs(a) <= EPS)
B:if (a <= EPS)
C:if (a=0)
D:if (a<= EPS || a>=-EPS)
答案: 【if (fabs(a) <= EPS)

11、 问题:从键盘输入三角形的三边长为a,b,c,按下面公式计算并输出三角形的面积。程序代码如下,但程序运行后输出结果不正确,请找出有问题的语句。#include <stdio.h>

include  <math.h>

int main()
{
    float  a, b, c;             
    float  s, area;                
    printf("Input a,b,c:");
    scanf("%f,%f,%f",&a,&b,&c);
    if (a+b>c && b+c>a && a+c>b)  
   {
       s = 1/2  (a + b + c); 
       area = sqrt(s 
 (s – a)  (s – b)  (s – c));
       printf("area=%.2f", area); 
    }
    else
    {
       printf("It is not a triangle");    
    }
    return 0; 
}
选项:
A:第11行:   s = 1/2 * (a + b + c); 
B:第9行:   if (a+b>c && b+c>a && a+c>b)  
C:第12行:   area = sqrt(s * (s – a) * (s – b) * (s – c));
D:第8行:  scanf("%f,%f,%f",&a,&b,&c);
答案: 【第11行:   s = 1/2 * (a + b + c); 

12、 问题:若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
选项:
A:(x-y)<-10||!(y-x)>10
B: fabs(x-y)<10
C:x-y>-10 && x-y<10
D:(x-y)*(x-y)<100
答案: 【(x-y)<-10||!(y-x)>10

13、 问题:程序功能:从键盘输入一个字符,判别它是否为大写字母。如果是,将它转换成小写字母,如果不是,不转换。在屏幕上输出最后得到的字符。程序代码如下,为实现上述功能,请将第8行标号处缺少的语句填写完整。#include<stdio.h> 
int main() 
{  
  char c;   
  printf("Please input a character:");  
  scanf("%c",&c); 
  if(c >=’A’&&c <= ‘Z’)   
    c =___;  
  printf("%c",c); 
  return 0;  
}
选项:
A:c+32
B:c+48
C:c+65
D:c+97
答案: 【c+32

14、 问题:程序代码如下:#include <stdio.h>
int main()
{
  int a,b;
  printf("please input a and b:");
  scanf("%d%d",&a,&b);
  printf("the output data is %d",a<b?b:a);
  return 0;
}从键盘输入以下数据:2<回车>7<回车>则程序输出为
选项:
A:the output data is 7
B:the output data is 2
C:the output data is 1
D:the output data is 0
答案: 【the output data is 7

15、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()

   int a=5,b=4,c=3,d;
   d=(a>b>c);
   printf("%d",d);
   return 0;
}
选项:
A:0
B:1
C:5
D:4
E:3
答案: 【0

16、 问题:下面程序运行后的输出结果是#include <stdio.h> 
int main()
{
    int a=3,b=4,c=5,d=2;
    if(a>b)
    { 
         if(b>c)
         { 
             printf("%d",d++ +1);
         }
         else
         { 
             printf("%d",++d +1);
         }
   }
   printf("%d",d);
   return 0;
}
选项:
A:2
B:3
C:43
D:44
答案: 【2

17、 问题:下列说法错误的是()。
选项:
A:case后的“常量表达式”的类型只能是整型。
B:若case后面的语句省略不写,则表示它什么也不做。
C:switch语句中的break和default可有可无。
D:每个case后的“常量表达式”的类型应该与switch后括号内表达式的类型一致。
E:程序执行到switch语句时,先计算表达式的值,然后自上而下寻找与该值匹配的case常量,找到后则按顺序执行此case后的所有语句,而不再进行判断,直到遇break语句或右花括号}为止。
F:若所有的case常量都不能与表达式的值相匹配,那么就执行default后面的语句。通常用于处理不在合理区间内的非法数据。
G:每个case后的常量只起语句标号的作用,所以case常量的值必须互不相同,而且在每个case的语句序列后都有break的情况下,改变case常量出现的次序,不影响程序的运行结果。
H:case后面的表达式不能是含有变量的关系表达式和逻辑表达式,它不能像if语句那样起到判断表达式真假的作用。
答案: 【case后的“常量表达式”的类型只能是整型。;
若case后面的语句省略不写,则表示它什么也不做。;
switch语句中的break和default可有可无。

第5周——周而复始的循环之道 第5周测验

1、 问题:程序运行后的输出结果是#include <stdio.h>
int main()

        int i;
  
        for(i=0;i<3;i++)   
        
            switch(i)    
                   
                {       
     
                    case 0: printf("%d",i);
         
                    case 2: printf("%d",i);
         
                    default: printf("%d",i);       
    
                } 
    
        return 0; 
 
}
选项:
A:000122
B:022111
C:021021
D:012
答案: 【000122

2、 问题:若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是
选项:
A:for( i=1; i<=5; i++ )
{
    p=1;
    p=i;
}
B:for(i=1,p=1;i<=5;i++) p
=i;
C:i=1;
p=1;
while ( i<=5 )
{
    p=i;
    i++;
}
D:i=1;
p=1;
do {
        p
=i;
        i++;
} while ( i<=5 );
答案: 【for( i=1; i<=5; i++ )
{
    p=1;
    p*=i;
}

3、 问题:以下程序执行后的输出结果是#include <stdio.h>
int main( )

    int x=0,y=5,z=3;
    while(z–>0 && ++x<5) 
    {
        y=y-1;
    }
    printf("%d,%d,%d",x,y,z);
    return 0;
}
选项:
A:3,2,-1
B:3,2,0
C:4,3,-1
D:5,-2,-5
答案: 【3,2,-1

4、 问题:下面程序的输出是#include <stdio.h>
int main()

    int y=9;
    for( ; y>0; y–)
        {   
            if(y%3==0)
                { 
                    printf("%d", –y);
                    continue;
                }
        }
    return 0;
}
选项:
A:852 
B:741
C:963
D:875421 
答案: 【852 

5、 问题:爱因斯坦数学题。爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,最后剩下5阶;只有每步跨7阶,最后才正好1阶不剩。请问,这条阶梯共有多少阶?代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
int main()
{
    int  x = 1, find = 0;
    while (_)
    {
        if (
_______)
        {
                printf("x = %d", x);
                find = 1;   
        }
        x++;
    }
    
    return 0;
}
选项:
A:第5行:     !find第7行:     x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
B:第5行:      find==1第7行:      x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
C:第5行:      find!=1第7行:      x/2==1 && x/3==2 && x/5==4 && x/6==5 && x/7==0
D:第5行:      find!=0第7行:      x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
答案: 【第5行:     !find第7行:     x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0

6、 问题:鸡兔同笼,共有98个头,386只脚,编程求鸡、兔各多少只。代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include <stdio.h>
int main()
{
    int x, y;
    for (x=1; _; x++)
    {
        __;
        if (
____)
        {
                printf("x = %d, y = %d", x, y);
        }
    }
    
    return 0;
}
选项:
A:第5行:     x<=97第7行:     y = 98 – x第8行:     2x+4y == 386
B:第5行:     x<97第7行:     x = 98 – y第8行:     2x+4y == 386
C:第5行:     x<97第7行:     y = 98 – x第8行:     2x+4y == 386
D:第5行:     x<=97第7行:     x = 98 – y第8行:     2x+4y <= 386
答案: 【第5行:     x<=97第7行:     y = 98 – x第8行:     2x+4y == 386

7、 问题:以下能正确计算1×2×3×4…×10的程序段是
选项:
A:i=1;
s=1;
do {
        s=si;
        i++;
     } while(i<=10);
B:do
{
    i=1;
    s=1;
    s=s
i;
    i++;
} while(i<=10);
C:do
{
    i=1;
    s=0;
    s=si;
    i++;
} while(i<=10);
D:i=1;
s=0;
do {
        s=s
i;
        i++;
     } while(i<=10);
答案: 【i=1;
s=1;
do {
        s=s*i;
        i++;
     } while(i<=10);

8、 问题:以下程序执行后的输出结果是#include <stdio.h>
int main( )

    int i,n=0;
    for(i=2;i<5;i++)
      { 
        do 
        { 
           if(i%3) continue;
           n++;
        }while(!i);
       n++;
     }
   printf("n=%d",n);
   return 0;
}
选项:
A:n=4
B: n=5
C: n=2
D: n=3
答案: 【n=4

9、 问题:以下正确的描述是
选项:
A:只能在循环体内和switch语句体内使用break语句
B: continue语句的作用是结束整个循环的执行
C:在循环体内使用break语句或continue语句的作用相同    
D:continue语句可以写在循环体之外
答案: 【只能在循环体内和switch语句体内使用break语句

10、 问题:计算直到最后一项的绝对值小于为止。‍代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include  <stdio.h>

include  <math.h>

int main()
{
    int n = 1;
    float term = 1, sum = 0;
    __;
    
    while (fabs(term) >= 1e-4)      //判末项大小
    {
        term = sign / n;            //求出累加项
        sum = sum + term;           //累加
        ____;               //改变项的符号
        n++;                            //分母加1
    }
    printf("sum = %f", sum);
           return 0;
}
选项:
A:第7行代码: float sign=1第13行代码: sign = -sign
B:第7行代码: float sign= -1第13行代码: sign = -sign
C:第7行代码: float sign=1第13行代码: term = -term
D:第7行代码: float sign= -1第13行代码: term = -term
答案: 【第7行代码: float sign=1第13行代码: sign = -sign

11、 问题:设已定义i和k为int类型变量,则以下for循环语句for(i=0,k=-1;k=1; i++,k++)
      printf( "   ");
选项:
A:是无限循环
B:判断循环结束的条件不合法 
C:循环一次也不执行   
D:循环只执行一次
答案: 【是无限循环

12、 问题:有以下程序,若从键盘给n输入的值是-3,则程序的输出结果是#include <stdio.h>
int main()

    int s=0,a=1,n;
    scanf("%d",&n);
    do
    { 
        s+=1; 
        a=a-2; 
    } while(a!=n);
    printf("%d",s);
    return 0;
}
选项:
A:2
B:-1
C:3
D:0
答案: 【2

13、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()
 {     
    int i=0,s=0;
    for (;;)
    { 
        if(i==3||i==5) continue;
        if (i==6) break;
        i++;
        s+=i;
    }
    printf("%d",s);
    return 0;
 }
选项:
A:程序进入死循环
B:10 
C:13
D:21
答案: 【程序进入死循环

14、 问题:下面程序的功能是输出以下形式的图案,则在下划线处应填入的是    *#include <stdio.h>
int main( )
{   int i,j;
    for(i=1;i<=4;i++)
     {  
        for(j=1;j<=____;j++) 
        {
            printf("
");
        }
        printf("");
     }
    return 0;
}
选项:
A:2i-1
B:2
i+1
C:i+2
D:i
答案: 【2*i-1

15、 问题:程序执行后的输出结果是#include <stdio.h>
int main( )
{
     int i,s=0;
     for(i=1;i<10;i+=2)
     {
        s+=i+1;
     }
     printf("%d",s);
     return 0;
}
选项:
A:自然数1~10中的偶数之和
B:自然数1~9的累加和          
C:自然数1~10的累加和
D:自然数1~9中的奇数之和
答案: 【自然数1~10中的偶数之和

16、 问题:以下程序的输出结果是#include <stdio.h>
int main()

    int a, b;
    for(a=1, b=1; a<=100; a++)
      { 
        if(b>=10) break;
            if (b%3==1)
            { 
                b+=3; 
                continue; 
            }
      }
    printf("%d",a);
    return 0;
}
选项:
A:4
B:101
C:6
D:5
答案: 【4

17、 问题:三色球问题。若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑色的,从中任取8个球,问共有多少种不同的颜色搭配?‍代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。  #include <stdio.h>
int main()
{
    int i, j, k;
    for (i=0; i<=3; i++)
    {
        for (j=0; j<=3; j++)
        {
                for (____)
                {
                    if (______)
                    {
                        printf("i=%d, j=%d, k=%d", i, j, k);
                    }
                }
        }
    }
    
    return 0;
}
选项:
A:第9行:   k=0; k<=6; k++第11行:  i + j + k == 8
B:第9行:   k=0; k<=6; k++第11行:  i + j + k = 8
C:第9行:   k=0; k<=6; k++第11行:  i + j + k <= 8
D:第9行:   k=0; k<6; k++第11行:  i + j + k == 8
答案: 【第9行:   k=0; k<=6; k++第11行:  i + j + k == 8

18、 问题:我国古代的《张丘建算经》中有这样一道著名的百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”其意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡和小鸡各能买多少只?代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。  #include <stdio.h>
int main()
{
    int x, y, z;
    for (x=0; x<=20; x++)
    {
        for (y=0; ___; y++)
        {
                __;
                if (__
)
                {
                    printf("x=%d, y=%d, z=%d", x, y, z);
                }
        }
    }
    
    return 0;
}
选项:
A:第7行:     y<=33第9行:     z = 100 – x – y第10行:     5x + 3y + z/3.0 == 100 
B:第7行:     y<=33第9行:     z + y + x = 100第10行:     5x + 3y + z/3.0 = 100
C:第7行:     y<=33第9行:     z = 100 – x – y第10行:     5x + 3y + z/3.0 == 100
D:第7行:     y<33第9行:     z = 100 – x – y第10行:     5x + 3y + z/3.0 <= 100
答案: 【第7行:     y<=33第9行:     z = 100 – x – y第10行:     5x + 3y + z/3.0 == 100 

19、 问题:以下不是死循环的程序段是
选项:
A:int s=36;
while (s) 
{
   –s;
}
B:int i=100;
while(1)
{
    i=i%100+1;
    if (i>100) break;
}
C:for( ; ;);
D:unsigned int k=0;
do{
        ++k;
} while (k>=0);
答案: 【int s=36;
while (s) 
{
   –s;
}

20、 问题:以下程序的功能是计算:s= 1+1/2+1/3+……+1/10,程序运行后输出结果错误,导致错误结果的程序行是#include <stdio.h>
int main()

    int n; 
    float s;
    s=1.0;
    for(n=10;n>1;n–)
    {
        s=s+1/n;
    }
    printf("%6.4f",s);
    return 0;
}
选项:
A:s=s+1/n;
B: printf("%6.4f",s);
C:for(n=10;n>1;n–)
D:s=1.0;
答案: 【s=s+1/n;

21、 问题:以下程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是#include <stdio.h>
int main( )

    char k; 
    int i;
    for(i=1;i<3;i++)
    { 
        scanf("%c",&k);
        switch(k)
        { 
            case ‘0’: printf("another");
            case ‘1’: printf("number");
        }
   }
   return 0;
}
选项:
A:anothernumbernumber
B:numbernumber
C:anothernumber
D:anothernumberanother
答案: 【anothernumbernumber

22、 问题:华氏和摄氏温度的转换公式为C=5/9×(F-32)。式中,C表示摄氏温度,F表示华氏温度。要求:华氏0℉~300℉,每隔20℉输出一个华氏温度对应的摄氏温度值。‍代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
int main()
{
    int    upper = 300, step = 20;
    float  fahr = 0, celsius;
    while (fahr < upper)
    {
        __;
        printf("%4.0f\t%6.1f", fahr, celsius);
         
_______ ;
    }
    return 0;
}
选项:
A:第8行代码: celsius = 5.0 / 9 * (fahr – 32)第10行代码: fahr = fahr + step
B:第8行代码:  celsius = 5 / 9 * (fahr – 32)第10行代码:  fahr = fahr + step
C:第8行代码:  celsius = 5.0 / (9 * (fahr – 32))第10行代码: fahr = fahr + step
D:第8行代码:  celsius = 5.0 / 9 * (fahr – 32)第10行代码: fahr = fahr – step
答案: 【第8行代码: celsius = 5.0 / 9 * (fahr – 32)第10行代码: fahr = fahr + step

23、 问题:利用泰勒级数:计算e的近似值,当最后一项的绝对值小于时认为达到了精度要求,要求统计总共累加了多少项。‍代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include  <math.h>

include <stdio.h>

int main()
{   
    int n = 1, count = 1;
    ____;
    double term = 1.0;
    while (fabs(term) >= 1e-5) //判末项大小
    {
            __;   //求出累加项
            e = e + term;     //累加
            n++;               // 计算下一项
            ___;   //统计累加项数
    }
 
    
       printf("e = %f, count = %d", e, count);
    return 0;
}
选项:
A:第6行代码:      double e = 1.0第10行代码:     term = term / n第13行代码:     count++
B:第6行代码:   double e = 0第10行代码:  term = term / n第13行代码:  count++
C:第6行代码:  double e = 1.0第10行代码: term = term n第13行代码: count++
D:第6行代码:  double e = 0第10行代码: term = term
n第13行代码: count++
答案: 【第6行代码:      double e = 1.0第10行代码:     term = term / n第13行代码:     count++

24、 问题:打印所有的“水仙花数”。所谓“水仙花数”,是指一个三位数,其各位数字的立方和等于该数本身。例如,153是“水仙花数”,因为 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include <stdio.h>
int main()
{
    int i, j, k, n;
    printf("result is:");
    for (n=100; _; n++)
    {
        i = n / 100;            //分离出百位
        j = __;       //分离出十位
        k = 
_;       //分离出个位  
        if (
___
)
        {
                printf("%d\t ",n);  //输出结果
        }
    }
    printf("");
    return 0;

选项:
A:第6行: n<1000第9行: (n – i * 100) / 10第10行:n % 10第11行:i100+j10+k == iii+jjj+kkk
B:第6行: n<1000第9行: (n – i * 100) / 10第10行:n % 10第11行:i100+j10+k = iii+jjj+kkk
C:第6行: n<=1000第9行: n % 100第10行:n % 10第11行:i100+j10+k == iii+jjj+kkk
D:第6行: n<1000第9行: (n – i * 100) / 10第10行:n /10第11行:i100+j10+k == iii+jjj+kkk
答案: 【第6行: n<1000第9行: (n – i * 100) / 10第10行:n % 10第11行:i100+j10+k == iii+jjj+kkk

第5周——周而复始的循环之道 练兵区——单选题——不计入总分

1、 问题:程序运行后的输出结果是#include <stdio.h>
int main()

        int i;
  
        for(i=0;i<3;i++)   
        
            switch(i)    
                   
                {       
     
                    case 0: printf("%d",i);
         
                    case 2: printf("%d",i);
         
                    default: printf("%d",i);       
    
                } 
    
        return 0; 
 
}
选项:
A:000122
B:022111
C:021021
D:012
答案: 【000122

2、 问题:若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是
选项:
A:for( i=1; i<=5; i++ ){    p=1;    p=i;}
B:for(i=1,p=1;i<=5;i++) p
=i;
C:i=1;
p=1;
while ( i<=5 )
{
    p=i;
    i++;
}
D:i=1;
p=1;
do {
        p
=i;
        i++;
} while ( i<=5 );
答案: 【for( i=1; i<=5; i++ ){    p=1;    p*=i;}

3、 问题:下面程序的输出是#include <stdio.h>
int main()

    int y=9;
    for( ; y>0; y–)
        {   
            if(y%3==0)
                { 
                    printf("%d", –y);
                    continue;
                }
        }
    return 0;
}
选项:
A:852
B:741
C:963
D:875421 
答案: 【852

4、 问题:爱因斯坦数学题。爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,最后剩下5阶;只有每步跨7阶,最后才正好1阶不剩。请问,这条阶梯共有多少阶?代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
int main()
{
    int  x = 1, find = 0;
    while (_)
    {
        if (
_______)
        {
                printf("x = %d", x);
                find = 1;   
        }
        x++;
    }
    
    return 0;
}
选项:
A:第5行:     !find第7行:     x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
B:第5行:      find==1第7行:      x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
C:第5行:      find!=1第7行:      x/2==1 && x/3==2 && x/5==4 && x/6==5 && x/7==0
D:第5行:      find!=0第7行:      x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
答案: 【第5行:     !find第7行:     x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0

5、 问题:鸡兔同笼,共有98个头,386只脚,编程求鸡、兔各多少只。代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
int main()
{
    int x, y;
    for (x=1; _; x++)
    {
        __;
        if (
____)
        {
                printf("x = %d, y = %d", x, y);
        }
    }
    
    return 0;
}
选项:
A:第5行:     x<=97第7行:     y = 98 – x第8行:     2x+4y == 386
B:第5行:     x<97第7行:     x = 98 – y第8行:     2x+4y == 386
C:第5行:     x<97第7行:     y = 98 – x第8行:     2x+4y == 386
D:第5行:     x<=97第7行:     x = 98 – y第8行:     2x+4y <= 386
答案: 【第5行:     x<=97第7行:     y = 98 – x第8行:     2x+4y == 386

6、 问题:以下正确的描述是
选项:
A:只能在循环体内和switch语句体内使用break语句
B: continue语句的作用是结束整个循环的执行
C:在循环体内使用break语句或continue语句的作用相同  
D:continue语句可以写在循环体之外
答案: 【只能在循环体内和switch语句体内使用break语句

7、 问题:华氏和摄氏温度的转换公式为C=5/9×(F-32)。式中,C表示摄氏温度,F表示华氏温度。要求:华氏0℉~300℉,每隔20℉输出一个华氏温度对应的摄氏温度值。代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
int main()
{
    int    upper = 300, step = 20;
    float  fahr = 0, celsius;
    while (fahr < upper)
    {
        __;
        printf("%4.0f\t%6.1f", fahr, celsius);
         
_______ ;
    }
    return 0;
}
选项:
A:第8行代码: celsius = 5.0 / 9 * (fahr – 32)第10行代码: fahr = fahr + step
B:第8行代码:  celsius = 5 / 9 * (fahr – 32)第10行代码:  fahr = fahr + step
C:第8行代码:  celsius = 5.0 / (9 * (fahr – 32))第10行代码: fahr = fahr + step
D:第8行代码:  celsius = 5.0 / 9 * (fahr – 32)第10行代码: fahr = fahr – step
答案: 【第8行代码: celsius = 5.0 / 9 * (fahr – 32)第10行代码: fahr = fahr + step

8、 问题:利用泰勒级数:计算e的近似值,当最后一项的绝对值小于时认为达到了精度要求,要求统计总共累加了多少项。代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include  <math.h>

include <stdio.h>

int main()
{   
    int n = 1, count = 1;
    ____;
    double term = 1.0;
    while (fabs(term) >= 1e-5) //判末项大小
    {
            __;   //求出累加项
            e = e + term;     //累加
            n++;               // 计算下一项
            ___;   //统计累加项数
    }
 
    
       printf("e = %f, count = %d", e, count);
    return 0;
}
选项:
A:第6行代码:      double e = 1.0第10行代码:     term = term / n第13行代码:     count++
B:第6行代码:   double e = 0第10行代码:  term = term / n第13行代码:  count++
C:第6行代码:  double e = 1.0第10行代码: term = term n第13行代码: count++
D:第6行代码:  double e = 0第10行代码: term = term
n第13行代码: count++
答案: 【第6行代码:      double e = 1.0第10行代码:     term = term / n第13行代码:     count++

9、 问题:打印所有的“水仙花数”。所谓“水仙花数”,是指一个三位数,其各位数字的立方和等于该数本身。例如,153是“水仙花数”,因为代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
int main()
{
    int i, j, k, n;
    printf("result is:");
    for (n=100; _; n++)
    {
        i = n / 100;            //分离出百位
        j = __;       //分离出十位
        k = 
_;       //分离出个位  
        if (
___
)
        {
                printf("%d\t ",n);  //输出结果
        }
    }
    printf("");
    return 0;
}
选项:
A:第6行: n<1000第9行: (n – i * 100) / 10第10行:n % 10第11行:i100+j10+k == iii+jjj+kkk
B:第6行: n<1000第9行: (n – i * 100) / 10第10行:n % 10第11行:i100+j10+k = iii+jjj+kkk
C:第6行: n<=1000第9行: n % 100第10行:n % 10第11行:i100+j10+k == iii+jjj+kkk
D:第6行: n<1000第9行: (n – i * 100) / 10第10行:n /10第11行:i100+j10+k == iii+jjj+kkk
答案: 【第6行: n<1000第9行: (n – i * 100) / 10第10行:n % 10第11行:i100+j10+k == iii+jjj+kkk

10、 问题:以下程序执行后的输出结果是#include <stdio.h>
int main( )

    int i,n=0;
    for(i=2;i<5;i++)
      { 
        do 
        { 
           if(i%3) continue;
           n++;
        }while(!i);
       n++;
     }
   printf("n=%d",n);
   return 0;
}
选项:
A:n=4
B:n=5
C:n=2
D:n=3
答案: 【n=4

本门课程剩余章节答案为付费内容
本文章不含期末不含主观题!!
本文章不含期末不含主观题!!
支付后可长期查看
有疑问请添加客服QQ 2356025045反馈
如遇卡顿看不了请换个浏览器即可打开
请看清楚了再购买哦,电子资源购买后不支持退款哦
   

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注