C语言试题3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.给定一个整型变量a,写两段代码,第一个设置a的3bit为1,第二个设置a的3bit为
0. 以上两种操作,均保持其他bit位不变。
第三位置1: int a |= (1<<3);
第三位置0: int a &= ~(1<<3);
2.嵌入式系统中经常需要程序员去访问特定内存位置的值。在某工程中,要求设置一绝对
地址为0x6759a的整型变量的值为0xaa66,编译器是纯粹的ANSI编译器,写代码完成这一任务。
int *p = (int *)0x6759a;
*p = 0xaa66;
3.下面代码输出什么
Void foo(void)
{
Unsigned int a = 6;
Int b = -20;
If (a+b > 6)
{
Printf(“> 6\n”);
}
Else
{
Printf(“< 6\n”);
}
}
>6
4.下面的输出是什么
Char *ptr = NULL;
Ptr = (char *)malloc(0);
If (ptr == NULL)
{
Printf(“ptr is null”);
}
Else
{
Printf(“ptr is not null”);
}
ptr is not null 开辟空间地址
5.下面的输出是什么
main()
{
char *ptr = ” feixun Systems”;
*ptr++; printf(“%s\n”,ptr);
ptr++;
printf(“%s\n”,ptr);
}
eixun Systems
ixun Systems
6.#define DOUBLE(x) x+x,i = 5*DOUBLE(10);i是多少?正确的声明是什么?输出i值为60 原因: 计算过程为5 * 10 + 10;
正确声明: #define DOUBLE(x) (x+x)
7.设有以下说明和定义:
typedef struct
{
Int i;
char k[5];
char c;
} DATE;
struct data
{
int cat;
DATE cow;
Unsigned short dog;
} ;
DATE max;
则语句printf( "%d", sizeof(struct data)+ sizeof(max));的执行结果是
Sizeof(struct data) 20
Sizeof(max) 12
输出为32
8.请找出下面代码中的所以错误
说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”
#include"string.h"
main()
{
char*src="hello,world";
char* dest=NULL;
int len=strlen(src);
dest=(char*)malloc(len);
char* d=dest;
char* s=src[len];
while(len--!=0)
d++=s--;
printf("%s",dest);
return 0;
}
9.写出输出结果
main()
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
}
2, 5
10.下面代码有什么问题
int main()
{
char a;
char *str=&a;
strcpy(str,"hello");
printf(str);
return 0;
}
11.#include
#include
void getmemory(char *p)
p=(char *) malloc(100);
strcpy(p,"hello world");
}
int main( )
{
char *str=NULL;
getmemory(str);
printf("%s/n",str);
free(str);
return 0;
}
有什么问题
调用函数执行完后指针的地址即被释放掉不会返回主函数可改为
Char *getmemory(char *p)
{
p=(char *) malloc(100);
strcpy(p,"hello world");
return p;
}
12.#include "stdio.h"
#include "string.h"
void main()
{
char aa[10];
char bb[10] = “Feixun”;
printf("%d, %d, %d, %d",strlen(aa), sizeof(aa), strlen(bb), sizeof(bb));
}
输出是多少?
1, 10, 6, 10
13.char *f();
char *f1();
int main()
{
printf(“%s\n”, f());
printf(“%s\n”, f1());
return 0;