1. 程序设计一般什么情况下会考虑使用循环,什么情况使用数组,循环和数组本质上有
循环是一种程序结构,用来处理反复的事情,最简单的例子,例如需要显示100个符号、或者某段文字打印100次,就可以用一个FOR循环来解决,比把成代码重复100次要优雅一点。最简单循环稍微改动就可以方便的处理复杂得多的事情,例如循环里面使用次数的变量,可以实现打印九九表这样的代码。看见了吧,循环跟数组往往没有关系,上面的例子就没有数组什么事情。
数组是一批类型相同的变量的集合,数组较多的时候,为了程序更加优雅,一般都使用循环程序来处理(赋值、计算等)。
2. C语言数组的排序查找插入删除本题目的任务是编写完成整数数组和结构体数组的排序、查找、插入、删除操作
一、设计要求1、数据定义 整型数组部分,设计一个10个元素的整型数组。键盘输入数组中的10个元素,并输出数组的原数据(原数组的数据和排列顺序)。以便与处理后的结果相比较。 结构体数组部分,设计一个结构体 struct student{ char name[20]; int age; double score; };定义一个该结构体的数组:struct student stu[10];键盘输入数组中的10个元素,并输出数组的原数据(原数组的数据和排列顺序)。以便与处理后的结果相比较。要求输出为表格形式。2、设计一个两级菜单,完成上述程序结构的控制与调用3、编写排序函数(分别编写函数)函数功能是对整型数组或结构体数组中的数据进行排序处理,并输出操作结果。整型数组,要求使用冒泡排序法进行处理,从大到小排序,输入一组整数并输出,对这组整数进行排序,输出排序后的结果。结构体数组,要求使用冒泡排序法进行处理,按照成绩或年龄从大到小排序,输入一组数据并以表格输出,对这组数据进行排序处理,以表格形式输出排序后的结果。4、编写查询函数(分别编写函数)函数功能是对整型数组或结构体数组中的数据进行查询处理,并输出操作结果。整型数组,要求使用折半法进行处理,从键盘输入一组整数并输出,先调用排序函数将数据从大到小排序,再输入一个要查找的整数,调用查找函数进行查找操作,输出查找的结果。没找到输出相应的信息。结构体数组,要求使用折半法进行处理,从键盘输入一组数据并以表格形式输出,先调用排序函数将数据按照年龄值从大到小排序,再输入一个要查找的年龄数,调用查找函数进行查找操作,输出查找的结果以表格形式输出。没找到输出相应的信息。折半查找法:数据已按一定规律排列好,先检索序列1/2处的数据,判断其是否为所需数据。如果不是所需数据,则判断要查找的数据位于中间数的哪一边,下一次就在这个新的范围内查找……,每次将查找范围缩小一半,直至找到这个数或得出找不到的结论为止。定义数组并进行初始化排序处理输入要查找的元素top=0,bot=n-1bot=mid-1top=mid+1输出信息x<a[mid]x>a[mid]x==a[mid]mid=(top+bot)/2while(top<=bot) 5、编写插入函数函数功能是在已经排好序的数组中插入一个数据或一条记录(结构体),使插入后的数据仍然是有序的。整型数据,要求输入一组整数并输出;调用排序函数进行排序,输出排序结果;输入一个要插入的整数,实施插入操作,保证数据插入到正确的位置上,输出插入后的数据序列。结构体数据,要求输入一组记录并以表格形式输出;调用排序函数按照年龄进行排序,以表格形式输出排序结果;输入要插入的一条记录,实施插入操作,保证数据插入到正确的位置上,以表格形式输出插入后的数据序列。6、编写删除函数函数功能是给定一个数据或一条记录(结构体),在数组先进行查找,如果找到将该数据删除,并输出结果;如果找不到,输出相应的信息。整型数据,要求输入一组整数并输出;输入一个要删除的整数,进行查找,找到则实施删除操作,否则输出没找到的信息。结构体数据,要求输入一组记录并以表格形式输出;输入要删除的一条记录,进行查找,按照姓名或年龄或成绩查找均可,找到则 实施删除操作,否则输出没找到的信息。
3. 帮忙编个结构体数组程序啊
/*编写一个程序,定义一个学生结构体数组存储学生信息(姓名、学号、家庭住址),
分别定义一个添加和删除的函数,实现学生数组的添加、按照学号进行删除功能。*/
#include<stdio.h>
#include<string.h>
struct student
{
char name[20],address[20];
char xuehao[20];
};
main()
{
struct student stu[20];
int i=0,j,m;
char ch[10];
printf("\n请添加学生信息\n");
do{
printf("\n请输入学生姓名\n");
gets(stu[i].name);
printf("\n请输入学生学号\n");
gets(stu[i].xuehao);
printf("\n请输入学生家庭住址\n");
gets(stu[i].address);
i++;
printf("是否继续添加?y or n\n");
gets(ch);
m=strcmp(ch,"y");
}while(m==0);
printf("是否删除学生信息\n");
gets(ch);
m=strcmp(ch,"y");
while(m==0||i==0)
{
printf("请输入要删的学生的编号,注意是从零开始的\n");
scanf("%d",&m);
for(j=m;j<i;j++)
{
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j].xuehao,stu[j+1].xuehao);
strcpy(stu[j].address,stu[j+1].address);
}
i--;
if(i!=0)
{printf("是否继续删除学生信息\n");
scanf("%s",ch);
m=strcmp(ch,"y");
}
}
if(i==0)
printf("没有学生信息\n");
for(j=0;j<i;j++)
{
printf("%s %s %s\n",stu[j].name,stu[j].xuehao,stu[j].address);
}
return 0;
}
你试试你看,如果可以,要给分呀。。。呵呵
4. C语言中的数组什么意思
所谓数组,是有序的元素序列。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。
比如油烟机的风扇转速会和工作的模式之间有一定的关系,那么我们就可以把它的工作模式和一维数组的下标对应起来,我们将具体的转速放在数组中,这样的话就非常方便我们在日后查询。
再比如说家中的冷暖灯光控制这方面,色温灯里会有两个灯珠,分别对应的是冷光和暖光,选择不同的模式灯光的颜色就不同,我们就可以将这两种灯光的亮度pwm值事先放在二维数组中,以便调用调光。
在程序中合理地使用数组,会使程序的结构比较整齐,而且可以把较为复杂的运算,转化成简单的数组来表示。
(4)什么程序结构处理数组扩展阅读:
一、使用规则:
1、可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。
2、只能给元素逐个赋值,不能给数组整体赋值。
(请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。)
3、若不给可初始化的数组赋初值,则全部元素均为0值。
4、假如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。
动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
二、表示方法:
数组元素是组成数组的基本单元。
数组元素也是一种变量, 其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为:数组名[下标] 其中的下标只能为整型常量或整型表达式。
如为小数时,C编译将自动取整。例如,a[5],a[i+j],a[i++]都是合法的数组元素。数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。在C语言中只能逐个地使用下标变量, 而不能一次引用整个数组。
5. c++结构数组程序设计
都已经写成这样了,连空格都不会自己加
#include "iostream.h"
struct car
{
char procer[20];
int year;
};
void main()
{
int num=0;
cout<<"请输入汽车的数量:";
cin>>num;
car *cp=new car[num];
for(int i=0;i<num;i++)
{
cout<<"请输入第"<<i+1<<"辆车的生产商:";
cin>>cp[i].procer;
cout<<"请输入第"<<i+1<<"辆车的生产年份:";
cin>>cp[i].year;
cout<<endl;
}
cout<<"输入完毕!"<<endl;
cout<<"以下是输入结果:"<<endl;
for(i=0;i<num;i++)
{
cout<<"第"<<i+1<<"辆车的生产商:"<<cp[i].procer<<endl;
cout<<"第"<<i+1<<"辆车的生产年份:"<<cp[i].year<<endl;
cout<<endl;
}
}
6. 程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构
不对,数组本身的存储结构是线性的,就是说它是连续存储的,但是数组中元素可以存储指针,就是指针型数组,它就可以利用数组处理非线性的数据。比如将一个链表每个结点的地址存入数组,那样访问数组,就是处理非线性的数据了
7. 定义一个结构体数组,编写程序实现以下功能:
#include<iostream>
using namespace std;
int A,B;
struct student
{
int num;
char name[20];
char cou[20];
double sum;
double ave;
double score[20];
}stu[100];
void nav(int M,int N);
void input(student stu[],int M,int N);
void work(student stu[],int M,int N);
void look(student stu[],int M,int N);
void del(student stu[],int M,int N);
void run(student stu[],int M,int N);
int main()
{
cout<<"请输入学生数和课程数:";
cin>>A>>B;
int M,N;
M=A,N=B;
input(stu,M,N);
work(stu,M,N);
run(stu,M,N);
sort(M,N);
system("pause");
return 0;
}
void input(student stu[],int M,int N)
{ int i;
cout<<"请输入"<<N<<"门课程名称:"<<endl;
for(i=0;i<N;i++)
cin>>stu[i].cou;
cout<<"-----请按照下列格式输入-----"<<endl;
cout<<"学号 姓名";
for(i=0;i<N;i++)
cout<<" "<<stu[i].cou;
cout<<endl;
for(i=0;i<M;i++)
{
cin>>stu[i].num>>stu[i].name;
for(int j=0;j<N;j++)
cin>>stu[i].score[j];
}
}
void work(student stu[],int M,int N)
{
for(int i=0;i<M;i++){
stu[i].sum=0;
stu[i].ave=0;
for(int j=0;j<N;j++)
{
stu[i].sum+=stu[i].score[j];
stu[i].ave=stu[i].sum/N;
}
}
}
void run(student stu[],int M,int N)
{
int i;
student t;
for( i=0;i<N-1;i++)
for(int j=0;j<N-1-i;j++)
if(stu[j].sum<stu[j+1].sum)
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
cout<<"学号 姓名 ";
for(i=0;i<N;i++)
cout<<" "<<stu[i].cou;
cout<<" 总分 平均分";
cout<<endl;
for(i=0;i<M;i++)
{
cout<<stu[i].num<<"\t"<<stu[i].name<<"\t";
for(int j=0;j<N;j++)
cout<<stu[i].score[j]<<"\t";
cout<<stu[i].sum<<"\t"<<stu[i].ave<<endl;
}
}
8. C语言结构体数组的定义
所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。
结构体可以存储不同的数据类型,将他们互相联系起来。结构体数组可以连续存储多个结构体,和数组作用相似。比如想定义同一个最小外接矩形的四个坐标值,并给予这个矩形一个特征编号。当需要存储多个最小外接矩形的信息时,就需要动态申请一个结构体数组。
struct 结构体类型名{类型名 成员名;类型名 成员名;……},先声明结构体类型,再定义结构体变量名。声明结构体类型,不分配空间,定义结构体类型变量,就要分配内存空间。
(8)什么程序结构处理数组扩展阅读:
结构体数组指针类型:
一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址,指针变量也可以用来指向结构体数组中的元素。
1、类型一:
指向结构体变量的指针引用结构体变量中的成员。
2、类型二:
用结构体变量和指向结构体变量的指针构成链表,链表是一种常见的重要的数据结构。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。
链表中的每一个元素称为“结点”,每个结点都应包括两个部分:
一是用户需要用的实际数据,
二是下一个结点的地址。
链表中各元素在内存中的存储单元可以是不连续的。要找某一元素,可以先找到上一个元素,根据它提供的下一元素地址找到下一个元素。这种链表的数据结构,必须利用结构体变量和指针才能实现。
可以声明一个结构体类型,包含两种成员,一种是用户需要用的实际数据,另一种是用来存放下一结点地址的指针变量。
参考资料来源:网络—结构体类型—数组
9. 循环结构编个简单程序。使用for循环对数组a[10]中的元素冒泡法从大到小排序输出
#include<stdio.h>
#define N 10
main()
{
int i,j,t;
int a[N]={7,3,2,5,9,1,6,10,4,8};
for(i=N;i>0;i--)
for(j=0;j<i-1;j++)
{
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
}