当前课程知识点:C语言程序设计(上) >  期末复习答案 >  《C语言程序设计(上)》期末复习参考答案 >  html

返回《C语言程序设计(上)》慕课在线视频课程列表

html资料文件与下载

html

一、选择题

1、表示算术关系12<=x<=yC语言表达式为:

选择一项:

a. ( 12 <= x ) || ( x <= y )

b. ( 12 <= x ) && ( x <= y )

c. ( 12 <= x) | ( x <= y )

d. ( 12 <= x ) & ( x <= y )

 

2、对于以下程序片段,描述正确的是______

int x= -1;

do

{

x=x*x;

}while(!x);

选择一项:

a. 循环执行一次

b. 循环执行两次

c. 是死循环

d. 有语法错误

 

3、二维数组amn列,则在a[i][j]之前的元素个数为______

选择一项:

a. i * n + j + 1

b. j * n + i

c. i * n + j

d. i * n + j – 1

4、错误的转义字符是:

选择一项:

a. ’\0’

b. ’\’’

c. ’\81’

d. ’\\’

 

5、已知 int ifloat f;正确的语句是:

选择一项:

a. (int f)%i

b. int(f)%i

c. (int)f%i

d. int(f%i)

 

6、已有定义int i;float f1,f2; 执行scanf(“%2f%3d%f”,&f1,&i,&f2)时,输入“1234.5678↙”,则i,f1f2的值应该是()

选择一项:

a. f1=1234.5,i=678;f2不确定

b. 输入格式有误

c. f1=12.000000,i=34,f2=0.567800

d. f1=12.000000,i=34,f2不确定

 

7、以下能对二维数组 a 进行正确初始化的语句是______

选择一项:

a. int a[2][3] = { { 0 },{ 1 } };

b. int a[2][3] = { { 1, 2 }, { 3, 4 }, { 5, 6 } };

c. int a[2][3] = { 0, 1, 2, 3, 4, 5, 6 };

d. int a[][3] = { { 1, 2 } };

 

8、把字符串“China  bit”输入到字符数组a中的正确操作是____

选择一项:

a. scanf(“%s”,a)

b. getchar(a)

c. scanf(“%s”&a)

d. gets(a)

 

9、循环语句for(i=0,j=0;j=3||i<4;i++)的循环次数是

选择一项:

a. 2

b. 4

c. 3

d. 无限循环

 

10、已知 int a=4 b=5c; 则执行表达式“c=a>b? a-b: b-(a,5);” 后,c的值是

选择一项:

a. 1

b. 0

c. 5

d. 4

 

11、已知语句“if(w) … else … ,与表达式w的等价表示是:

选择一项:

A. w = = 0

B. w != 1

C. w != 0

D. w = = 1

 

12、下面叙述中,正确的叙述是:

选择一项:

A. 在说明数组的同时可以对数组进行初始化

B. 说明多维数组可以省略每一维的大小

C. 说明数组的时候可以根据需要定义数组的起始下标

D. 说明一维数组的时候,必须给出明确的数组大小

  

13、下列标识符中,可以作为C语言的变量名的是:

选择一项:

A. default

B. auto

C. sizeof

D. until

 

14、下列描述中不正确的_____

选择一项:

A. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。

B. 对整型数组可以进行整体输入、输出。

C. 对字符型数组可以进行整体输入、输出。

D. 字符型数组中可能存放字符串。

 

15、从循环体内某一层跳出,继续执行循环外的语句是_____

选择一项:

A. continue语句

B. 空语句。

C. return语句

D. break语句

 

16、设 x,y,z int 型变量,且 x=3,y=4,z=5 ,则下面表达式中值为 0 的是_____

选择一项:

A. 'x'&&'y'

B. !((x<y)&&!z||1)

C. x||y+z&&y-z

D. x<=y

 

17、若有代数式 ,则错误的c语言表达式是______

选择一项:

A. a / b / c * e * 3

B. 3 * a * e / b /c

C. a * e / b / c * 3

D. 3 * a * e / b * c

 

18、以下可以作为C语言合法常量的是:

选择一项:

a. -0xde

b. -028

c. -e1.0

d. ''(其中'是单引号)

 

19、以下描述中,正确的是:

选择一项:

A. 只能在循环体内和 switch 语句体内使用 break 语句

B. 在循环体内使用 break 语句或 continue 语句的作用相同

C. 从多层循环嵌套中退出时, 只能使用 goto 语句

D. continue 语句的作用是结束整个循环的执行

 

20、对于下列两条宏命令,表达式B/B的值是

#define A 3+2

#define B A*A

选择一项:

a. 5

b. 1

c. 25

d. 17

 

 

编程题一:

一、回忆高三的生活,大家可能还会有印象,老师们总是在黑板上提醒我们,“离高考还有?天”,现在,我们来用C语言实现这个功能。(我们假定每一年高考的时间都是在那一年的66日)

输入:当前日期

输入:高考年份n

输出:距离当年高考时间的天数

例如:

输入:2018.6.6

输入:2018

输出:0 day.

 

输入:2018.6.2

输入:2018

输出:4 days.

 

如果输入的日期已经过了当年的高考日期,则输出error.

输入:2018.1.1

输入:2017

输出:error


测试用例1

输入:2018.6.6

输入:2018

输出:0 day.

测试用例2

输入:2018.6.2

输入:2018

输出:4 days.

测试用例3

输入:2018.1.1

输入:2017

输出:error

测试用例4

输入:2018.1.1

输入:2018

输出:156 days.

测试用例5

输入:2018.1.1

输入:2019

输出:521 days.

 

答案1

#include "stdio.h"

#include <string.h>

#include <stdlib.h>

int main()

{

       char ch[20];

       int year, days = 0;

       int date1[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

       int date2[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

       scanf("%s", ch);

       scanf("%d", &year);

       int y, m, d;

       char *p;

       p = strtok(ch, ".");

       y = atoi(p);

       p = strtok(NULL, ".");

       m = atoi(p);

       p = strtok(NULL, ".");

       d = atoi(p);

       if (y > year)

       {

              printf("error!");

       }

       else if (y == year)

       {

              if (m>6)

                     printf("error!");

              else if (m == 6)

              {

                     if (d > 6)

                            printf("error!");

                     else

                     {

                            days = 6 - d;

                            if (days==0||days==1)

                                   printf("%d day.\n", days);

                            else

                                   printf("%d days.\n", days);

                     }            

              }

              else

              {

                     if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)

                     {

                            days = date1[m-1] - d;

                            for (int i = m ; i < 5; i++)

                            {

                                   days += date1[i];

                            }

                     }

                     else

                     {

                            days = date2[m-1] - d;

                            for (int i = m ; i < 5; i++)

                            {

                                   days += date2[i];

                            }

                     }

                     days += 6;

                     printf("%d days.\n", days);

              }

       }

       else

       {

              if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)

              {

                     days = date1[m-1] - d;

                     for (int i = m; i < 12; i++)

                     {

                            days += date1[i];

                     }

              }

              else

              {

                     days = date2[m-1] - d;

                     for (int i = m ; i < 12; i++)

                     {

                            days += date2[i];

                     }

              }

              for (int i = y + 1; i < year; y++)

              {

                     if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)

                            days += 366;

                     else

                            days += 365;

              }

              if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

                     days += 158;

              else

                     days += 157;

              printf("%d days.\n", days);

       }

       return 0;

}

 

答案2

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int isSpecialYear(int tempyear)

{

       if(((tempyear%4==0)&&(tempyear%100!=0))||(tempyear%400==0))

       {

              return 1;

       }

       else return 0;

}

int GetLastDay(int tempm,int tempy)

{

       int num;

       switch(tempm)

       {

              case 1:

              case 3:

              case 5:

              case 7:

              case 8:

              case 10:

              case 12:

                     num=31;

                     break;

              case 2:

                     num=28+isSpecialYear(tempy);

                     break;

              default:

                     num=30;

       }     

       return num;

}

int Compare(int tempday,int tempmonth,int tempyear,int year)

{

       if(tempyear<year)

              return 1;

       else if(tempyear==year&&tempmonth<6)

              return 1;

       else if(tempyear==year&&tempmonth==6&&tempday<=6)

              return 1;

       return 0;

}

long DataDiff(int tempday,int tempmonth,int tempyear,int year)

{

        long delta = 0;

        if(!Compare(tempday,tempmonth,tempyear,year))

        {

             return -1;

     }

     else

     {

          while(Compare(tempday,tempmonth,tempyear,year)) 

          {

                 tempday++;

                 if(tempday>GetLastDay(tempmonth,tempyear))

                 {

                        tempday=1;

                        tempmonth++;

                        if(tempmonth>12)

                        {

                               tempmonth=1;

                               tempyear++;

                        }

                 }

                 delta++;

          }

     }

     return delta;

}

int main()

{

       char c_data[20];

       int year,datayear,datamonth,dataday;

       gets(c_data);

       scanf("%d",&year);

      char* tokenPtr=strtok(c_data,".");

      char vecdata[3];

      int i=0,sum;

       while(tokenPtr)

       {

              if(i==0)

                     datayear=atoi(tokenPtr);

              else if(i==1)

                    datamonth=atoi(tokenPtr);

              else if(i==2)

                    dataday=atoi(tokenPtr);

              tokenPtr=strtok(NULL,".");

              i++;

       }

       sum=DataDiff(dataday,datamonth,datayear,year);

       if(sum>2)

       {

              printf("%d days.\n",sum-1);

       }

       else if(sum>=1)

       {

              printf("%d day.\n",sum-1);

       }

       else

       {

              printf("error!\n");

       }

      

}

 

 

编程题二:

有若干个长度不等的木条,我们要把其中的木条,尽可能多的组装成三角形的架子,当然,有些木条组合起来,不一定能组成三角形。

请你针对给定的输入:

输入1n

接下来输入n个木条的长度:a1   a2    a3………an

输出:可最多组成三角形的个数。

 

测试用例1

输入:3

输入:3  4   5

输出:1

 

测试用例2

输入:4

输入:3  3   4   5

输出:1

 

测试用例3

输入:4

输入:1   2   6     7

输出:1

 

测试用例4

输入:6

输入:1   1     1    2    2     3

输出:2

 

测试用例5

输入:9

输入:1   1  3  3  4  4    6   7     7  

输出:3


答案1

#include <stdio.h>

#include <stdlib.h>

int GreaterSort(const void* a, const void* b)

{

       return (int*)a>(int*)b;

}

int main()

{

       int n;

       float temp;

       float len[100000+5];

       int count = 0;

 

       scanf("%d", &n);

       for (int i = 0; i < n; i++)

       {

              scanf("%d", &temp);

              len[i]=temp;

       }

       qsort(len, n,sizeof(float), GreaterSort);

       for (int i = 0; i < n-2;i++)

       {

              if (len[i + 1] + len[i + 2] > len[i])

              {

                     count++;

                     i = i + 2;

              }

       }

       printf("%d\n",count);

       return 0;

}

 

答案2

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main()

{

       int c_n;

       int i_n[200];

       int is_n[200]={0};

       int n,i=0;

       int count=0;

       int j,k,m;

       scanf("%d",&n);

       for(i=0;i<n;i++)

       {

              scanf("%d",&i_n[i]);

              is_n[i]=1;

       }

       if(n<=2)

       {

              printf("0\n");

       }

       else

       {

      

              for(j=0;j<n-2;j++)

              {

                     for(k=j+1;k<n-1;k++)

                     {

                            for(m=k+1;m<n;m++)

                            {

                            if((i_n[j]+i_n[k]>i_n[m])&&(i_n[j]+i_n[m]>i_n[k])&&(i_n[m]+i_n[k]>i_n[j])&&(is_n[j]==1)&&(is_n[k]==1)&&(is_n[m]==1))

                                   {

                                          count++;

                                          is_n[j]=0;

                                          is_n[k]=0;

                                          is_n[m]=0;                                 

                                   }

                                  

                            }

                     }

              }

              printf("%d\n",count);

       }    

}

 

编程题三:

判断一个数是否是另一个整数的平方数,如果是就给出该数的正整数平方根,如果不是,则输出No

测试用例1

输入:1

输出:1

 

测试用例2

输入:4

输出:2

 

测试用例3

输入:5

输出:No

 

测试用例4

输入:9

输出:3

 

测试用例5

输入:7744

输出:88

 

答案1

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

int main()

{

int n;

    double m;

    scanf("%d",&n);

    m=sqrt(n);

    if(m==floor(m+0.5))

        printf("%d",(int)m);            

    else

        printf("No");

}

 

答案2

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main()

{

       int n,m,flag=0;

       scanf("%d",&n);

       if(n<0)

       {

              printf("No\n");

       }

       else

       {

              int low=1;

              int high = n; 

        int mid = (low + high) >> 1; 

        while (low <= high) { 

               int temp = n / mid; 

               if (mid == temp && n == mid * temp) {

                                    

                       printf("%d\n",mid); 

                       flag=1;

               } 

               if (temp < mid) { 

                   high = mid - 1; 

               } 

               if (temp >= mid) { 

                   low = mid + 1; 

               } 

               mid = (low + high) >> 1; 

        } 

        if(flag==0)

        printf("No\n");

       }

}

返回《C语言程序设计(上)》慕课在线视频列表

C语言程序设计(上)课程列表:

从问题到C语言程序设计

-1.1 计算机的问题求解方法

--1.1.1--程序设计面向的问题

--1.1.2--关于计算

--1.1.3-1关于算法-算法的特征

--1.1.3-2关于算法——算法的表示

--1.1.3-3关于算法——算法的优化

--1.1.4-1-程序设计方法

--1.1.4-2-程序设计方法

--讨论题:数学模型

-1.1 计算机的问题求解方法--作业

-1.2 C语言与C程序

--1.2.1-1-C概述

--1.2.1-2-C概述

--1.2.2-C初步

--讨论题:运算符

-1.3 C语言处理系统与程序调试运行

--1.3.1C程序如何调试运行

--1.3.2常用C语言处理系统

--1.3.3DEVC++的使用-v1

--1.3.4C语言概貌小程序

--例程

-1.4 程序中的人机交互

--1.4 printf用法

--1.4.2 scanf的用法

--例程

--作业讨论区

数据计算实现与顺序结构程序设计(一)

-2.1 算术运算的C程序实现

--2.1.1 第二章

--2.1.2 C语言算术表达式概念

--2.1.3 算术运算的实现

--2.1.4 整数相除

--2.1.5 输入格式造成的计算错误

--2.1.6 求余运算

--2.1.7 自增自减运算

--2.1.8 复合运算

--fangcheng.c

--fangcheng-1.c

--fangcheng-2.c

--fangcheng-3.c

--fangcheng-4.c

--算术混合运算.c

--讨论题:自增自减符

--讨论题:程序输出结果

--讨论题:程序运行结果

-2.1 算术运算的C程序实现--作业

-2.2 关系运算的C程序实现

--2.2.1 关系比较问题

--2.2.2 C语言关系表达式

--2.2.3关系运算优先级

--2.2.4 用关系运算做判断条件

--2.2.5 程序实例

--2.2.6 字符比较

--bukao.c

--pingshifen-1.c

--panduanzhengshu.c

--pingshifen-2.c

--字符比较.c

--讨论题:比较大小

--讨论题:程序的运行

-2.2 关系运算的C程序实现--作业

-第二周作业--作业

数据计算实现与顺序结构程序设计(二)

-2.3 逻辑运算的C程序实现

--2.3.1 逻辑运算问题~1

--2.3.2 逻辑运算表达式

--2.3.3 如何判断闰年

--2.3.4 逻辑运算优先级

--2.3.5 条件运算符

--计算结合性

--2.3.7 一个简单实例

--闰年.c

--自动购票问题.c

--讨论题:逻辑表达式

-2.3 逻辑运算的C程序实现--作业

-2.4 位运算的C程序实现

--2.4.1 什么是位运算

--2.4.2 位运算有哪些

--2.4.3 位运算怎么用

--讨论题:位运算

-2.5 几种很个别的运算

--2.5 几个很个别的运算

--讨论题

--讨论题

-2.5 几种很个别的运算--作业

-2.6 混合运算及数据类型转换

--2.6 混合运算及数据类型转换

--讨论题:数据类型

-2.7 顺序结构程序实例

--2.7.1 第一个程序:三角形

--Video

--三角形面积.c

--讨论题:工业产值

--讨论题:程序无效结果

-2.7 顺序结构程序实例--作业

选择结构的程序设计

-3.1 程序中的路径选择实现

--3.1.1_1 第三章

--3.1.1_2 神奇的if_else

--打印学生成绩.c

--一元二次方程.c

-3.1 程序中的路径选择实现--作业

-3.2 路径中的再选择——嵌套判断

--3.2.1_1 if语句的嵌套

--3.2.1_2三个数排序1029

--例程

--3.2.2 用户登录检查

--三个数排序_未优化.c

--三个数排序_优化.c

--讨论题:程序改错

-3.2 路径中的再选择——嵌套判断--作业

-3.3 复杂判断问题的C程序设计

--3.3 多级选择

--银行存款.c

--讨论题:多级选择

-3.4 多分支问题的C程序设计

--3.4.1 switch语句表达式

--3.4.2 加减乘除计算

--3.4.3 几类说明

--加减乘除运算.c

--讨论题:关于switch

-3.4 多分支问题的C程序设计--作业

-3.5 GOTO的适当使用

--3.5 GOTO的适当使用

-3.6 选择结构的程序实例

--3.6 程序展示

--计算第几天.c

--存款利息__switch实现.c

--讨论题:输出奇数

--讨论题:计算税金

-3.6 选择结构的程序实例--作业

-第四周作业--作业

循环结构的程序设计(一)

-4.1 需要重复执行的程序

--4.1.1----第四章~1

--4.1.2---while实现先判断后循环~1

--4.1.3----while循环的应用-录入速度~1

--求和.c

--打印学生成绩.c

--统计录入速度.c

--求平均数.c

-4.1 需要重复执行的程序--作业

-4.2 至少要执行一次的循环

--4.2.1至少要执行一次的循环

--4.2.2-do-while循环应用

--成绩录入_do while实现.c

--n的阶乘.c

--字符分类统计.c

--讨论题:关于while

-4.2 至少要执行一次的循环--作业

-4.3 已知循环次数用for语句

--4.3.1--用for语句控制循环次数

--4.3.2--循环的应用-求和

--求和问题.c

--斐波那契数列问题.c

--数列求和.c

--讨论题:循环语句的不同

--讨论题:循环语句

-4.3 已知循环次数用for语句--作业

-4.4 循环控制——简单循环应用

--4.4.1-循环的应用-找数-水仙花数

--4.4.2--循环的应用-求素数

--水仙花数.c

--讨论题:死循环

--讨论题:continue和break

--讨论题:猜数字

-循环结构的程序设计(一)--4.4 循环控制——简单循环应用

循环结构的程序设计(二)

-4.5 循环的嵌套

--4.5.1 循环的嵌套——九九乘法表

--4.5.2 循环的嵌套——打印三角形

--打印九九乘法表.c

--打印实心三角图案.c

--打印空心三角图案.c

--讨论题:程序运行

-4.5 循环的嵌套--作业

-4.6 break与continue

--4.6 循环中断与继续循环——break再讨论

--最大素数.c

--求正数个数及平均数.c

-4.6 break与continue--作业

-4.7 循环的综合应用

--4.7.1 数的排列组合问题

--4.7.2 循环综合应用——穷举算法

--4.7.3 循环综合应用——满足条件的数

--4.7.4 循环综合应用——求最后三位数

--4.7.5 循环综合应用——打印空心图案

--数的排列组合.c

--数的排列组合优化.c

--鸡兔同笼.c

--找满足条件的数.c

--输出14的13次方的最后三位数.c

--打印空心字符.c

--讨论题:打印图形

--讨论题:打印空心图形

--讨论题:计算闰年

-第六周作业

--虚拟实验:循环程序设计实验

-第六周作业--作业

数组(一)

-5.1 同类有序数据处理问题

--5.1.0 数组开篇

--5.1.1 同类有序数据存储问题

--讨论题:下标变量与下标

-5.2 一维数组的定义和引用

--5.2.1_1 数组的定义~1

--5.2.1_2 数组的初始化

--5.2.2 一维数组的输入输出

--5.2.3 一维数组的应用1--成绩排序(选择法)~2

--5.2.4 一维数组的应用2--Fibonacci数列

--数组定义.c

--数组初始化.c

--输出大于平均值的数.c

--反向输出.c

--选择法_成绩排序.c

--求斐波那契数列前n项.c

--讨论题:对称数

--讨论题:关于'\0'

-5.2 一维数组的定义和引用--作业

-5.3 一维字符串数组

--5.3 一维字符串数组11.24~1

--用函数测试字符串长度.c

--讨论题:编程

-5.4 字符串处理函数

--5.4 字符数组的输入与输出

--字符串反向.c

--字符串函数

--讨论题:程序如何运行

--讨论题:黑色星期五

数组(二)

-5.5 二维数组的定义与使用

--5.5 二维数组定义

--二维数组的定义与初始化.c

-5.6 二维数组的输入输出

--5.6 二维数组的输入与输出

--二位数组输出_矩阵输出.c

--讨论题:随机数据存储

-5.6 二维数组的输入输出--作业

-5.7 二维数组的应用‍

--5.7.1二维数组的应用-转置矩阵

--5.7.2 用一维数组方式引用二维数组元素

--转置矩阵.c

--找二维数组最大数.c

--讨论题:修改程序

--讨论题:关于随机数函数 rand()

-5.8 二维字符数组

--5.8 单词排序

--单词排序.c

--讨论题:回文字符串

-5.8 二维字符数组--作业

-5.9 数组综合应用

--5.9.1 应用1——学生成绩统计

--统计成绩.c

--5.9.2 应用2——删除重复字符

--删除串中的重复字符串

--5.9.3 应用3——统计字符

--5.9_4数组的应用4--矩阵相乘

--统计字符次数.c

--讨论题:洗牌

-本期课程结束语

--end

-第八周编程作业

--虚拟实验:冒泡排序算法程序设计实验

期末复习

-《C语言程序设计(上)》期末复习参考

--html

期末复习答案

-《C语言程序设计(上)》期末复习参考答案

--html

html笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。