新聞中心

C語言試題大全三

作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
1.(1)讀文件file1.txt的內(nèi)容(例如):
12
34
56
輸出到file2.txt:
56
34
12
(逆序)

答案:
注意可增長數(shù)組的應(yīng)用.
#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"是一個常量字符串。位于靜態(tài)存儲區(qū),它在程序生命期內(nèi)恒定不變。如果編譯器優(yōu)化的話,會有可能a和b同時指向同一個hello的。則地址相同。如果編譯器沒有優(yōu)化,那么就是兩個不同的地址,則不同

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]=