一、判断题(对的写 T,错的写 F并说明原因,每小题 4分,共 20分)
1、有数组定义 int a[2][2]={{1},{2,3}};则 a[0][1]的值为 0。T
2、int (*ptr) [],则 ptr是一维数组的名字。F
3、指针在任何情况下都可进行>, <, >=, <=, = =运算。F
4、switch(c)语句中 c可以是 int, long,char, float, unsigned int类型。F
5、#define print(x) printf("the no,"#x",is")T
二、填空题(共 30分)
1、在 windows下,写出运行结果,每空 2分,共 10分。
char str[ ]= "Hello";
char *p=str;
int n=10;
sizeof(str)=()
sizeof(p)=( )
sizeof(n)=()
void func(char str[100]) {}
sizeof(str)=( )
【答案】6;4;4;4;
2、void setmemory(char **p, int num)
{
*p=(char *) malloc(num);
}
void test(void)
{
char *str=NULL;
getmemory(&str,100);
strcpy(str,"hello");
printf(str);
} 运行 test函数有什么结果?
【答案】 //hello
3、设 int arr[]={6,7,8,9,10};
int *ptr=arr;
(ptr++)+=123;
printf("%d,%d",*ptr,*(++ptr));
【答案】/*8,8*/
二、编程题(第一小题 20,第二小题 30分)
1、不使用库函数,编写函数 int strcmp(char *source,char *dest)相等返回 0,不等返回-1;
/*
int strcmp(char *source, char *dest){
if(source==NULL||dest==NULL)
return-1;
while(*source++==*dest++)
if(*source!=’\0’&&*dest!=’\0’) return 0;
return-1;
}
2、写一函数 int fun(char *p)判断一字符串是否为回文,是返回 1,不是返回 0,出错返回-1
// EX_EXAM.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
using namespace std;
int fun(char *p)
{
if (p==NULL)
return -1;
int n=strlen(p);
int i;
for (i=0;i<=n/2-1;i++)
{
if (p[i]!=p[n-1-i])
return 0;
}
return 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
cout<
(1)什么是预编译,何时需要预编译:
【答案】1、总是使用不经常改动的大型代码体。2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。
(2)char * constp;char const *p ;const char *p上述三个有什么区别?
【答案】 char * const p; //常量指针,p的值不可以修改 charconst * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和 char const *p
(3)char str1[] ="abc";
char str2[] ="abc";
const charstr3[] = "abc";
const charstr4[] = "abc";
const char *str5= "abc";
const char*str6 = "abc";
char *str7 ="abc";
char *str8 ="abc";
cout < <( str1 == str2 ) < < endl;
cout < <( str3 == str4 ) < < endl;
cout < <( str5 == str6 ) < < endl;
cout < <( str7 == str8 ) < < endl;
结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。
(4)以下代码中的两个sizeof用法有问题吗?
[C 易] void UpperCase( char str[] ) //将 str 中的小写字母转换成大写字母 { for( size_t i=0; i (Y)?(Y):(X)) //结尾没有‘;’
10。嵌入式系统中经常要用到无限循环,你怎么用 C编写死循环。答案: while(1){}或者 for(;;)