微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > C语言试题大全三

C语言试题大全三

时间:11-24 来源:互联网 点击:
1.(1)读文件file1.txt的内容(例如):

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

答案:
注意可增长数组的应用.
#include
#include

int main(void)
{
int MAX = 10;
int *a = (int *)malloc(MAX * sizeof(int));
int *b;

FILE *fp1;
FILE *fp2;

fp1 = fopen("a.txt","r");
if(fp1 == NULL)
{

printf("error1");
exit(-1);
}

fp2 = fopen("b.txt","w");
if(fp2 == NULL)
{

printf("error2");
exit(-1);
}

int i = 0;
int j = 0;

while(fscanf(fp1,"%d",&a[i]) != EOF)
{
i++;
j++;
if(i >= MAX)
{
MAX = 2 * MAX;
b = (int*)realloc(a,MAX * sizeof(int));
if(b == NULL)
{
printf("error3");
exit(-1);
}
a = b;
}
}

for(;--j >= 0;)
fprintf(fp2,"%d",a[j]);

fclose(fp1);
fclose(fp2);

free(a);

return 0;
}

2. 分析下面的代码:
char *a = "hello";
char *b = "hello";
if(a= =b)
printf("YES");
else
printf("NO");
"hello"是一个常量字符串。位于静态存储区,它在程序生命期内恒定不变。如果编译器优化的话,会有可能a和b同时指向同一个hello的。则地址相同。如果编译器没有优化,那么就是两个不同的地址,则不同

3. 两个字符串,s,t;把t字符串插入到s字符串的第i个位置前,s字符串有足够的空间存放t字符串

答案:
void insert(char *s, const char *t, int i)
{

int j,len;

int k=strlen(s)-1;

if(i<0||i>strlen(s))

return;

len=strlen(s)+strlen(t);

for(j=len-1;k>=i;k--,j--)

{

s[j]=s[k];

}

for(k=i;k

{

s[k]=t[k-i];

}

s[len]=;

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top