首先祝朋友考研成功,勇往直前,我是不考研的,所以完全以提高能力,使用为主,不在意细节。小伙伴让我帮忙看了一下试卷,故截取了几道题目。
c我是真的应了那句话,从入门到放弃,没有字符串,没有API,没有好类库。。。
1.0 下列语句可以正确进行字符串赋值 ( D )
A char *s = "good"; *s = "good";B char s1[10]; s1 = "good"; C char s3[10]; *s3 = "good";D char *s = "good";
c语言没有字符串类型,只能通过数组,或者指针实现字符串。数组名是字符串的首地址,字符串复制二种形式。
char *ch="sddf"; //指针。
char ch[]="dfffg"; //数组的初始化。
2.0 下列函数功能是( )
int f(char *a, char *b)
{
while (*a++ == *b++)
{
}
return 0;
}
编译器跑一下,其实根据返回值int可以推测一下作用的
#includeint f(char *, char *b); int main() { char *p1="abc", *p2 = "def"; int num1=f(p1, p2); int num2 = f(p2, p1); printf("%sn", p2); printf("num1=%dn", num1); printf("num2=%dn", num2); return 0; } int f(char *a, char *b) { while (*a++ == *b++) { } return 0; }
def num1=0 num2=0 请按任意键继续. . .
所以这东西,好像什么都没有干
3.0定义 char *aa="123456"; 则执行语句 printf("%c",*aa++); 后,正确的输出是:
printf("%c",*aa++); *的优先级高于++,所以就是数组aa的首元素,(数组名是首元素地址。)
#includeint main() { char *aa="123456"; printf("%cn",*aa++); return 0; }
让编译器跑一下,就知道了,很不喜欢这种题目,考优先级,和printf函数知识点。
D:untitled2cmake-build-debuguntitled2.exe 1 Process finished with exit code 0
4.0有二个磁盘文件A和B,各存放一行字母,要求使用c语言工具把这二个文件中的信息合并(按照字母顺序排列),输出到一个新文件C中。
思路是读取二个文件的字符串,把它们放入字符数组中,在排序,在写入文件
题目思路不难,但是细节太多,我是c从入门到放弃,对c中好多函数不熟悉,对c的文件操作也不怎么熟悉,一边查询资料,一边写。其中主要FILE 的指针,会移动的,在进行相关操作时候,一定要用 rewind()函数,使文件的位置指针回到开头,我在这里花了不少时间,隐形的不过,只要一步一步测试,才发现问题出在这里。
#include#include #include int longFife(FILE *fp); void sort(char ch[] ,int n); void arry(FILE *fp1,FILE *fp2,char *ch); void display(FILE *fp); void pr(char *ch ,int n); void sort(char *ch ,int n); int main() { FILE *fp,*fp1,*fp2; int len; char *p; if((fp1=fopen("d:\a.txt","r+"))==NULL) { printf("open file a error"); exit(0); } if((fp2=fopen("d:\b.txt","r+"))==NULL) { printf("open file b error"); exit(0); } len=longFife(fp1)+longFife(fp2); printf("file1:"); rewind(fp1); display(fp1); printf("n"); printf("file2:"); rewind(fp2); display(fp2); printf("n"); printf("the arry length=%dn",len); p=(char *)malloc(sizeof(char)*(len+1)); if(p!=NULL) printf("malloc arry is succeedn"); arry(fp1,fp2,p); printf("n"); printf("before sort array:p=%s",p); printf("n"); if((fp=fopen("d:\d.txt","w+"))==NULL) { printf("open file c error"); exit(0); } sort(p,len); printf("after sort arry:p=%s",p); printf("n"); if(fputs(p,fp)!=EOF) printf("write file is succeed"); printf("read this file:"); rewind(fp); display(fp); free(p); fclose(fp1); fclose(fp2); fflush(fp); fclose(fp); free(p); return 0; } void arry(FILE *fp1,FILE *fp2,char *ch) { rewind(fp1); rewind(fp2); int n1=longFife(fp1); int n2=longFife(fp2)+n1; int i,j; rewind(fp1); for(i=0; i


