c语言期末考试

一.考试注意
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语,把初见撕成离别,墨未贱,复变考试又要来啦。我狼毫挥尽边缘,祈求数学爱我一次。哈哈,改编自画风。

发布了114 篇原创文章 · 获赞 22 · 访问量 6995

猜你喜欢

转载自blog.csdn.net/qq_43235540/article/details/91882485