文章目录
- 选择
- 编程
- NC31 第一个只出现一次的字符
- 面试题 01.01. 判定字符是否唯一
选择
以下程序运行后的输出结果是( )
#include <stdio.h>
void fun(char **p)
{
int i;
for(i = 0; i < 4; i++)
printf("%s", p[i]);
} in
t main()
{
char *s[6] = {"ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWX"};
fun(s);
printf("\n");
return 0;
}
A: ABCDEFGHIJKL
B: ABCD
C: AEIM
D: ABCDEFGHIJKLMNOP
答案 : A
解析:
fun
函数的参数是一个指向指针的指针 char **p
。在这个函数中,使用一个循环来遍历 p
指向的字符串数组,从下标 0 到 3
,即共四个元素。每次循环使用 printf
函数打印对应位置的字符串。
在主函数中,定义了一个字符串指针数组 char *s[6]
,数组中包含六个字符串常量。然后调用了函数 fun
,并将 s
数组作为参数传递给 fun
函数。
2、数组 a 的定义为: int a[3][4]
; 下面哪个不能表示a[1][1]
( )
A: *(&a[0][0]+5)
B: *(*(a+1)+1)
C: *(&a[1]+1)
D: *(a[1]+1)
答案: B
解析:
A: *(&a[0][0]+5)
:&a[0][0]
是指向 a[0][0]
的指针,加上 5 相当于跳过了 5 个 int
大小的内存单元,即a[0][5]
B: *(*(a+1)+1)
:a+1
是指向 a[1]
的指针,*(a+1)
即为 a[1]
,然后再加上 1,即 *(a[1]+1)
,表示取 a[1]
数组中的第二个元素,即 a[1][1]
C: *(&a[1]+1)
:a[1]
是一个指向 a[1]
的指针,加上 1 后相当于跳过了整个 a[1]
数组的大小,不再指向 a[1][1]
D: *(a[1]+1)
:a[1]+1
是指向 a[1][1]
的指针,再使用 *
解引用操作符即可获取 a[1][1]
的值
3、void (*s[5])(int)
表示意思为( )
A: 函数指针 B: 函数指针数组 C: 数组指针函数 D: 语法错误
答案: B
解析:
s[5]
指的是一个大小为 5 的数组。
(*s[5])
表示数组元素的类型,即函数指针。
(int)
表示函数指针所指向的函数的参数类型为 int。
4、在64位操作系统上,下面程序返回结果是( )
int main()
{
int *k[10][30];
printf("%d\n", sizeof(k));
return 0;
}
A: 4 B: 8 C: 1200 D: 2400
答案: D
解析:
每个元素占用的空间大小是 30 * sizeof(int *) = 30 * 8 = 240
个字节。
k 数组总共占用的空间大小是 10 * 240 = 2400
个字节
5、假设函数原型和变量说明如下,则调用合法的是( )
void f(int **p);
int a[4]={1,2,3,4};
int b[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int *q[3]={b[0],b[1],b[2]};
A: f(a)
; B: f(b)
; C: f(q)
; D: f(&a)
答案: A
编程
NC31 第一个只出现一次的字符
NC31 第一个只出现一次的字符
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return int整型
*/
int FirstNotRepeatingChar(char* str ) {
int len=strlen(str);
int cnt[10000];
int k=0;
for(int i=0;i<len;i++)
{
k=0;
for(int j=0;j<len;j++)
{
if(str[i]==str[j])
k++;
cnt[i]=k;
}
}
for(int i=0;i<len;i++)
{
if(cnt[i]==1)
return i;
}
return -1;
}
面试题 01.01. 判定字符是否唯一
面试题 01.01. 判定字符是否唯一
bool isUnique(char* astr){
int len=strlen(astr);
for(int i=0;i<len;i++)
{
for(int j=i+1;j<len;j++)
{
if(astr[i]==astr[j])
return false;
j++;
}
}
return true;
}