1.1 C 语言概述
1.应用程序 ONEFUNC.C 中只有一个函数,这个函数的名称是________。 2.一个函数由________和________两部分组成。 3. C 语言源程序文件的扩展名是________; 编译后生成目标程序文件, 扩展名是________; 连接后生成可执行程序文件,扩展名是________;运行得到结果。 4.编写一个 C 程序,上机运行要经过的四个步骤是:___________________________。 5.C 语言中的标识符只能由三种字符组成,它们是________、________和 ________。而 且第一个字符必须为________。 6.C 语言中的标识符可分为关键字、________和 ________3 类。 7.一个 C 程序的执行是从________。 A.本程序的 main 函数开始,到 main 函数结束 B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C.本程序的 main 函数开始,到本程序文件的最后一个函数结束 D.本程序文件的第一个函数开始,到本程序 main 函数结束 8.以下叙述不正确的是________。 A.一个 C 源程序可由一个或多个函数组成 B.一个 C 源程序必须包含一个 main 函数 C.在 C 程序中,注释说明只能位于一条语句的后面 D.C 程序的基本组成单位是函数 9.C 语言规定:在一个源程序中,main 函数的位置________。 A.必须在程序的开头 B.必须在系统调用的库函数的后面 C.可以在程序的任意位置 D.必须在程序的最后 10.C 编译程序是________。 A.将 C 源程序编译成目标程序的程序 B.一组机器语言指令 C.将 C 源程序编译成应用软件 D.C 程序的机器语言版本 11.要把高级语言编写的源程序转换为目标程序,需要使用__________。 A.编辑程序 B.驱动程序 C.诊断程序 D.编译程序 12.以下叙述中正确的是__________。 A.在 C 程序中,main 函数必须位于程序的最前面 B.C 程序的每行中只能写一条语句C.C 语言本身没有输入输出语句 D.在对一个 C 程序进行编译的过程中,可以发现注释中的拼写错误 13.参照本章例题,编写一个 C 程序,要求输出如下字符。 ************************************************************************ Welcome to Expo 2016! Chongqing 2016 14.设计一个程序,输入 3 个整数,计算并显示输出这 3 个整数之和。
1.2 基本数据类型、运算符与表达式
1.C 语言规定:在程序中对用到的所有数据都必须指定其________类型,对变量必须做 到先________,后________。 2.设 C 语言中的一个基本整型数据在内存中占 2 个字节,若需将整数 135791 存放到变 量 a 中,应采用的类型说明语句是________。 3.在 C 语言中,转义字符'\n'的功能是________;转义符'\r'的功能是________。 4.在 C 语言中,&作为双目运算符时表示的是________,而作为单目运算符时表示的是 ________。 5.在 C 语言的赋值表达式中,赋值号左边必须是________。 6.自增运算符++、自减运算符,只能用于________,不能用于常量或表达式。++和 的结合方向是“自________至________”。 7.若有定义:int x=3,y=2; float a=2.5,b=3.5;,则下面表达式的值为________。 (x+y)%2+(int)a/(int)b 8.下列 4 组选项中,均是 C 语言关键字的选项是________。A.auto B.switch C.signed D.if enum typedef union struct include continue scanf type 9.sizeof(float)是__________。 A.一个双精度型表达式 B.一个整型表达式 C.一种函数调用 D.一个不合法的表达式 10.在 C 语言中,要求运算数必须是整型的运算符是________。 A.% B./ C.< D.! 11.下面正确的字符常量是__________。 A."C" B."\\" C.'W' D.' ' 12.以下正确的叙述是__________。 A.在 C 程序中,每行中只能写一条语句 B.若 a 是实型变量,C 程序中允许赋值 a=10,因此实型变量中允许存放整型数 C.在 C 程序中,无论是整数还是实数,都能被准确无误地表示 D.在 C 程序中,%是只能用于整数运算的运算符 13.表示条件:10<x<100 或 x<0 的 C 语言表达式是________。 14.逻辑运算符两侧运算对象的数据类型________。 A.只能是 0 或 1 B.只能是 0 或非 0 正数 C.只能是整型或字符型数据 D.可以是任何类型的数据 15.运行下面的程序,如果从键盘上输入 6,输出的结果是________。 void main() { int x;
scanf("%d",&x); if(x++>5) printf("%d",x); else printf("%d\n",x); } 16.编写一个程序,求出给定半径 r 的圆的面积和周长,并输出计算结果。其中,r 的值 由用户输入,用实型数据处理。 17.已知华氏温度和摄氏温度之间的转换关系是:C=5/9*(F-32)。编写一个程序,将用 户输入的华氏温度转换为摄氏温度,并输出结果。
1.3 顺序结构程序设计
1.结构化程序设计的三种基本结构是________、________和________。 2.下面语句中正确的是________。
A.scanf ("a=b=%d",&a,&b); B.scanf ("a=%d,b=%f",&m,&f ); C.scanf ("%c","c"); D.scanf ("%7.2f", &f);
3.执行 scanf ("%c%c",&a,&b) 语句,若要使变量 a 和 b 的值分别为'a'和'b',则正确的输 入方法为________。
A.ab B.'a' 'b' C.a b D.a,b 4.下面程序运行后,从键盘输入 31,则程序的输出结果是________。 void main () { int a ; scanf("%d", &a); printf ("a=%d,Ha=%x,Oa=%o",a,a,a); } 5.设 a,b,c,d,m,n 均为 int 型变量,且 a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=a>b)&& (n=c>d)运算后,n 的值是________。 6.编写程序:输入华氏温度 F,要求输出摄氏温度 C。要求计算结果保留两位小数。计 算公式为: C 5 (F 32) 9 = - 。
7.编写程序:已知圆半径和圆柱高,求圆柱的体积。要求计算结果保留两位小数。 【分析】可以将圆周率定义为符号常量 PI,为使运算结果保留两位小数,输出采用的格 式符为%.2f。
8.编写程序:将任意一个两位正整数平方后,取其百位数和十位数,构成一个新的两位 整数。
1.4 选择结构程序设计
1.编写一个 C 程序,要求从键盘输入三个整数 x,y,z,请把这三个数由小到大输出。 【分析】排序问题。想办法把三个数进行调换,使得最小的数放到 x 变量里,最大的数 放在 z 变量里。具体方法如下:先将 x 与 y 进行比较,如果 x>y 则将 x 与 y 的值进行交换, 然后再用 x 与 z 进行比较,如果 x>z 则将 x 与 z 的值进行交换,这样能使 x 最小;然后将 y 与 z 比较,并将较小的值保存在 y 里而较大的值放在 z 里。最后,依次输出 x,y,z。 2.编写一个 C 程序,要求从键盘输入一个不多于 5 位的正整数 x,在屏幕上输出:一、 它是几位数;二、逆序显示出各位数字,例如:原数为 789,应输出 987。3.编写程序:要求从键盘输入两个数,并依据提示输入的数字,选择对这两个数的运算, 并输出相应的运算结果。提示为:1:作加法;2:做乘法;3:做除法。
1.5 循环结构程序设计
1.输入一行字符,分别统计出其中字母、数字和其他字符的个数。
2.求解爱因斯坦数学题。有一条长度不多于 1000 步的阶梯,若每步跨 2 阶,则最后剩 1 阶;若每步跨 3 阶,则最后剩 2 阶;若每步跨 5 阶,则最后剩 4 阶;若每步跨 6 阶,则最后剩 5 阶;若每步跨 7 阶,则最后一阶都不剩,问总共有多少级阶梯?
3.100 匹马驮 100 担货,大马一匹驮 3 担,中马一匹驮 2 担,小马两匹驮 1 担,求大、 中、小马的数目,要求列出所有的可能。 4.编写程序,求 1~9999 之间的全部同构数。同构数是这样一组数:它出现在平方数的 右边。例如:5 是 25 的右边的数,25 是 625 右边的数,5 和 25 都是同构数。 【分析】本题不需要任何输入数据,因为已知待处理的数据是 1~9999 之间的数。因此, 采用循环结构,将 1~9999 之间的数逐个取出,通过设定条件来判断其是不是同构数即可。
于 9,则取其除 10 的余数。如,2863 加密后得到 4085。
7.古典问题:有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三 个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
8.从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,求所有可 能的方案。
10.试编程判断输入的正整数是否既是 5 又是 7 的整数倍数,若是,则输出 yes;否则输 出 no。
1.6 数组
1.定义一个含有 30 个整型元素的数组,按顺序分别赋予从 2 开始的偶数;然后按顺序 每五个数求出一个平均值,放在另一个数组中并输出。请编程。 2.读懂下面的程序并填空。 void main() { char str[80]; int i=0; gets(str); while(str[i]!=0) { if(str[i]>='a'&&str[i]<='z') str[i]=32; i++; } puts(str); } 程序运行时,如果输入 upcase,屏幕显示________。 程序运行时,如果输入 Aa1Bb2Cc3,屏幕显示 ________。 解析:程序功能为将输入字符串中小写英文字母转换为大写字母,其他符号保持不变。f(1)=1, f(2)=1, f(n)=f(n2)+f(n1) (n≥3) 解析: 要用数组存放 Fibonacci 数列的前 15 项, 数组大小为 15, 用数组元素 Fib[0]、 Fib[1] 分别代表数列最开始的两项,可利用递推公式 f(i)=f(i2)+f(i1) (15≥i≥2)计算第 i 项。注意数 组下标从 0 开始计数。 4.编写程序:从键盘输入两个字符串 a 和 b,要求不用库函数 strcat 把 b 的前五个字符连 接到 a 中;如果 b 的长度小于 5,则把 b 的所有元素都连接到 a 中。
5.输入 10 个 0~100 的随机整数到指定的数组中。
6.输入一个 3 行 4 列的数组,先以 3 行 4 列的格式输出该数组,然后找出该数组中值最 小的元素,输出该元素及其两个下标。
1.7 函数
1.编写一个函数,其功能是计算二维数组每行之和以及每列之和。
2.从键盘上输入多个单词,输入时各单词用空格隔开,用'#'结束输入。编写一个函数, 将每个单词的第一个字母转换为大写字母,在主函数中实现单词的输出。
3.分析下列程序运行结果。 #include <stdio.h> int k; void fan() { int m=0; static int n=0; k++; m++; n++; printf("\n%4d%4d%4d",k,m,n); } void main() { fan(); fan(); k=5; fan(); } 解答:程序运行结果为 4.编写程序求下式的值:S=2 1 ×1+2 2 ×2!+…+2 n ×n!(n<10)。要求如下: (1)不使用数学函数,编写函数求 2 n 和 n!; (2)编写函数调用前两个函数求 S; (3)在主函数中输入 n,输出计算的 S 值。
1.8 指针
1.编写程序:输入 10 个整数到一维数组中,把该数组中所有为偶数的数,放到另一个 数组中去。用指针法对数组进行访问。 【分析】利用指向数组的指针对数组元素进行访问。初始时,令指针指向数组的第 1 个 元素,通过指针的++运算即可逐个访问数组元素。 2.对一维数组中的 10 个整数进行操作:从第 3 个元素开始直到最后一个元素,依次向 前移动一个位置,输出移动后的结果。用指针对数组进行访问。 【分析】将第 3 个元素向前移动,是指将第 3 个元素的值赋给数组的第 2 个元素。这样, 数组的第 2 个元素的值将被覆盖。可见,当数组的元素依次向前移动时,其前面的元素被逐个 覆盖。这种操作,常用于删除数组中某一元素的值。3.在一个字符数组中存放"AbcDEfg"字符串,编写程序,把该字符串中的小写字母变为 大写字母,把该字符串中的大写字母变为小写字母。要求用指针对字符串进行访问。 4.输入 5 个字符串,比较它们的大小,输出 5 个字符串中最大的字符串。要求用指针实 现对字符串的访问。 【分析】在字符串之间比较大小时,不能使用 C 语言的关系运算符,如>和<等进行比较, 而需调用标准字符串函数 strcmp,用于比较两个字符串的大小关系。在使用该函数时,应包含 "string.h"这个头文件。