
根据你的要求,只要将以下代码写入程序即可实现你说的功能,具体如下:
#include <stdioh>
#include <stdlibh>
#include <malloch>
#define LIST_INIT_SIZE 20
#define LISTINCREMENT 10
struct myList
{
int elem;
int length;
int listsize;
};
int InitList(myList&L)
{
Lelem=(int)malloc(LIST_INIT_SIZEsizeof(int));
if(!Lelem)
{
exit(0);
}
Llength=0;
Llistsize=LIST_INIT_SIZE;
return 1;
}
int ListInsert(myList &L,int i,int x)
{
int newbase,p,q;
if(i<1||i>Llength-1)
{
return -1;
}
if(Llength>=Llistsize)
{
if(!(newbase=(int)realloc(Lelem,(LIST_INIT_SIZE+LISTINCREMENT)sizeof(int))))
exit(0);
Lelem=newbase;
Llistsize+=LISTINCREMENT;
}
p=Lelem+i;
for(q=Lelem+Llength-1;q<=p;--q)
{
(q+1)=q;
}
p=x;
++Llength;
return 1;
}
int ListDelete(myList &L,int i)
{
int newbase,p,q;
if(i<1||i>Llength-1)
{
return -1;
}
if(Llength<1)
{
return -1;
}
p=Lelem+i;
for(q=p;q<=Lelem+Llength-1;++q)
{
q=(q+1);
}
--Llength;
return 1;
}
int main(void)
{
int n,i,x;
SqList L;
InitList(L);
printf("请输入线性表L的长度:\n");
scanf("%d",&n);
printf("请输入数据:\n");
for(i=0;i<n;i++)
{
scanf("%d",&Lelem[i]);
}
printf("顺序表的元素有:\n");
for(i=0;i<n;i++)
{
printf("%d ",Lelem[i]);
}
printf("\n");
printf("请输入插入位置i:\n");
scanf("%d",&i);
ListInsert(L,i,4);
printf("插入后的线形表:\n");
for(i=0;i<=n;i++)
{
printf("%d ",Lelem[i]);
}
printf("请输入删除位置i:\n");
scanf("%d",&i);
ListInsert(L,i);
printf("删除后的线形表:\n");
for(i=0;i<=n;i++)
{
printf("%d ",Lelem[i]);
}
return 0;
}
这个程序的运行过程是这样的:首先定义一个静态数组 a[8][8];
然后通过循环
for(i=0;i<3;i++)
for(j=0;j<3;j++)
分别给
a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]
a[2][0] a[2][1] a[2][2]
赋值!
循环过后 j=3 。因此语句
for(i=0;i<8;i++)
x+=a[i][j];
是求 a[0][3]、a[1][3]、a[2][3]、a[3][3]、a[4][3]、a[5][3]、a[6][3]、a[7][3]、a[8][3] 的和!而这些元素没有重新赋值,所以都等于定义静态数组时赋予的初值 0 。所以它们的和 x = 0 !
这里的 static 很关键!因为静态数组在定义时会自动赋初值 0 。
如果不是静态数组,则本题没有赋值便求和就会出错!
如有疑问,可在线讨论!
#include<stdioh>
#include<Windowsh>
struct STU{
long sno;
char sname[8];
int sage;
int sclass;
struct STU next;
};
int pi;
void Print_slist_no(struct STU h)
{
struct STU p;
p=h->next;
if(p=='\0')
{
printf("Linklist is null!\n");
}
else
{
// printf("heead");
while(p!='\0')
{
printf("%d\t",p->sno);
p=p->next;
}
printf("end\n");
}
}
void Print_slist_name(struct STU h)
{
struct STU p;
p=h->next;
if(p=='\0')
{
printf("Linklist is null!\n");
}
else
{
// printf("heead");
while(p!='\0')
{
printf("%d\t",p->sname);
p=p->next;
}
printf("end\n");
}
}
void Print_slist_age(struct STU h)
{
struct STU p;
p=h->next;
if(p=='\0')
{
printf("Linklist is null!\n");
}
else
{
// printf("heead");
while(p!='\0')
{
printf("%d\t",p->sage);
p=p->next;
}
printf("end\n");
}
}
void Print_slist_class(struct STU h)
{
struct STU p;
p=h->next;
if(p=='\0')
{
printf("Linklist is null!\n");
}
else
{
// printf("heead");
while(p!='\0')
{
printf("%d\t",p->sclass);
p=p->next;
}
printf("end\n");
}
}
void Delete_STU_no(struct STU h,int x)
{
#define PRO sno
struct STU p,q;
q=h;p=h->next;
if(p!='\0')
{
while((p!='\0')&&(p->PRO!=x))
{
q=p;p=p->next;
}
if(p->PRO==x)
{
q->next=p->next;free(p);
}
}
#undef PRO
}
void Delete_STU_name(struct STU h,int x)
{
#define PRO sname
struct STU p,q;
q=h;p=h->next;
if(p!='\0')
{
while((p!='\0')&&(p->PRO!=x))
{
q=p;p=p->next;
}
if(p->PRO==x)
{
q->next=p->next;free(p);
}
}
#undef PRO
}
void Delete_STU_age(struct STU h,int x)
{
#define PRO sage
struct STU p,q;
q=h;p=h->next;
if(p!='\0')
{
while((p!='\0')&&(p->PRO!=x))
{
q=p;p=p->next;
}
if(p->PRO==x)
{
q->next=p->next;free(p);
}
}
#undef PRO
}
void Delete_STU_class(struct STU h,int x)
{
#define PRO sclass
struct STU p,q;
q=h;p=h->next;
if(p!='\0')
{
while((p!='\0')&&(p->PRO!=x))
{
q=p;p=p->next;
}
if(p->PRO==x)
{
q->next=p->next;free(p);
}
}
#undef PRO
}
void Insert_STU(struct STU h,int x,int y)
{
struct STU s,p,q;
s=(struct STU )malloc(sizeof(struct STU));
s->sage=y;
q=h;
p=h->next;
while((p!='\0') && (p->sage!=x))
{
q=p;p=p->next;
}
q->next=s;s->next=p;
}
void main()
{
int x;
struct STU phead,s,r;
phead=(struct STU)malloc(sizeof(struct STU));
r=phead;
scanf("%d",&x);
while(x>=0)
{
s=(struct STU)malloc(sizeof(struct STU));
s->sage=x;
r->next=s;
scanf("%d",&x);
}
r->next='\0';
Print_slist_no(s);
Print_slist_name(s);
Print_slist_age(s);
Print_slist_class(s);
}
程序代码如下:
直接编译,程序输出结果中任意输入三个数字,程序执行结果如下图所示:
扩展资料:
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
#include "stdioh"
main(){
int i=0,a=0,b=0,c=0,d=0,e=0,f=0;
float grade;
printf("请输入成绩,以-1结束\n");
do{
scanf("%f",&grade);
if(grade==100)a++;
else if(grade>=90)b++;
else if(grade>=80)c++;
else if(grade>=70)d++;
else if (grade>=60)e++;
else f++;
i++;
}while(grade!=-1);
printf("一个有%d个学生:\n",i);
printf("成绩分布情况:\n");
printf("0~59:%d%%\n",f100/i);
printf("60~69:%d%%\n",e100/i);
printf("70~79:%d%%\n",d100/i);
printf("80~89:%d%%\n",c100/i);
printf("90~99:%d%%\n",b100/i);
printf("100:%d%%\n",a100/i);
}
编译过的
这个刚刚写的,呵呵,刚好可以
#include"stdioh"
int prime(int n)
{
int i;
for(i=2;i<n;i++)
if(n%i==0)break;
return i==n;
}
int fun(int m,int k)
{
int i,s=0,a[k],j=0;
for(i=m+1;;i++)
{
if(prime(i))
{
a[j++]=i;
printf("%d ",a[j-1]);
}
if(j==k)
break;
}
for(i=0;i<k;i++)
s+=a[i];
return s;
}
main()
{
int t,m,k;
printf("请输入m,k:\n");
scanf("%d,%d",&m,&k);
t=fun(m,k);
printf("\n%d\n",t);
}
(1) 定义以下5个变量或者数组,
(a)int p;
(b)int a[5];
(c)int (a)[5];
(d)int (fun)(int x,int y);
(e)int p;
(2)
(a)int p;
p和p+1值的差是4,因为p是int的指针,指针的宽度是4
(c)int (a)[5];
p和p+1值的差是20,因为int [5]的宽度是20
(d)int (fun)(int x,int y);
p和p+1值的差是4,因为函数的地址的宽度也是4。
注:d中的在VC环境fun+1无法打印,编译通不过
但其差值,确实是4,这个可以在运行的时候,打断点进行观看。
程序如下:
#include<stdioh>
void main()
{
int p;
int a[5];
int (a1)[5];
int (fun)(int x,int y);
int p1;
printf("p: %X, p+1:%X\n",p,p+1);
printf("a: %X, a+1:%X\n",a,a+1);
printf("a1: %X, a1+1:%X\n",a1,a1+1);
printf("fun: %X, fun+1:%X\n",fun);//,fun+1);
}
以上就是关于编写一个c语言程序实现以下功能:全部的内容,包括:编写一个c语言程序实现以下功能:、C语言程序的功能、用C语言编写程序,完成如下功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)