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

在主函数中由键盘输入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;   //5
	return (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");
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值