今天做题遇到了几个点,晚上系统地说一下。

  1. 与运算和或运算可能考的比较灵活,即可能在&&两边放式子,判断的式子会进行运算
  2. 忽略大小写比较字符串大小,大写字母和小写字母之间ASCII码差32,若第一个字符不一样,比较其字符ASCII即可,若一样,则一直找到第一个不一样的进行比较。
  3. 遇到了一道阴间改错,即输出字符串中连续出现两次以上的字符。不管错没错,其程序逻辑都和我的编程逻辑完全相悖。
  4. 百元买百鸡问题,for嵌套for,z由前两个for循环的变量确定,最后别忘了考虑小鸡的取整
  5. 最大公约数求法,若a>b,x=a%b,a=b,b=x,此时a>b,循环因子是x,即整除后停止循环
  6. 文件操作,fopen,fgetc(fp)一直循环输出,fgetc每次运行指针就向下指一位
  7. 打印螺旋矩阵,四个for转圈圈,需要方阵大小,横纵坐标,奇数方阵中间的数坐标,自己推演

①逻辑运算

输出2 1

printf("%d",1&2);//由于需要判断两次,就是2了
printf("%d",1||2);//或判断只要前面的对就可以

②比较字符串大小

strcmp(a,b);
//利用for判断什么时候不重复,就比较ASCII的值,不要忽略大小写之间的差,即大-32看看和小的是否一样

③输出连续出现两次以上的字符

for(i=0;i<strlen(input)-1;i++){//外循环
	for(j=i+1;j<strlen(input);j++){//判断外循环连续的是否重复
		if(input[i]==input[j]){//如上判断
			for(k=0;k<strlen(output);k++){//k比输出数组大小小
				if(input[i]==output[k]){//要是现在判断的就是上一个判断的直接break
					break;
				}
			}//for
			if(k==strlen(output)){//意思就是全部循环完毕,上面的for没被break
				p++=input(output);//指针下移
				*p=0;
			}//if
			break
		}
	}
}

④百元买鸡经典题目

两个for一个限制条件,最后别忘了小鸡的整除情况

##⑤ 最大公约数求法

1、先进行排序,大在前小在后
2、大的整除小的,余数赋值给temp,小的赋值给大的,temp赋值给小的,循环直到余数为0

⑥文件操作

#include<stdlib.h>
#include<stdio.h>
int main(){
	FILE* fp;
int num=0;
char c;
if((fp=fopen("address","typeofopen"))==NULL){//在打开文件的同时进行拍错
	printf("open error!!");
	exit(0);
}
c=getchar();//给输出字符第一次初始化
while(c!='#'){//利用while进行循环判断,设置结束标记
	fputc(c,fp);//对文件输出字符 
	putchar(c); //对屏幕输出字符
	c=getchar();//再进行初始化
}
fclose(fp);
putchar(10);
return 0; 
} 

在编写过程中想到了fgetc和getc,两者实现的功能是差不多的,而差别在于一个是函数一个是宏,宏是由函数实现,getc是宏,不同编译器所面对的情况也不同。VC++中两者就有一样的功能。
fopen
fgetc(FILE* fp)
fgets(char* buffer,int size,FILE* fp)其中buff为起始地址
fprintf(FILE*,char,args)//格式输出
fscanf(FILE*,char,args )//格式化输入
fread(char* pt,unsigned size,unsigned n,FILE*)//返回所读数据个数,存到pt指向内存
fwrite(char* ptr,unsigned size,unsigned n,FILE*)//将ptr指向写到fp文件的个数
fputs(char str,FILE)
fclose

⑦螺旋矩阵

方阵大小n,行坐标 i ,列坐标 j ,找规律,奇数方阵中间的坐标一定是(n/2,n/2)。算法设计就要看方阵的走向,从头开始n-1算一步,我们发现每个小螺旋方阵也是又规律的。根据此找规律。

	for(i=0;i<m;i++){
		for(j=i;j<n-i;j++){
			a[i][j]=k++;
		}
		for(j=i+1;j<n-i;j++){
			a[j][n-i-1]=k++;
		}
		for(j=n-i-2;j>=i;j--){
			a[n-i-1][j]=k++;
		}
		for(j=n-i-2;j>=i+1;j--){
			a[j][i]=k++;
		}
	}

对不起,高君,这几天考研分数线下来,差了几分。今年调剂真的太难了,电子信息那些一志愿擦线就能进的学校,调剂需要三百四以上,你可能真的要二战了。

更多推荐