回顾大一·C语言编程11.4(3)(4)+12.1(1)+12.1(2)①②+实验12.1(3)+12.2+12.3

来源:互联网 发布:达尔朗 知乎 编辑:程序博客网 时间:2024/06/09 17:23

在主函数中由键盘输入10个按升序排列的整数存放在一维数组a中,通过调用以下几个自定义函数分别输出数组a、将从键盘输入的一个整数x插入到数组a使其依然有序、输出数组a。

要求:定义以下几个函数(注:函数中形参指针p用来接收实参数组名a),按上述要求依次调用它们以实现所要求的功能。


#include <stdio.h>main( ){   void myout(int *p,int n);int myinsert(int *p,int n,int x); int a[11],i,n=10,x;     printf("请输入10个按升序排列的整数:");    for(i=0;i<n;i++)        scanf("%d",&a[i]);    printf("数组a中的元素为:\n");       myout(a,n);              printf("请输入一个待插入的整数x=");    scanf("%d",&x);    n=myinsert(a,n,x);       printf("插入x后数组a中的元素为:\n");       myout(a,n);}void myout(int *p,int n){while(n>0)          {   printf("%4d",*p);        p++;        n--;    }    printf("\n");}int myinsert(int *p,int n,int x){int i=0,j=0;    while(x>p[j]&& j<n)        j++;    for(i=n;i>j;i--)        p[i]=p[i-1];    p[j]=x;    n++;     return n;}

编写一个程序实现如下功能:输入一个字符串,内有数字和非数字字符,如:a123x456 17960?302tab5876将其中连续的数字作为一个整数,依次存放到一数组a中。例如123放在a[0]中,456放在a[1]中……统计共有多少个整数,并输出这些数。


#include<stdio.h>#include<string.h>main(){int a[100],*q=a,i,num=0;char b[100],*p;printf("请输入一个字符串:");gets(b);for(p=b;*p!='\0';p++)if(*p>='0'&&*p<='9'){*q=*p-'0';p++;while(*p>='0'&&*p<='9')*q=(*q)*10+(*(p++))-'0';num++;q++;}for(i=0,q=a;i<num;i++,q++)printf("%5d\n",*q);}

分析以下各个程序的执行结果,并与运行结果进行比较,理解结构体类型数组的使用。


struct myweek{char name[12];int day;   };main(){struct  myweek        week[7]={"Monday",1,"Tuesday",2,"Wednesday",3,"Thursday",4,"Firday",5,"Sataday",6,"Sunday",7};printf("%c\n",week[2].name[1]);}

比较以下两段程序,想想为什么结果不同?


struct stu{  char num[5];    float score[3];    };main(){ struct stu a[3]={{"01",60,70,80},{"02",70,75,80},{"03",90,95,92}},*p=a;int i; float sum=0;for (i=0;i<3;i++)     sum=sum+p->score[i];printf("%6.2f\n",sum);}

 struct stu{  char num[5];    float score[3];    };main(){ struct stu a[3]={{"01",60,70,80},{"02",70,75,80},{"03",90,95,92}};int i; float sum=0;for (i=0;i<3;i++) sum=sum+a[i].score[i];  printf("%6.2f\n",sum);   }

#include <stdio.h>struct stu {int num;char name[10];int age;};void fun(struct stu *p){ printf("%s\n",(*p).name); }main(){struct stu students[3]={{9801,"Zhang",20},{9802,"Wang",19},{9803,"Zhao",18}};fun(students+2);}

学生姓名(name)和年龄(age)存于结构体数组person中,函数fun的功能是:找出年龄最小的那名学生并输出该学生的姓名和成绩


#include<stdio.h>struct stud  {char name[20];int age;};struct stud fun(struct stud person[],int n)  //1{  int min,i;  //2   min=0;   //3   for(i=0;i<n;i++)      //4   if(person[i].age <person[min].age )  min=i;   //5return (person[min] );   //6}main()  { struct stud a[]={{"Zhao",21},{"Qian",20},{"Sun",19},{"LI",22}};   //7  int n=4;   //8  struct  stud minpers;  //9  minpers=fun(a,n);  //10  printf("%s 是年龄小者,年龄是:%d\n",minpers.name,minpers.age);  //11}

以下程序的功能是:对已经存在的几本图书,任意输入一个书名,调用函数search()进行查询,如果查到了,显示出该书的单价,否则显示“No found!”。


#include <stdio.h>#include <string.h>struct book{ char name[10];  int price;} bk[5]={{"aaa",10},{"bbb",20},{"ccc",30},{"ddd",40},{"eee",50}};main(){  void search(struct book *p, char *c);   char shu[10];                       /*待查图书名*/   printf("input the search name:\n");   gets(shu);   search(bk,shu);}void search(struct book *p, char *c){  int i;   for(i=0;i<5;i++,p++)      if(strcmp(p->name,c)==0)      {  printf ("price is %d\n",p->price);         break;       }  if(i>=5)   printf("No found !\n");}