高级应用实验报告

题目一:按要求将程序补充完整。有n个整数,使前面各数顺序向后移动m个位置,余下n-m个数变成最前面的数。写一个函数void moveNumber(int *pnum,int n,int m)实现以上功能。

程序代码:

#include 
#define MAXNUM 100
main()
{
  int  num[MAXNUM],*pnum,n,m,i;
  void moveNumber(int *pnum,int n,int m);
    printf("请输入数组长度n(n<%d)",MAXNUM);
    scanf("%d",&n);
    printf("请输入需移动数的个数m(m

  

高级应用实验报告_第1张图片

题目二:指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出。(提示可以编写一个交换函数swap(int *a,int *b)来实现)

程序代码:

#include 
int main()
{
char name[20]="DELHIk";
int length;
char*cptr=name;/*这里是将字符数组s的首地址赋给指针p,就是指针p指向字符数组*/
while(1)
{
if(*cptr !='\0')/*cptr指向字符数组的结束符‘\0’的地址,而s为字符数组的首地址*/
{
length++;
cptr++;
}
else
  break;
}
printf("字符串长度为:%d",length=cptr-name);/*二者相减可以得出两个地址之间的字符个数,就是被测字符数组的长度*/
return 0;

}
高级应用实验报告_第2张图片

题目三:输入n(不大于20)个单精度数存入一维数组,用指针变量处理数组元素的方式将其逆序存放后输出,n从键盘输入。

程序代码:

#include 
int main()
{
char name[20]="DELHIk";
int length;
char*cptr=name;/*这里是将字符数组s的首地址赋给指针p,就是指针p指向字符数组*/
while(1)
{
if(*cptr !='\0')/*cptr指向字符数组的结束符‘\0’的地址,而s为字符数组的首地址*/
{
length++;
cptr++;
}
else
  break;
}
printf("字符串长度为:%d",length=cptr-name);/*二者相减可以得出两个地址之间的字符个数,就是被测字符数组的长度*/
return 0;

}

调试错误:

错误一:[Error] cannot convert 'float*' to 'int*' for argument '1' to 'void oppsite(int*, int)'

更正错误:第一次定义函数声明时将数组名和另一变量(本来应该都是一个变量)搞混,在后面进行函数调用时发现牛不对马嘴,调用时写的是函数定义的另一变量,改正后写成数组名;在初函数定义时将定义类型写成了int 后面调用发现错误,因为在main内又定义数组名为float型,调用不了,将函数定义改成了float

错误二:[Error] declaration of 'int N' shadows a parameter

更正错误:这里忽略了主函数已经定义N,在oppsite函数中又重新定义一个一样的N变量,导致错误,换一个变量进行定义

错误三:[Error] ld returned 1 exit status

更正错误:在oppsite函数调用时将形参定义为int导致错误,更改为float

题目四:已知,char name[20]="DELHIk";int length;char*cptr=name;,编写程序,使用指针来确定字符串的长度。

程序代码:

#include 
int main()
{
char name[20]="DELHIk";
int length;
char*cptr=name;/*这里是将字符数组s的首地址赋给指针p,就是指针p指向字符数组*/
while(1)
{
if(*cptr !='\0')/*cptr指向字符数组的结束符‘\0’的地址,而s为字符数组的首地址*/
{
length++;
cptr++;
}
else
  break;
}
printf("字符串长度为:%d",length=cptr-name);/*二者相减可以得出两个地址之间的字符个数,就是被测字符数组的长度*/
return 0;

}

调试错误:无

调试结果:

题目五:编写一个程序,用12个月份的英文名称初始化一个字符指针数组,当键盘输入整数为1到12 时,显示相应的月份名,键入其他整数时显示错误信息。

程序代码:

#include 
#include 
char *getmonth(int n);
int main()
{
     char *month[12]={"January","February","march","April","may","June","July","August","September","October","November"," December"};
     int n ;
     printf("请输入1-12数字:");
     scanf("%d",&n);
     while(1)
     {
      if(n>12||n<1)
      {
      printf("输入错误,请检查!\n");
 }
 printf("%s\n",month[n-1]);
 return 0;

 }
}

调试错误:

错误一:[Error] lvalue required as decrement operand

更改错误:将month【month--】改成month【n--】

调试结果:

题目六:学生信息统计

程序代码:

#include 
#include 
#include 
#define N 10
#define M 3
#define H 10
//按照顺序为project1为高数 project2英语 project3 C语言
typedef struct student
{
    long num;//xuehao
    char name[10];
    int score[M];
    char sex[10];
    char age[H];
}inform;
void Input (inform stu[],int n,int m);//shuru
void totalc (inform stu[],int n,int m);//meimenkechen
void everystu (inform stu[],int n,int m);
void ranking (inform stu[],int n,int m);
void statistis (inform stu[],int n,int m);
void List (inform stu[],int n,int m);
int main()
{
    int n,c,m;
    char name[10];
    inform stu[N];
    printf("输入学生人数:");
    scanf("%d",&n);
    printf("输入考试科目:");
    scanf("%d",&m);
    printf("1.输入信息\n");
    printf("2.计算每门科目的总分和平均分\n");
    printf("3.每个学生的考试情况\n");
    printf("4.查看排名\n");
    printf("5.查看成绩占比\n");
    printf("6.全部输出\n");
    printf("0.Exit\n");
    printf("请输入序号:\n");
    printf("\n");
    for(;;)
    {
        scanf("%d",&c);
        switch(c)
        {
            case 1:                 //录入学生信息和各科成绩
            Input (stu,n,m);
            printf("请输入序号:\n");
            break;
            case 2:                //计算每门课程的总分和平均分
            totalc (stu,n,m);
            printf("请输入序号:\n");
            break;
            case 3:               //计算每个学生的总分和平均分
            everystu (stu,n,m);
            printf("请输入序号:\n");
            break;
            case 4:                //按每个学生的总分由高到低排出名次表
            ranking (stu,n,m);
            printf("请输入序号:\n");
            break;
            case 5:                //成绩分析  所占百分比
            statistis (stu,n,m);
            printf("请输入序号:\n");
            break;
            case 6:                  //全部输出
            List (stu,n,m);
            totalc (stu,n,m);
            printf("请输入序号:\n");
            break;
        case 0:
            exit(0);
        }
    }
    return 0;
}
void Input (inform stu[],int n,int m)    //1
{
    int i,j;
    for(i=0;isum[k])
                k=j;
        }
        if(i!=k)
        {
            t=stu[i],h=sum[i];
            stu[i]=stu[k],sum[i]=sum[k];
            stu[k]=t,sum[k]=h;
        }
    }
    for(i=0;i=90)
                a++;
            else if(stu[i].score[j]>=80)
                b++;
            else if(stu[i].score[j]>=70)
                c++;
            else if(stu[i].score[j]>=60)
                d++;
            else
                e++;
        }
        A=(double)a/n*100;
        B=(double)b/n*100;
        C=(double)c/n*100;
        D=(double)d/n*100;
        E=(double)e/n*100;
        printf("project %d\n",j+1);
        printf("优秀人数%d,百分比:%f%%\n",a,A);
        printf("良好人数%d,百分比:%f%%\n",b,B);
        printf("中等人数%d,百分比:%f%%\n",c,C);
        printf("及格人数%d,百分比:%f%%\n",d,D);
        printf("不及格人数%d,百分比:%f%%\n",e,E);
    }
}
void List (inform stu[],int n,int m)         
{
    int i,j,sum[N];
    double ave[N];
    for(i=0;i

  

调试错误:

错误一:年龄输出为随机数

更改错误:实在是不知道怎么改了,把数字输入改为了字符输入避免了输出的时候随机值的生成

错误二:[Error] expected primary-expression before '[' token

更改错误:修改结构体内容,定义更为详细,防止结构体内的信息被当成别名

错误三:[Error] expected ',' or '...' before numeric constant

更改错误:定义了两个相同变量,更改其中一个变量名

调试结果:

高级应用实验报告_第3张图片
高级应用实验报告_第4张图片

你可能感兴趣的:(c语言作业,c语言)