C语言题目合集

本文汇总了关于C语言的一些编程题目,涵盖了数组相关的知识点,包括数组的定义、使用、比较和指针操作。题目涉及strcmp函数的工作原理、数组指针的性质、数组元素的存储方式等,帮助读者深入理解C语言的数组概念。
摘要由CSDN通过智能技术生成

标题:2019下期C语言题目

一、数组

1、函数strcmp从头至尾顺序地将其对应字符比较,遇到两个字符不等时,两个字符相减得到一个int型值,两个字符串完全相同时,则返回0。(正确)
【按ASCLL码值大小比较、直到出现不同的字符或遇到 ’ \ 0 ’ 为止、如果出现不相同的字符,则以第一对不同的字符的比较结果为准、在英文字典中位置在后面的为“大”,小写字母比大写字母大、相同—函数值为0;字符串1>字符串2—正整数;字符串1<字符串2—负整数】

2、指向数组元素的指针只可指向数组的首元素。(错误)
【不一定】

3、对于已正确定义的二维数组a, *(a[i]+j)与a[i][j]的含义相同。(正确)
【两种不同的写法,本质都是取那个地址存在的值】

4、如果strcmp(s1,s2)返回的结果为0,表示字符串s1和s2不相同。(错误)
【strcmp返回0是相同】

5、数组名就是一个指针常量,指向数组的首元素(或者说代表了数组的首地址)。(错误)
【array是数组首元素的首地址(和&array[0]一样),&array是整个数组array的首地址。array和&array的值是一样的。array[0]和array一样,都是数组首元素的首地址,所以+1后的结果也相同。数组名的值是个指针常量,也就是数组第一个元素的地址。】

6、在C语言中能逐个地使用下标变量,也能一次引用整个数组。(错误)
【不能引用整个数组,只能用里面的元素】

7、int a[5];
the 5 elements of a are a[1],a[2],a[3],a[4],a[5] (错误)
【没有a[5],但有a[0]】

8、假设有定义如下: int array[10]; 则该语句定义了一个数组array。其中array的类型是整型指针(即: int *)。(错误)
【整型指针不对】

9、一维数组定义的一般形式如下,其中的类型名指定数组中每个元素的类型。
类型名 数组名[数组长度];(正确)
【一维数组的元素的类型靠类型名】

10、一维数组定义的一般形式如下,其中的类型名指定数组变量的类型。
类型名 数组名[数组长度];(错误)
【类型名指定数组中每个元素的类型】

11、以下定义了一个一维数组str,该数组可以存放81个字符型数据。
char str[81]; (正确)
【char 类型占一个字节】

12、在定义数组之后,根据数组中元素的类型及个数,在内存中分配一段连续存储单元用于存放数组中的各个元素。(正确)
【数组的存储空间一定是连续的,而且每个元素的类型都是所声明的类型。随机分配空间,然后用指针将其联合起来是有点像线性表的链式存储结构(就是链表),但是数组的空间都是连续的,即每个元素的地址是连续的,但是元素存储的还是数据,是对象】

13、数组定义后,数组名表示该数组所分配连续内存空间中第一个单元的地址,即首地址。(正确)
【数组名表示该数组所分配连续内存空间中的第一个单元的地址,即首地址。(由于数组空间一经分配之后再运行过程中不会改变,因此数组名是一个地址常量,不允许修改)】

14、数组定义后,只能引用单个的数组元素,而不能一次引用整个数组。
(正确)
【只能引用单个元素,不能引用整个数组】

15、若有定义int a[]={2,4,6,8,10},a[1]和a++表示的含义相同。(错误)
【不相同,a[1]是初始化中的‘‘4’’是引用单个元素,a++是首地址加1】

16、数组初始化时,初始值个数小于数组元素的个数,C语言自动将剩余的元素初始化为初始化列表中的最后一个初始值。(错误)
【自动将未赋初值的元素化为0】

17、对于定义int a[5];可以通过语句scanf("%d",a);输赋入全部元素的值。(错误)
【整型数组输入要加地址符】

1、有说明语句int a[4][5];,则a[2]+3表示__。 (A)

A、a数组行下标为2、列下标为3的元素的地址
B、a数组行下标为2、列下标为3的元素的值
C、a数组第2行的首地址
D、a数组第3行的首地址
【a[2]为第2行的首地址,+3成了a[2][3】

2、对于定义 char str[] = “abc\000def\n”(注:其中0为数字零),求字符串str的长度len和数组str的大小size,len和size分别是: (C)

A、12 ,13
B、3 ,11
C、3 ,9
D、3 ,4
【size遇到\0 结束】

3、以下哪个定义中的p不是指针,请选择恰当的选项: (C)

A、char **p;
B、char (*p)[10];
C、char *p[6];
D、给出的三项中,p都是指针
【C为定义一个指针数组,也就是数组里的元素为指针】

4、有两个字符数组a,b,则以下正确的输入语句是(B)

A、gets(a,b);
B、scanf("%s%s",a,b);
C、scanf("%s%s",&a,&b);
D、gets(“a”),gets(“b”);
【“字符数组” 数组名“a、b”就表示地址,所以不需要用“&”地址符。】

5、若用数组名作为函数调用的实参,则传递给形参的是 (A)

A、数组的首地址
B、数组第一个元素的值
C、数组中全部元素的值
D、数组元素的个数
【数组名是数组的首地址】

6、如果变量定义如下,则正确的语句是(E )。

int i, j, tab[3][4];

A、tab[0][ ] = 0;

B、tab[ ][3] = 3;

C、tab = 100;

D、for(i = 1; i <= 3; i++){
for(j = 1; i <= 4; j++){
scanf(“%d ”, &a[i][j];
}
}

E、for(i = 0; i < 3; i++){
for(j = 0; j < 4; j++){
printf("%4d", tab[i][j]);
}
printf("\n");
}
【A 不能省略列数,B初始化不能这样,C中tab是数组名】

7、若有定义char str[]={“Python”, “SQL”, “JAVA”, “PHP”, “C++”}; 则表达式str[1] > *str[3]比较的是:(D)

A、字符P和字符J
B、字符串SQL和字符串PHP
C、字符串Python和字符串JAVA
D、字符S和字符P
【‘‘’’中的是一个元素,比较首地址,此题出现三次】

8、选项(A B C D )与以下字符数组定义等价。

static char s[6] = {‘H’, ‘a’, ‘p’, ‘p’, ‘y’, ‘\0’};

A、static char s[6] = {‘H’, ‘a’, ‘p’, ‘p’, ‘y’};

B、static char s[6] =“Happy”;

C、static char s[6] ={“Happy”};

D、static char s[6] = {‘H’, ‘a’, ‘p’, ‘p’, ‘y’, 0};
【全对,都行】
1、.阶乘计算升级版
本题要求实现一个打印非负整数阶乘的函数。
输入样例:15
输出样例:1307674368000

#include <stdio.h>

void Print_Factorial ( const int N );

int main()
{
   
    int N;
	
    scanf("%d", &N);
    Print_Factorial(N);
    return 0;
}
void Print_Factorial ( const int N )
 {
   
	 double product=1;
	 int i;
	 if(N<0)
	  printf("Invalid input\n"); 
	 else
	 {
   
	  for(i=1;i<=N;i++)
	   product=product*i;
	  printf("%.0f\n", product);
 	}
}

【循环,阶乘的定义】
2、.数组循环右移本题要求实现一个对数组进行循环右移的简单函数:一个数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值