一.考试注意
1.变量要考虑要不要初始化。
2.输出的时候要注意变量是什么类型,float用f,double用lf,char用c,char[]用s。
3.注意变量使用范围。
二.很可能会考的大题
1.插入排序
void insertsort(int arr[],int len)
{
for(int i=1;i<len;i++)
{
int d,p=arr[i];
for( d=i-1;d>=0&&arr[d]>=p;d--)arr[d+1]=arr[d];
arr[d+1]=p;
}
for(int i=0;i<10;i++)printf("%d%s",arr[i],i==9?"\n":" ");
}
2.冒泡排序
void maopaosort(int arr[],int len)
{
for(int i=0;i<len-1;i++)
for(int d=1;d<len-i;d++)
if(arr[d]<arr[d-1])swap(&arr[d],&arr[d-1]);
for(int i=0;i<10;i++)printf("%d%s",arr[i],i==9?"\n":" ");
}*/
3.选择排序
void selectsort(int arr[],int len)
{
for(int i=0;i<len-1;i++)
{
int d,p=i;
for( d=i+1;d<len;d++)
if(arr[p]>arr[d])p=d;
swap(&arr[p],&arr[i]);
}
for(int i=0;i<10;i++)printf("%d%s",arr[i],i==9?"\n":" ");
}
4.杨辉三角
三.生疏的小点
1.switch case语句
int a=1;
switch(a){
case 1:printf("1\n");break;
case 2:printf("2\n");
default:printf("3\n");
}
char c;
switch(c){
case 'd':printf("ok\n");
case 'f':printf("oo\n");
default:printf("ddd\n");
}
5.快速排序
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int onesort(int arr[],int qi,int mo)
{
int ken=qi,val=arr[qi];
while(qi<mo)
{
while(qi<mo&&arr[--mo]>=val);
arr[ken]=arr[mo];ken=mo;
if(qi>=mo)break;
while(qi<mo&&arr[++qi]<val);
arr[ken]=arr[qi];ken=qi;
}
arr[ken]=val;
return ken;
}
void sort(int arr[],int qi,int mo)
{
if(qi>=mo)return;
int a=onesort(arr,qi,mo+1);
sort(arr,qi,a-1);
sort(arr,a+1,mo);
}
int main(void)
{
int n=10,arr[10];
srand(time(NULL));
for(int i=0;i<10;i++)
{
arr[i]=rand()%10;
printf("%d ",arr[i]);
}
puts("\n");
sort(arr,0,n-1);
for(int i=0;i<n;i++)printf("%d ",arr[i]);
}
a.switch只能对整数和字符进行判断
b.每个case相当于一个入口,如果没有break,就会执行到default结束。
2.向函数传递结构体
例如如下这题,在函数中对结构体进行输入。
#include<stdio.h>
/*定义一个学生结构包括如下字段,学生学号:整数;姓名:字符串(20个字符) ;
10门课的成绩:整数(百分制)。计算每门课的单科平均分,
输出该门课大于平均成绩同学的学号和姓名(一共要输出10组)
*/
struct student
{
int num,score[10];
char name[20];
};
void get(student *one,double ave[])
{
scanf("%d %s",&one->num,one->name);
for(int i=0;i<10;i++){
scanf("%d",&one->score[i]);
ave[i]+=(double)one->score[i];
}
}
int main(void)
{
student all[10];
int i,d,n=3;
double ave[10]={0};
for(i=0;i<n;i++)get(&all[i],ave);
for( i=0;i<=10;i++)
{
printf("ave=%f\n",ave[i]);
ave[i]/=n;
printf("第%d门课的平均成绩是%f\n",i+1,ave[i]);
for(d=0;d<=n;d++)
if(all[d].score[i]>ave[i])printf("%d %s\n",all[d].num,all[d].name);
}
return 0;
}
3.向函数传递一维数组
函数声明的时候可以写成fn(int *a)或者fn(int a[])或者fn(int a[200]),这时方括号里的值是多大都是无效的。
#include<stdio.h>
void fn(int a[100])//也可写成 fn(int a[]),如果在方括号有数字,也会自动被忽略为[].
{
printf("yes\n");
}
int main(void)
{
int all[20];
fn(&all[0]);、//或者写出fn(all);
return 0;
}
4.向函数传递二维数组
#include<stdio.h>
void fn(int a[][20])
{
printf("yes\n");
}
int main(void)
{
int all[20][20];
fn(all);
return 0;
}
你身后风吹一夜,明天就考c语,把初见撕成离别,墨未贱,复变考试又要来啦。我狼毫挥尽边缘,祈求数学爱我一次。哈哈,改编自画风。