中科创达-C开发1-答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、static关键词有什么用途(5分)
1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被
模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
注意,只有在定义了变量后才能使用。
如果变量定义在使用之后,要用extern 声明。
所以,一般全部变量都会在文件的最开始处定义。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用
2写一个宏MIN,这个宏输入两个参数返回较小的一个(10分)#define Min(a,b) ( ((a)>=(b))?(b):(a))
3下面程序的运行结果是:(10分)
void abc(char*str)
{
int a,b;
for(a=b=0;str[a]!='\0';a++)
if(str[a]!='c')
str[b++] = str[a];
str[b]='\0';
}
void main()
{
char str[]="abcdef";
abc(str);
printf("str[]=%s",str);
}
abdef
4有以下程序:(10分)
void swap1(int *a,int *b)
{
int *c=a;
a=b,b=c;
}
void swap2(int *a,int *b)
{
int c=*a;
*a=*b,*b=c;
}
int main()
{
int a=10,b=15;
swap1(&a,&b);
printf("%d,%d\n",a,b);
a=10,b=15;
swap2(&a,&b);
printf("%d,%d\n",a,b);
}
10,15
15,10
5以下程序的输出结果是:
#include <stdio.h> int main()
{
int x=05;char z = 'a';
printf("%d\n",(x&1)&&(z<'z'));
}
1
6请给出下列程序的输出
#include <stdio.h>
int main()
{
int a,b,c,d;
a = 10;
b = a++;
c = ++a;
d = 10 * a++;
printf("b,c,d:%d,%d,%d\n",b,c,d);
return 0;
}
10 12 120
7进程同步的机制有几种(15分)
信号量操作(P/V操作)
信号灯集
8用递归算法判断数组a[N]是否为递增(15分)
递归的方法,记录当前最大的,并且判断当前的是否比这个还大,大则继续,否
则返回false结束:
bool fun(int a[], int n)
{ if(n= =1)
return true;
if( n= =2 )
return a[n-1] >= a[n-2];
return fun( a,n-1) && ( a[n-1] >= a[n-2] );
}
9程序设计-找出一个数组中第二大的数
#include <stdio.h>
//初始化最大值为a[0],次大值为a[1],遍历一次,每次比较并更新最大值和次大值,最后就可以得到次大值。
int findsecondmaxvalue(int *a,int size)
{
int max = a[0]; //最大值
int second = a[1]; //次大值
for(int i = 0;i < size;i++)
{
if(a[i] > max) //更新最大值和次大值
{
second = max;
max = a[i];
}
else if(a[i] < max && a[i] > second) //更新次大值
{
second = a[i];
}
}
return second;
}
int main(void)
{
int a[] = {22,222,76,26,87,99};
printf("secondvale= %d\n",findsecondmaxvalue(a,sizeof(a)/sizeof(a[0]));
return 0;
}。