[新]C语言期末复习,经典练习题+知识点总结+模拟考题 三位一体,完胜c语言!!!!考期必备神器 下载本文

第一行输出总路程,保留小数点后两位; 第二行输出第m次落地后反弹的高度,保留小数点后两位。 【输入样例】 40 3

【输出样例】 65.00 0.63

【评分标准】

结果完全正确得20分,每个测试点4分,提交程序文件high.c。

---日期天数转换

2. 【问题描述】编写一个程序,用户输入日期,计算该日期是这一年的第几天。

【输入形式】用户在第一行输入一个日期(年 月 日,中间以空格分割)

【输出形式】程序在下一行输出一个整数 【样例输入】2006 2 21 【样例输出】52

【样例说明】用户以年月日的格式输入,中间以空格分割,程序计算出该天是输入年份的第几天并输出该天数。另外还需要判断这一年是否为闰年。

【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:datetoday.c

#include struct tian { int year; int month; int day;};

int days(int year,int month,int day) { int

s=0,i,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if(year%4==0&&year0!=0||year@0==0) a[2]=29; for(i=1;i

9 / 30

return s; }

void main() { int k=0; struct tian a; scanf(\day); k=days(a.year,a.month,a.day); printf(\}

第五次走也 填空题

# 题目

1. 已知:int k= 4,a=3,b=2,c=1;则表达式“k

2. 已知:char x=’A’, y=’B’; 执行“(x=’B’)||(y=’C’)”的运算后,变量x,y的值分别为(答案用逗号隔开) 'B','B'

3. 已知:int a=5,b=6,w=1,x=2,y=3,z=4;执行语句“(a=w>x)&&(b=y>z);”后b 的值为6

选择题

# 题目

1. 执行以下程序段后,变量a,b,c的值分别是B

int x = 10, y = 9;

int a, b, c;

a = (--x == y++)? --x: ++y; b = x++; c = y;

(A) a = 9, b = 9, c = 9 (B) a = 8, b= 8, c = 10 (C) a = 9, b = 10, c = 9 (D) a = 11, b = 11, c = 10

编程题

作业五---删数问题

1. 【问题描述】输入一个高精度的大正整数S(S最长可达240位),去掉其中任意N位数字后剩下的数字按原次序组成一个新的正整数S’。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数S’最小。 【输入形式】输入有两行:

1.第一行是大整数S。其中S最长可达240位。

2.第二行是整数N。S、N均以非0数字开头。【输出形式】输出有一行,是在S中删除N位后所得的最小数字S’。 【样例输入1】 178543 4

【样例输出1】13

【样例输入2】 1002 1

【样例输出2】002

【样例说明】样例1中输入整数S=178543,N=4,要求在178543中删除4位,使剩下的数字最小。正确答案为S’ = 13。样例2中输入整数S=1002,N=1,删完一位后S’ = 002,而不是2,即2之前的0也必须输出。【运行时限】程序一次运行的最长时间限制在15秒内,超出则认为程序错误。

10 / 30

【算法提示】将整数看作字符串形式读入;删数时,从前往后寻找第一个比后一个数字大的数字,然后删除之,按照这种方法删除N个数字即得最小数字。

【评分标准】该题要求输出一个大整数的各位数字。结果完全正确得20分,每个测试点4分。上传C语言文件名为delete.c。

#include #include

/* scan from 0 - 9, test the input, rescan if get the result. */ int main() {

char integer[250], result[250];

int start = 0, strlength, n, i = 0, j, temp, k = 0;

fgets(integer, 249, stdin); strlength = strlen(integer) - 1; integer[strlength] = '\\0'; scanf(\ for (i = 0; i <= 9; i++) { temp = i;

for (j = start; j <= n && n < strlength; j++)

if (integer[j] == temp + '0') { result[k++] = temp + '0'; n++;

start = j + 1; i = -1; break; } }

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

printf(\ return 0; }

作业五---求公式近似值

2. 【问题描述】

已知ex的近似值可由下面公式计算得出:

ex=1 + x/1! + x2/2! + x3/3! + ...... + xn/n! 给定x和n,利用上述公式求得ex的近似值。

【输入形式】

从控制台输入小数x,和整数n(n>=1),用空格隔开。

【输出形式】

向控制台输出求得的ex 的近似值(小数点后保留6位有效数据)。

【样例输入】

7 27

【样例输出】

1096.633156

【样例说明】

输入的x为7,n的值为27,即:求e7的近似值,利用上述公式求得的近似值为:1096.633156。

【评分标准】

该题要求输出ex的近似值,共有5个测试点。上传C语言文件名为formula.c。

#include int main() { double x,s,y;

11 / 30

int n,i; double t; scanf(\ t=1; s=1; y=1; for(i=1;i<=n;i++) { t*=i; y*=x; s+=y/t; } printf(\ return 0; }

作业六: 选择题

# 题目

1. 若有变量定义int a; double b; 要输入数据存放在a和b中,则下面正确的输入数据的语句为:C

A. scanf(\B. scanf(\C. scanf(\D. scanf(\

2. 在C语言程序中,以下正确的描述是 (A) 函数的定义可以嵌套,但函数的调用不可以嵌套B

(B) 函数的定义不可以嵌套,但函数的调用可以嵌套

(C) 函数的定义和函数的调用均不可以嵌套

(D) 函数的定义和函数的调用均可以嵌套 3. 以下正确的函数声明形式是 A

(A) double fun(int x, int y) (B) double fun(int x; int y)

(C) double fun(int x, int y); (D) double fun(int x, y);

实验六---字符串中字符排序

1. 【问题描述】编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。 【输入形式】用户在第一行输入一个字符串。 【输出形式】程序按照字符(ASCII)顺序从小到大排序字符串,并删除重复的字符进行输出。

【样例输入】badacgegfacb 【样例输出】abcdefg 【样例说明】用户输入字符串badacgegfacb,程序对其进行按从小到大(ASCII)顺序排序,并删除重复的字符,最后输出为abcdefg 【评分标准】结果完全正确得20分,每个测试点4分。提交源程序名为stringsort.c

#include int main() { char str[500]={0},hash[256]={0}; int i; scanf(\ for(i=0;str[i]!='\\0';i++) hash[str[i]]=1; for(i=0;i!=256;i++) if(hash[i]==1) printf(\ printf(\ scanf(\}

作业七:

选择题 # 题目

1. 若有说明: char *language[] = {\\\\\则以下不正确的叙述是 D

(A) language+2 表示字符串\的首地址

12 / 30

(B) *language[2]的值是字母P

(C) language是一个字符型指针数组,它包含5个元素,每个元素都是一个指向字符串变量的指针

(D) language包含5个相同长度的数组

2. 设有说明 int (* ptr) [M]; 其中ptr是 C (A) M个指向整型变量的指针

(B) 指向M个整型变量的函数指针

(C) 一个指向具有M个整型元素的一维数组的指针

(D) 具有M个指针元素的一维指针数组,每个元素都只能指向整型量

3. 下面能正确进行字符串赋值,并且能确保字符串以’\\0’结尾的操作是 C (A) char s[5] = {\

(B) char s[5] = {’A’, ’B’, ’C’, ’D’, ’E’}; (C) char *s; s = \(D) char *s; scanf(\

4. 若有说明: char *language[] = {\\\\\则表达式

*language[1] > *language[3] 比较的是 C (A) 字符F和字符P

(B) 字符串BASIC和字符串JAVA (C) 字符B和字符J

(D) 字符串FORTRAN和字符串PASCAL

5. 若有以下定义,则数值不为3的表达式是 int x[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p1;C

(A) x[3]

(B) p1 = x + 3, *p1++ (C) p1 = x + 2, *(p1++) (D) p1 = x + 2, *++p1

6. 以下正确的说明语句是A (A) int *b[] = {1, 3, 5, 7, 9};