C题库2

更新时间:2023-10-16 23:32:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

96. struct name1{ char str; short x; int num; }

struct name2{ char str;0

1 2 3

int num; 4 5 6 7 short x; 8 9 10 11 }

sizeof(struct name1)=? sizeof(struct name2)=? 8、12

97. 读文件file1.txt的内容(例如):12 34 56

输出到file2.txt: 56 34 12 (逆序)

2)输出和为一个给定整数的所有组合例如n=5

5=1+4;5=2+3(相加的数不能重复) 则输出 1,4;2,3。

1

注意可增长数组的应用. #include #include int main(void) {

int MAX = 10;

int *a = (int *)malloc(MAX * sizeof(int)); int *b;

FILE *fp1; FILE *fp2;

fp1 = fopen(\标准库提供 (Open 操作系统提供) if(fp1 == NULL) {printf(\ exit(-1);

}

fp2 = fopen(\

if(fp2 == NULL) {printf(\ exit(-1);

}

int i = 0; int j = 0;

while(fscanf(fp1,\{

i++; j++;

if(i >= MAX) {

MAX = 2 * MAX;

2

b = (int*)realloc(a,MAX * sizeof(int)); if(b == NULL) {

printf(\exit(-1);

} a = b; } }

for(;--j >= 0;)

fprintf(fp2,\

fclose(fp1); fclose(fp2); return 0; }

98. 一个递归反向输出字符串的例子,经典例程. void inverse(char *p) {

if( *p = = '\\0' )

return;

inverse( p+1 ); printf( \}

int main(int argc, char *argv[]) {

inverse(\ return 0; }

99. 用递归算法判断数组a[N]是否为一个递增数组。

3

递归的方法,记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false结束:

bool fun( int a[], int n ) {

if( n= =1 ) return true; if( n == 2 )

return a[n-1] >= a[n-2];

return ( a[n-1] >= a[n-2] ) && fun( a,n-1); }

a[5] = {0,1,2,3,4} 1.fun(a,5) 4.fun(a,4) 3.fun(a,3) 4.fun(a,2)

100. 什么是可重入性?

可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反,不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。

可重入函数:

不为连续的调用持有静态数据。

不返回指向静态数据的指针;所有数据都由函数的调用者提供。 使用本地数据,或者通过制作全局数据的本地拷贝来保护全局数据。 如果必须访问全局变量,记住利用互斥信号量来保护全局变量。 绝不调用任何不可重入函数。

101. 给出下列程序的结果: char str1[] = \char str2[] = \

4

const char str3[] = \const char str4[] = \const char *str5 = \const char *str6 = \char *str7 = \char *str8 = \

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是指针,它们指向相同的常量区域。

102. 以下代码中的两个sizeof用法有问题吗?

void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母 {

for( size_t i=0; i

char str[] = \

cout < < \字符长度为: \UpperCase( str ); cout < < str < < endl;

答案:函数外的str是一个静态定义的数组,因此其大小为6,因为还有'\\0',

函数内的sizeof(str)返回4。

103. 一个32位的机器,该机器的指针是多少位答案:

指针是多少位只要看地址总线的位数就行了。80386以后的机子和ARM都是32的数据总线。所以指针的位数就是4个字节了。

104. 请问以下代码有什么问题:

5

本文来源:https://www.bwwdw.com/article/yq2f.html

Top