c语言怎么定义字符串数组?

c语言怎么定义字符串数组?,第1张

使用指针数组
#include   <stringh>
#include   <stdioh>
#include   <stdlibh>
int   main()
{
char   test[]={ "this   is   a   test ",   "test   2 ",   " "};
int   i=0;
while(strcmp(test[i],   " ")   !=   0)
puts(test[i++]);
system( "PAUSE ");
return   0;
}

有一个已排好序(从大到小)的数组有5个元素,从键盘输入一个数,要求按原排序的规律将它插入到数组中
#include<stdioh>
void main()
{
int i,x,j;
int a[6]={1,5,10,15,20};
scanf("%d",&x);
for(i=0;i<5;i++)
if(x<a[i])
{
j=i; /当这个数比当前数小时,用j记住当前位置,即j=i,中断循环。比当前数大时继续下一个(小应当在左侧,大则在右侧) /
break;
}
for(i=5;i>=j;i--)
a[i+1]=a[i]; /将位置j以后的数据都向后移一位/
a[i+1]=x; / 把要插入的数x放到a[i]中,因为i--后 i 比实际要插入的位置少1,所以真正插入的位置应该i+1/
for(i=0;i<=5;i++) /这时一共有6个数/
{
printf("%d ",a[i]);
}
}

#include<stdioh>
void main()
{int i,j;
for(i=0;i<5;i++)
{j=i;
while(j--!=0)
printf(" ");
printf(" \n");}
}

使用malloc函数动态分配内存:
#include<stdioh>
#include<malloch>
int main()
{
int num;
scanf("%d",&num);
int arr = (int)malloc(sizeof(int)num);

return 0;
}

题目是5x5数组,写成程序必须具有通用型,代码通过改行列常量,实现任意大小矩阵求对角线

通过对角线元素下标关系,可以获得所有对角线元素地址,并存放在指针数组中返回。

通过元素地址与首地址差值及列数运算得其位置。

注意:最大值存在多个相同元素,只返回找到的第一个元素位置。

25个元素我直接用随机数填充数组,你需要手动输入,在我标注的地方写scanf语句。

在输出所有对角线元素那里,中心元素被打印了2次(正反对角线算了2次),但不影响本题目,(地址运算),这题不需要打印所有对角线元素,你可直接把打印所有元素的那个函数注销掉,或者加一个中心地址判断。

#include<stdioh>

#include<stdlibh>

#include<timeh>

#define MRC 5//数组最大行列数

void pArrInfo(int a[][MRC]);

int getP(int a[][MRC]);

int main()

{

  int i=MRCMRC,a[MRC][MRC],p=&a[0][0],pa=NULL;

  int sum=0,z,y,max,mp=NULL;

  srand(time(NULL));

  while(i--)

      p=rand()%99+1,p++;//1~99 随机数填充数组,你想手动输入,在这里写scanf函数

  max=a[0][0];

  pArrInfo(a);

  pa=getP(a);

  printf("所有对角线的元素为:\n");

  i=MRC+MRC;

  while(i--)

  {

      printf("%d ",pa);

      sum+=pa;

      if(max<pa)

          max=pa,mp=pa;

      pa++;

  }

  printf("\n对角线元素总和为:%d\n",sum);

  z=mp-&a[0][0]+1;//第几个元素

  y=(mp-&a[0][0]+1)%MRC;//整除列数后余数

  printf("其中最大值是%d,位置是第%d行第%d列\n",max,y>0z/MRC+1:z/MRC,y>0y:MRC);

  return 0;

}

void pArrInfo(int a[][MRC])

{

  int i,j;

  for(i=0;i<MRC;i++,printf("\n"))

      for(j=0;j<MRC;j++)

          printf("%2d ",a[i][j]);

}

int getP(int a[][MRC])

{

  static int pa[MRC+MRC];

  int i,j,k=0;

  for(i=0;i<MRC;i++)//正向对角线

      for(j=0;j<MRC;j++)

          if(i==j)

             pa[k++]=&a[i][j];

  for(i=MRC-1;i>=0;i--)//反向对角线

      for(j=0;j<MRC;j++)

          if((MRC-1)-i==j-0)

              pa[k++]=&a[i][j];

  return pa;

}

#include <stdioh>
#include <memoryh>
#include <stdlibh>
#include <stringh>
typedef struct data {
int number;
char name[20];
char id[20];
double score[3];
}dataType;
typedef struct list {
dataType pauline;
struct list next;
}LinkList,pNode,Node;
void getMemory(size_t size) {
return malloc(size);
}
LinkList getEmptyList() {
LinkList head = (pNode)getMemory(sizeof(Node));
memset(head,0,sizeof(Node));
return head;
}
int addNode(LinkList head,pNode pnode) {
pNode q;
for(q = head; q->next; q = q->next)
if(q->next->paulineid == pnode->paulineid) return 0;
q->next = pnode;
pnode->next = NULL;
return 1;
}
// 按学号升排序 
void sortNumber(LinkList head) {
pNode p,q,pt,qt;
p = head;
while(p->next) {
qt = p;
q = p->next;
while(q->next) {
if(qt->next->paulinenumber > q->next->paulinenumber)
qt = q;
q = q->next;
}
if(qt != p) {
pt = p->next;
p->next = qt->next;
qt->next = qt->next->next;
p->next->next = pt;
}
p = p->next;
}
}
// 按第th门成绩降排序,th = 1,2,3 
void sortScore(LinkList head,int th) {
pNode p,q,pt,qt;
int i;
if(th < 1 || th > 3)  return;
i = th - 1;
for(p = head; p->next; p = p->next) {
qt = p;
q = p->next;
while(q->next) {
if(qt->next->paulinescore[i] < q->next->paulinescore[i])
qt = q;
q = q->next;
}
if(qt != p) {
pt = p->next;
p->next = qt->next;
qt->next = qt->next->next;
p->next->next = pt;
}
}

void show(LinkList head) {
pNode p;
for(p = head->next; p; p = p->next ) {
printf("%d\t%s\t%s\t%2lf\t%2lf\t%2lf\n",
p->paulinenumber,p->paulinename,p->paulineid,
p->paulinescore[0],p->paulinescore[1],p->paulinescore[2]);
}
}
pNode readData() {
pNode pnode = (pNode)getMemory(sizeof(Node));
int i;
printf("学  号:");
scanf("%d",&pnode->paulinenumber);
printf("姓  名:");
scanf("%s",pnode->paulinename);
printf("身份z:");
scanf("%s",pnode->paulineid);
for(i = 0; i < 3; ++i) {
printf("第%d门成绩:",i + 1);
scanf("%lf",&pnode->paulinescore[i]);
}
return pnode;
}
void menu() {
printf("\n");
printf("  学生成绩管理系统  \n");
printf("\n");
printf("     1、添加学生信息          \n");
printf("     2、显示学生信息          \n");
printf("     3、按学号排序            \n");
printf("     4、按成绩排序            \n");
printf("\n");
printf("     0、退出                  \n");
printf("\n");
}
int main() {
char op[20];
int select;
LinkList head = getEmptyList();
do {
menu();
printf("请选择:");
fflush(stdin);
fgets(op,20,stdin);
fflush(stdin);
switch(op[0] - '0') {
case 1 : addNode(head,readData()); break;
case 2 : show(head); break;
case 3 : sortNumber(head); break;
case 4 : printf("按第几门功课排序;");
scanf("%d",&select);
sortScore(head,select);
break;
}
}while(op[0] - '0');
printf("END\n");
return 0;
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12972530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存