【C语言】初阶完结练习题

这篇具有很好参考价值的文章主要介绍了【C语言】初阶完结练习题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  •  🎈个人主页:库库的里昂
  •  🎐CSDN新晋作者
  •  🎉欢迎 👍点赞✍评论⭐收藏
  •  ✨收录专栏:C语言初阶
  •  ✨其他专栏:代码小游戏
  •  🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗

【前言】

C语言初阶知识点已经全部更完,相信大家对C语言初阶已经有了一个整体的概念,但我们只知道一些理论上的知识还是没有用的,所以今天我在网上找了一些题目给大家练习巩固之前学的知识,这样能更好的帮助我们加深对其的理解。

一、选择题

1.下列程序执行后,输出结果为()

#include <stdio.h>
    int cnt=0;
int fib(int n){
    cnt++;
    if(n==0)
        return 1;
    else if(n==1)
        return 2;
    else
        return fib(n-1)+fib(n-2);
}
void main()
{
    fib(8);
    printf("%d",cnt);
}

A.41                  B.67

C.109                D.177

【解析】:D        

传进去一个数字8,只要n>=2,cnt就++一次,进入下面的return fib(n - 1) + fib(n - 2)会产生两种结果,分别是7和6,再继续递归时会7又会产生6和5,6产生5和4,一次下去,直到所有递归都结束。.

【C语言】初阶完结练习题,C语言初阶,c语言,开发语言,算法,数据结构,c++

2.在上下文和头文件均正常的情况下,以下程序的输出结果是()

int x = 1;
do{
       printf("%2d", x++);
 } while (x--);

A.1                  B.无任何输出

C.2                  D.陷入死循环

【解析】D

初始化x=1,进入do...while语句,输出x++,x=2出来到while语句中执行x--(先用x=2判断是否为真,再自减),因为x=2为真,所以进行进入do语句,此时x=1,跟刚开始一样一直循环,陷入死循环。

3.下面的代码中,执行之后i和j的值是什么()

int i = 1;
int j;
j = i++;

A.1,1                B.1,2

C.2 ,1               D.2,2

【解析】C

初始化i=1,将i++(先赋值再自增)赋给j,所以j=1,i=2。

4.以下程序的k最终值是()

int i = 10;
int j = 20;
int k = 3;
k *= i + j;  

A.90                B.50

C.70                D.30

【解析】A

初始化i=10、j=20、k=3,而表达式k *= i + j等效于k = k * (i + j),所以k=3*(10+20)=90。

5.以下C程序的最终输出结果是()

#include<stdio.h>
#include<stdlib.h>
 
int 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函数内使用,又初始化全局变量a=1,所以结果输出1。

6.下列描述中正确的是()

A:表示m>n为ture或者m<n为ture的表达式为m>n&&m<n

B:switch语句结构中必须有default语句

C:如果至少有一个操作数为ture,则包含“||”运算符的表达式ture

D:if语句结果中必须有else语句

【解析】C

A选项是m>n || m<n

B选项可以无default语句

D选项也可以为if和else if语句或者只有if语句

7.C语言规定,在一个源程序中,main函数的位置 ()

A:必须在最开始

B:必须在系统调用的库函数的后面

C:可以任意

D:必须在最后

【解析】C

C程序中main函数的位置任意

8.以下叙述不正确的是()

A:一个源程序可由一个或多个函数组成

B:一个源程序必须包含一个main函数

C:c程序的基本组成单位是函数

D:在c程序中,注释说明只能位于一条语句的后面

【解析】D

选项D注释可以随处良好的注释说明,一般建议是写在语句的上面。

9.以下叙述正确的是()

A:在c程序中,main函数必须位于程序的最前面

B:c程序的每行中只能写一条语句

C:C语言本身没有输入输出语句

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

初始化a=0、c=0,进入do...while循环,先计算c--得到c=-1,赋值a=a - 1得到a=-1,执行while语句中的a>0为假跳出循环,此时c=1。

11.假定x和y为double类型,则执行x=2;y=x+3/2;后y的值为()

A.3.500000             B.3

C.2.000000             D.3.000000

【解析】D

3/2是两个整数相处,得到的结果是1,x+3/2=3,又y为double类型,所以结果为3.000000

12.以下for循环执行的次数是()

for (x = 0, y = 0; (y = 123) && (x < 4); x++);

A.是无限循环            B.循环次数不定

C.4                            D.3

【解析】C

第一次循环:x=0、y=0进来,判断(y = 123) && (x < 4)为真,x自增1;

第二次循环:x=1、y=123进来,判断(y = 123) && (x < 4)为真,x自增1;

第三次循环:x=2、y=123进来,判断(y = 123) && (x < 4)为真,x自增1;

第四次循环:x=3、y=123进来,判断(y = 123) && (x < 4)为真,x自增1;

第五次循环:x=4、y=123进来,判断(y = 123) && (x < 4)为假跳出循环。

所以总共四次循环

13.若有定义语句,int year=100,*p=&year;以下语句不能使变量year中的值增至1010的语句是()

A.p+=1;             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

               1011(11)

15.

char a;int b;float c;double d;

则表达式a*b+d-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++

代码示例:

#include<stdio.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;
}

运行结果:

【C语言】初阶完结练习题,C语言初阶,c语言,开发语言,算法,数据结构,c++

【解析二】

先用辗转相除法求出最大公约数,然后a*b/最大公约数=最小公倍

代码示例:

#include<stdio.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);
}

 运行结果:

【C语言】初阶完结练习题,C语言初阶,c语言,开发语言,算法,数据结构,c++

【解析三】

创建个 while 循环 if 判断 a * i % b == 0,看 a 乘于 i 得出的数看能不能被 b 整除如果可以那么它就是最小公倍数

 代码示例:

#include<stdio.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;
}

运行结果:

【C语言】初阶完结练习题,C语言初阶,c语言,开发语言,算法,数据结构,c++

题目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;
    }
}

代码结果:

【C语言】初阶完结练习题,C语言初阶,c语言,开发语言,算法,数据结构,c++

这片代码是输入字符串  需要注意的是最后要将最后一个字符补为'\0'  因为getchar()可以接收回车符 

 今天讲的C语言初阶完结练习题就到这里了,小伙伴们好好做哈~~

【C语言】初阶完结练习题,C语言初阶,c语言,开发语言,算法,数据结构,c++

 文章来源地址https://www.toymoban.com/news/detail-629545.html

到了这里,关于【C语言】初阶完结练习题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】算法的时间复杂度和空间复杂度 (上)(附leetcode练习题)

    ☃️个人主页:fighting小泽 🌸作者简介:目前正在学习C语言和数据结构 🌼博客专栏:数据结构 🏵️欢迎关注:评论👊🏻点赞👍🏻留言💪🏻 如何衡量一个算法的好坏呢?比如对于以下斐波那契数列: 斐波那契数列的递归实现方式非常简洁,但简洁一定好吗?那该如何

    2023年04月22日
    浏览(63)
  • 【数据结构】 算法的时间复杂度和空间复杂度 (上)(附leetcode练习题)

    ☃️个人主页:fighting小泽 🌸作者简介:目前正在学习C语言和数据结构 🌼博客专栏:数据结构 🏵️欢迎关注:评论👊🏻点赞👍🏻留言💪🏻 如何衡量一个算法的好坏呢?比如对于以下斐波那契数列: 斐波那契数列的递归实现方式非常简洁,但简洁一定好吗?那该如何

    2023年04月14日
    浏览(40)
  • 【数据结构】算法的时间复杂度和空间复杂度(下)(附leetcode练习题)

    ☃️个人主页:fighting小泽 🌸作者简介:目前正在学习C语言和数据结构 🌼博客专栏:数据结构 🏵️欢迎关注:评论👊🏻点赞👍🏻留言💪🏻 空间复杂度也是一个数学表达式,是对一个算法在运行过程中 临时占用的额外的存储空间大小的量度 。 空间复杂度不是程序占用

    2023年04月19日
    浏览(86)
  • 数据结构——二叉树练习题

    目录 单值二叉树  相同的树  另一棵树的子树 二叉树的前序遍历  二叉树的构造及遍历 给大家推荐一款刷题,找工作的好网站——牛客网 牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网   思路:根节点跟左子树比较,若相等则继续比,一

    2024年02月11日
    浏览(40)
  • 【数据结构】“单链表”的练习题

    💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃 个人主页 :阿然成长日记 👈点击可跳转 📆 个人专栏: 🔹数据结构与算法🔹C语言进阶 🚩 不能则学,不知则问,耻于问人,决无长进 🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍 题目要求: 给你单链

    2024年02月14日
    浏览(37)
  • 【数据结构(四)】链表经典练习题

    ❣博主主页: 33的博客❣ ▶️文章专栏分类:数据结构◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵 关注我带你学更多数据结构知识 在上一篇文章中博主已经介绍了链表的基础知识,什么是链表,如何实现一个链表,以及LinkedList的操作方法,那么在这篇文章中通过一些链

    2024年04月22日
    浏览(45)
  • 【数据结构】“单链表”的练习题(二)

    💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃 个人主页 :阿然成长日记 👈点击可跳转 📆 个人专栏: 🔹数据结构与算法🔹C语言进阶 🚩 不能则学,不知则问,耻于问人,决无长进 🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍 前言: 最近在刷题的

    2024年02月13日
    浏览(47)
  • 力扣(LeetCode)数据结构练习题(2)

    今天又写了两道关于链表的练习题,来给大家分享一下。巩固一下上一篇学到的链表知识,题目可以然我们更清楚的认识链表。 目录 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表 给你单链表的头结点 head ,请你找出并返回链表的中间结点。如果有两个中

    2024年02月21日
    浏览(55)
  • 【数据结构】“单链表”的练习题(一)

    💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃 个人主页 :阿然成长日记 👈点击可跳转 📆 个人专栏: 🔹数据结构与算法🔹C语言进阶 🚩 不能则学,不知则问,耻于问人,决无长进 🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍 题目要求: 给你单链

    2024年02月12日
    浏览(50)
  • 【数据结构】第二章课后练习题——线性结构

    1、线性表是 一个有限序列,可以为空 2、链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用 单循环链表 存储方式最节省运算时间 3、若某线性表中最常用的操作实在最后一个元素之后插入一个元素和删除第一个元素,则采用 仅有尾结点的

    2024年02月07日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包