旅行社网站建设设计公司哪家好,电商设计素材网站推荐,中山技术支持中山网站建设,wordpress拖曳式建站#x1f388;个人主页#xff1a;库库的里昂 #x1f390;CSDN新晋作者 #x1f389;欢迎 #x1f44d;点赞✍评论⭐收藏 ✨收录专栏#xff1a;C语言初阶 ✨其他专栏#xff1a;代码小游戏 #x1f91d;希望作者的文章能对你有所帮助#xff0c;有不足的地方请在评论… 个人主页库库的里昂 CSDN新晋作者 欢迎 点赞✍评论⭐收藏 ✨收录专栏C语言初阶 ✨其他专栏代码小游戏 希望作者的文章能对你有所帮助有不足的地方请在评论区留言指正大家一起学习交流 【前言】 C语言初阶知识点已经全部更完相信大家对C语言初阶已经有了一个整体的概念但我们只知道一些理论上的知识还是没有用的所以今天我在网上找了一些题目给大家练习巩固之前学的知识这样能更好的帮助我们加深对其的理解。 一、选择题
1.下列程序执行后输出结果为
#include stdio.hint cnt0;
int fib(int n){cnt;if(n0)return 1;else if(n1)return 2;elsereturn fib(n-1)fib(n-2);
}
void main()
{fib(8);printf(%d,cnt);
} A.41 B.67 C.109 D.177 【解析】D 传进去一个数字8只要n2,cnt就一次进入下面的return fib(n - 1) fib(n - 2)会产生两种结果分别是7和6再继续递归时会7又会产生6和5,6产生5和4一次下去直到所有递归都结束。. 2.在上下文和头文件均正常的情况下以下程序的输出结果是
int x 1;
do{printf(%2d, x);} while (x--); A.1 B.无任何输出 C.2 D.陷入死循环 【解析】D 初始化x1进入do...while语句输出xx2出来到while语句中执行x--先用x2判断是否为真再自减因为x2为真所以进行进入do语句此时x1跟刚开始一样一直循环陷入死循环。 3.下面的代码中执行之后i和j的值是什么
int i 1;
int j;
j i; A.11 B.12 C.2 1 D.22 【解析】C 初始化i1将i先赋值再自增赋给j所以j1i2。 4.以下程序的k最终值是
int i 10;
int j 20;
int k 3;
k * i j; A.90 B.50 C.70 D.30 【解析】A 初始化i10、j20、k3而表达式k * i j等效于k k * i j所以k3*102090。 5.以下C程序的最终输出结果是
#includestdio.h
#includestdlib.hint a 1;
void test()
{int a 2; a 1;
}int main()
{test();printf(%d, a);return 0;
} A.1 B.2 C.3 D.4 【解析】A 这里test函数内a为局部变量局部的a只能在test函数内使用又初始化全局变量a1所以结果输出1。 6.下列描述中正确的是 A表示mn为ture或者mn为ture的表达式为mnmn B:switch语句结构中必须有default语句 C如果至少有一个操作数为ture则包含“||”运算符的表达式ture D:if语句结果中必须有else语句 【解析】C A选项是mn || mn B选项可以无default语句 D选项也可以为if和else if语句或者只有if语句 7.C语言规定在一个源程序中main函数的位置 A必须在最开始 B必须在系统调用的库函数的后面 C可以任意 D必须在最后 【解析】C C程序中main函数的位置任意 8.以下叙述不正确的是 A一个源程序可由一个或多个函数组成 B一个源程序必须包含一个main函数 Cc程序的基本组成单位是函数 D在c程序中注释说明只能位于一条语句的后面 【解析】D 选项D注释可以随处良好的注释说明一般建议是写在语句的上面。 9.以下叙述正确的是 A在c程序中main函数必须位于程序的最前面 Bc程序的每行中只能写一条语句 CC语言本身没有输入输出语句 D在对一个c程序进行编译的过程中可发现注释中的拼写错误 【解析】C 选项A中C程序中main函数的位置任意 选项B你可以写一个语句也可以写多个语句。 选项D中C程序进行编译的过程中是不可以发现注释中粗祥的拼写错误的。注释中的拼写错误只可能通过人工检查发现。 10.在上下文及头文件均正常的情况下执行如下代码c的值是
int a 0;
int c 0;
do
{--c;a a - 1;
}while (a 0); A.0 B.1 C.-1 D.死循环 【解析】C 初始化a0、c0进入do...while循环先计算c--得到c-1赋值aa - 1得到a-1执行while语句中的a0为假跳出循环此时c1。 11.假定x和y为double类型则执行x2yx3/2后y的值为 A.3.500000 B.3 C.2.000000 D.3.000000 【解析】D 3/2是两个整数相处得到的结果是1x3/23又y为double类型所以结果为3.000000 12.以下for循环执行的次数是
for (x 0, y 0; (y 123) (x 4); x) A.是无限循环 B.循环次数不定 C.4 D.3 【解析】C 第一次循环x0、y0进来判断(y 123) (x 4)为真x自增1 第二次循环x1、y123进来判断(y 123) (x 4)为真x自增1 第三次循环x2、y123进来判断(y 123) (x 4)为真x自增1 第四次循环x3、y123进来判断(y 123) (x 4)为真x自增1 第五次循环x4、y123进来判断(y 123) (x 4)为假跳出循环。 所以总共四次循环。 13.若有定义语句int year100,*pyear;以下语句不能使变量year中的值增至1010的语句是 A.p1; B.(*p); C.(*p); D.*p 【解析】D 的优先级比*高所以D中p先执行p指向的地址改变了所以year的大小没有变化。 14.选择表达式11|10的结果本题数值均为十进制 A.11 B.10 C.8 D.2 【解析】A 11补码1011 10补码1010 101111 15.
char a;int b;float c;double d;
则表达式a*bd-c值的类型为 A.float B.int C.char D.double 【解析】D a(char) * b(int) d(double) - c(float) 根据整型提升所以表达式变为a(int) * b(int) d(double) - c(float) 根据算术转换所以表达式变为a(double * b(double) d(double) - c(double) 所以表达式结果为double类型 二、编程题
题目1求最小公倍数正整数a和正整数b的最小公倍数是指能被a和b整除的最小的正数值设计一个算法求a和b的最小公倍数
输入描述输入两个整数a和b
输出描述输出a和b 的最小公倍数
示例
输入5 7
输出35
【解析一】 先找出a和b中的最大数赋值给max然后用 if 判断最大数max是否能同时%a和b等于零那么它就是最小公倍数如果不行那最大数max 代码示例
#includestdio.h
int main()
{int a 0, b 0;scanf(%d %d, a, b);int m a b ? a : b;while (m){if (m % a 0 m % b 0){printf(%d\n, m);break;}m;}return 0;
}
运行结果 【解析二】 先用辗转相除法求出最大公约数然后a*b/最大公约数最小公倍 代码示例
#includestdio.h
int main()
{int a 0, b 0;scanf(%d %d, a, b);int n a * b;int m 0;while (m a % b){a b;b m;}printf(%d\n, n / b);
} 运行结果 【解析三】 创建个 while 循环 if 判断 a * i % b 0看 a 乘于 i 得出的数看能不能被 b 整除如果可以那么它就是最小公倍数 代码示例
#includestdio.h
int main()
{int a 0, b 0;scanf(%d %d, a, b);int i 1;while ((a * i) % b ! 0){i;}printf(%d\n, i * a);return 0;
}
运行结果 题目2将一句话的单词进行倒置标点不倒置。比如I like beijing.经过函数后变为beijing. like I
输入描述
将一句话的单词倒置标点不倒置。比如 I like Beijing.经过函数后变为 bejing .like i
输出描述
每个测试输入包含1个测试用例输入长度不超过100个单词
示例
输入I like beijing.
输出beijing. like I
【解析】 第一步字符串整体逆置得到.gnijieb ekil I 第二步将字符串中每一个单词逆置得到beijing. like I 这里字符串操作的实现非常关键故单独实现一个函数进行字符串的逆置由于每个单词的长度不一因此通过指针来实现字符串的逆置可以对代码进行简化 代码示例
#include stdio.h
#include string.h
void ReverseString(char* left, char* right)//反转字符串
{while(left right){char tmp *left;*left *right;*right tmp;left; right--;}
}
int main()
{char str[100] 0; gets(str);int length strlen(str);//将字符串整体翻转ReverseString(str, str length - 1); char* start str;//将字符串中的每个单词翻转 while(*start){char* end start;while(*end ! *end)//寻找空格或‘\0’{end;}ReverseString(start, end - 1);if(*end ){start end 1;}else{start end;}printf(%s,str); return 0;}
}代码结果 这片代码是输入字符串 需要注意的是最后要将最后一个字符补为\0 因为getchar()可以接收回车符 今天讲的C语言初阶完结练习题就到这里了小伙伴们好好做哈~~