首页 > 其他分享 >练习题

练习题

时间:2024-10-10 20:45:37浏览次数:8  
标签:练习题 函数 指向 int 数组 main 指针

1.关于C语言,以下叙述不正确的是(B )。
A.分号是C语言的必要组成部分
B.主函数的名字不一定用main表示
C.C程序的注释可以写在句的后面
D.函数是C程序的基本单位
tips:
A. 分号是C语言的必要组成部分
正确。在C语言中,分号。用于结束一条语句。因此,分号是C语言语法的必要组成部分,缺少分号会导致编译错误。
B. 主函数的名字不一定用main表示
不正确。C语言的标准规定,程序的入口函数必须是 main。尽管在某些特定情况下,可能会定义其他名称的函数,但程序的执行始终是从 main 函数开始的。所以,主函数的名称必须是 main。
C. C程序的注释可以写在句的后面
正确。C语言支持两种类型的注释:单行注释(//)和多行注释(/* ... */)。在一条语句的后面添加注释是完全合法的,编译器会忽略这些注释。
D. 函数是C程序的基本单位
正确。在C语言中,函数是程序的基本构建块,每个函数可以执行特定的操作,并且可以被其他函数调用。程序的结构通常由多个函数组成。
结论
综上所述,选项 B 是不正确的,因为主函数的名字必须是 main。


2.有以下程序

  int main()
  {   
		int a=7,b=8,*p,*q,*r;
        p=&a;q=&b;
        r=p;p=q;q=r;
        printf(“%d,%d,%d,%d\n”,*p,*q,a,b);   
  }
程序运行以后的输出结果是(C)
A)8,7,8,7      B) 7,8,7,8   
C) 8,7,7,8      D) 7,8,8,7

变量的初始状态
a 的值是 7
b 的值是 8
p 指向 a
q 指向 b
r 最开始也只是一个指针,还没有实际的指向,但在执行 r = p; 时,r 会指向 a。
指针的操作
p = &a;:p 现在指向 a,即 *p 的值是 7。
q = &b;:q 现在指向 b,即 *q 的值是 8。
r = p;:r 现在指向 a,*r 的值是 7。
p = q;:p 现在指向 b,即 *p 的值是 8。
q = r;:q 现在指向 a,即 *q 的值是 7。
最终状态
*p:指向 b,所以 *p 的值是 8。
*q:指向 a,所以 *q 的值是 7。
a 的值仍然是 7。
b 的值仍然是 8。


3.假设平台是32位指令集,请计算sizeof的值:
void *p = malloc(1000);
sizeof(p) = 4__。

tips:
指针大小:在32位系统中,指针的大小是4个字节。

sizeof运算符:sizeof 是一个编译时运算符,用于计算数据类型或变量所占用的字节数。在这里,p 是一个 void * 类型的指针。

void * 类型:虽然 p 指向了通过 malloc 分配的内存(1000字节),但 sizeof(p) 计算的是指针本身的大小,而不是它所指向的内存块的大小。
sizeof(p) 在32位平台上等于 4 字节。


4.int (*a[10])(int);代表什么意思__________。
这是一个代表一个长度为10的指针数组,数组元素是指向一个整型函数的指针。这个函数接受一个整型参数(int),并返回一个整型值(int)。简洁地说,这个表达式表示有10个指针,它们分别指向不同的整型函数。


5.strcpy与memcpy的区别
1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy


6.数组和指针的区别?

  1. 本质:数组是一段连续的内存空间,用于存储相同类型的数据;指针是一个内存地址,用于指向某个变量或数据。
  2. 访问方式:数组使用索引直接访问,索引值即为元素在数组中的位置;指针使用间接访问,通过指针值获取指向的内存地址,再通过该地址访问数据。
  3. 动态性:数组在创建时需指定固定的大小,无法动态扩展;指针可以动态分配内存,适用于动态数据结构。
  4. 修改性:数组元素可以被修改,但数组名(即数组首元素的地址)不能被修改;指针变量可以修改其指向的内存地址。
  5. 字符串处理:字符数组用于存储字符串,字符串以'\0'(null)结尾;字符串指针指向字符串的首字符,不可修改。
    综上,数组和指针在本质、访问方式、动态性、修改性和字符串处理方面有所区别。

7.编程题:输出9*9口诀。

#include <stdio.h>

int main() {
    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= i; j++) {
            printf("%d*%d=%d\t", j, i, i * j);
        }
        printf("\n");
    }
    return 0;
}

8.用一个递归函数实现n的阶乘。即:n! = n*(n-1)!

#include <stdio.h>

int factorial(int n) {
    if (n == 0) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

int main() {
    int n;
    printf("请输入一个正整数:");
    scanf("%d", &n);
    printf("%d的阶乘是:%d\n", n, factorial(n));
    return 0;
}


9.实现在一个源字符串中查找指定的子串是否存在,如果存在则返回第一次出现的地址,不存在则返回NULL。
原型:char *mystrstr(const char *haystack, const char * needle)

char *mystrstr(const char *haystack, const char * needle)
{
	while(1)
	{
		if(*haystack == *needle){
			char *hp = haystack;
			char *np = needle;
			int isFind=1;
			while(*np != '\0')
			{
				if(*hp++ != *np++){
					isFind = 0;
					break;
				}
			}
			if(isFind)
				return hp;
		}
		
		if(*haystack++ == '\0')
			break;
	}
	
	return NULL;
}

标签:练习题,函数,指向,int,数组,main,指针
From: https://www.cnblogs.com/hhail08/p/18457097

相关文章

  • Linux练习题(一)
    1、在/zhangsan目录下建立pc目录mkdir-p/zhangsan/pc2、在zhangsan/pc目录下完成以下目录结构创建ceshi、ceshi/ceshi1、ceshi/ceshi1/ceshi1-1mkdir-p/zhangsan/pc/ceshi/ceshi1/ceshi1-13、在zhangsan/pc/目录下分别建立以下文件1、2、3、4cdzhangsan/pctouch......
  • 刷c语言练习题5(牛客网)
    1、若有定义inta[8];,则以下表达式中不能代表数组元素a[1]的地址的是()A、&a[0]+1B、&a[1]C、&a[0]++D、a+1答案:C解析:C选项中&a[0]是一个地址常量,对地址常量的赋值操作是不合法的,错误。2、 以下函数值的类型是:fun(floatx){floaty;y=3*x-4;returny;}A、i......
  • java学习笔记3-高级循环-练习题
    黑马java有关数组的几道感觉比较难的题目,记录一下。第一题现有一个整数数组,数组中的每个元素都是[0-9]之间的数字,从数组的最大索引位置开始到最小索引位置,依次表示整数的个位、十位、百位。。。依次类推。请编写程序计算,这个数组所表示的整数值。例如:数组:{2,1,3,5,4}......
  • 练习题 - Scrapy爬虫框架 Settings 项目配置
    在使用Scrapy构建网络爬虫时,Settings框架配置是至关重要的部分。Settings是Scrapy框架的配置核心,它决定了爬虫的行为、请求的频率、用户代理的使用、数据存储等一系列关键功能。掌握Scrapy的配置设置,能够让你的爬虫更加高效、稳定和智能。通过合理配置,可以更好地模......
  • 练习题 - 爬虫数据存储方法
    在数据科学和编程实践中,数据的获取和存储是至关重要的步骤之一。在本文中我们将演示如何从《三国志13》的相关网页中抓取人物基础数据,并将这些数据保存到多种不同的文件格式和数据库中。具体来说我们将使用Python编写脚本,利用requests库获取网页内容,使用BeautifulSoup解析H......
  • Java面向对象第四章方法重写与多态练习题
    练习1:使用重写优化电子宠物系统需求说明使用方法重写优化电子宠物系统,实现如下效果 packagecom.hz.ch02;/***猫类*@author26255**/publicclassCatextendsFather{ privateStringsex; publicCat(Stringname,inthealth,intlove,Stringse......
  • 01 重点 导入模块练习题
    练习1:client飘红可以导入原因:因为当前运行的run.py文件,此时当前目录下面的所有文件都会自动增加到sys.path里面,此时bin目录下面的所有模块都可以导入重点。练习2:#在排除pycharm操作下,此场景下在终端运行run.py文件中,不能导入x方法。原因:s21test路径没有导入到sys.path......
  • 20240924_102514 c语言 循环练习题
    ......
  • 04 内存回顾 练习题
    """v1=[1,2,3]v2=[1,2,3]v1=[1,2,3]v2=v1v3=v1v1.append(999)#v2、V3指向V1内存地址,如果V1改变,V2/V3也会改变v1=[1,2,3]v2=v1v3=v1v1=[1,]#v2、V3指向V1内存地址,V1赋值,V2/V3指向V1内存地址,V1指向赋值内存地址:1v1=[1,2,3]v2=......
  • 18 字典 练习题
    练习题#!/usr/bin/envpython#-*-coding:utf-8-*-""""""#1.请获取"刘伟达""""info={"name":'刘伟达','age':18,'gender':'男','hobby':'同桌'}......