永发信息网

c语言程序,求参数传递,在线等

答案:6  悬赏:30  手机版
解决时间 2021-12-23 23:57
  • 提问者网友:不爱我么
  • 2021-12-23 15:46
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
int caidan ();
int shuru ();
int shuchu (int a[100]);
int mima ();
int main ()
{
mima ();
return 0;
}

int caidan ()
{
int a[100],x,c,m;
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");
scanf ("%d",&m);
switch (m)
{
case 1:shuru ();

case 2:shuchu (a);

case 3:

case 4:

case 0:exit(0);

default:printf("错误指令\n");printf("请按任意键继续");c=getch();c=getchar();system("cls");caidan ();
}
}

int shuru ()
{
int a[100],x,c;
printf ("请输入学生成绩,输入-1停止\n");
for (x=0;x<=99;x++)
{
printf ("输入第%d学生的成绩",x+1);
scanf ("%d",&a[x]);
if (a[x]==-1)
{
break;
}
}
printf("请按任意键回到主界面");
c=getch();
system("cls");
return a;
return caidan ();
}

int shuchu (int a[100])
{
int x,c;
for (x=0;x<=99;x++)
{
if (a[x]==-1);
{
break;
}
printf ("\n第%d学生的成绩:%d",x+1,a[x]);
}
printf("\n请按任意键回到主界面");
c=getch();
system("cls");
return caidan ();
}

int mima ()
{
char a[]={"jiao"};
char b[5],c;
for (c=0;c<=2;c++)
{
printf ("请输入口令:");
gets (b);
if (strcmp(a,b))
{
printf ("\n密码错误,请重新输入\n\n");
}
else
return caidan ();
if (c==2)
{
exit(1);
}
}
}
最佳答案
  • 五星知识达人网友:十年萤火照君眠
  • 2021-12-23 16:47
1.参数传递
如果只是要读到数组里面的值,可以这样定义一个函数
void ReadArray ( int a[ ] , int length) ;
如果要更改数组内的值,就要这样定义
void UpdateArray( int (*a)[N] , int length );

举例说明如下:
#include <stdio.h>

#define N 5
void ReadArray(int [],int);
void UpdateArray(int (*)[N], int);
int main()
{
int a[N]={ 1,2,3,4,5 };
ReadArray(a,N);
UpdateArray(&a, N);
ReadArray(a,N);

return 0;
}
//读数组内容
void ReadArray(int a[], int len)
{
int i;
for(i=0; i<len; i++)
{
printf("%6d ",a[i]);
if((i+1)%5==0)
putchar(10);//每五个换行一次
}
}
//更改数组内容
void UpdateArray(int (*a)[N],int len)
{
int i;
for(i=0; i<len; i++)
(*a)[i]=0;
}

2.菜单循环问题,可参考下列语句
char order='\0';
while(order!='n' && order!='N')
{
printf("continue (Y/N)?\n");
order=getchar();
}
对于你的程序,可以这样写
while(1)
{
scanf ( "%d" , &m);
switch (m)
{
case 0: exit(0);
case 1:
break;
case 2:
break;
default:
break;
}
}
全部回答
  • 1楼网友:梦中风几里
  • 2021-12-23 21:54
最简单的办法,你把存成绩的a[100]放主程序外面去编程全局的就可以了
  • 2楼网友:杯酒困英雄
  • 2021-12-23 20:41
#include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> #include<conio.h> int caidan (); void shuru (); void shuchu (int *); int mima (); int a[100]; void paixu(); int main () { mima (); //shuchu(a); return 0; } int caidan () { int x,c,m; 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"); scanf ("%d",&m); switch (m) { case 1:shuru ();break; case 2:shuchu (a);break; case 3:paixu(); case 4: case 0:exit(0); default:printf("错误指令\n");printf("请按任意键继续");c=getch();c=getchar();system("cls");caidan ();break; } } void shuru () { int x,c; printf ("请输入学生成绩,输入-1停止\n"); for (x=0;x<=99;x++) { printf ("输入第%d学生的成绩",x+1); scanf ("%d",&a[x]); if (a[x]==-1) { break; } } printf("请按任意键回到主界面\n"); c=getch(); system("cls"); // return a; caidan (); } void shuchu (int *a) { int x,c; for (x=0;x<=99;x++) { if (a[x]==-1) { break; } printf ("\n第%d学生的成绩:%d",x+1,a[x]); } printf("\n请按任意键回到主界面"); c=getch(); system("cls"); caidan (); } int mima () { char a[]={"jiao"}; char b[5],c; for (c=0;c<=2;c++) { printf ("请输入口令:"); gets (b); if (strcmp(a,b)) { printf ("\n密码错误,请重新输入\n\n"); } else return caidan (); if (c==2) { exit(1); } } } void paixu() { for(int i=0;i<100;i++) { for(int j=i+1;j<100;j++) { int k; if(a[i]<a[j]) { k=a[i]; a[i]=a[j]; a[j]=k; } } } int x,c; for (x=0;x<=99;x++) { if (a[x]==-1) { break; } printf ("\n第%d学生的成绩:%d",x+1,a[x]); } printf("\n请按任意键回到主界面"); c=getch(); system("cls"); caidan (); } 只是帮你完成了排序 要是查询的话 有点麻烦 所以就没写
  • 3楼网友:深街酒徒
  • 2021-12-23 19:38
先更正str[20];应为str2[20]. 要明确一点,str1和str2这两个变量本身就是个字符型指针,它跟char *q是一样的,str2就是指向这个字符序列第一个元素的指针。 for(p=str1;*p!='\0';p++); 这个循环的作用是使p指向str1的最后一个元素。 for(q=str2;--p>=str1;q++) *q=*p; 这是个循环,起始条件是字符型指针q=str2,也就是说q指向的就是str2这个序列的第一个元素。 --p>=str1;在进行--p之前,p已经指向str1的最后一个元素(如果str1有5个元素,那么这时p=str1+5),--p即是让指针向前移动,而移动的终止条件是p指向str1的第一个元素,即p==str1。 而每做一次循环体,则把指针q的指向后移一个次。循环体则是把当前p的指向的值赋给q的指向。循环的次数是str1的长度。 总的来说,这段代码的作用是将str1字符序列中的字符倒序的放在str2的开头。 其运行结果是:!gninrom doog 如果str2="asdfghjklzxcv123456789"; 则运行结果是:!gninrom doog123456789(str2的前13个字符被赋值为str1的倒序) 说的啰嗦了,希望能帮到你
  • 4楼网友:千杯敬自由
  • 2021-12-23 19:09
什么问题? switch 中的case 需要break的,。。。。。。。。。 switch (m) { case 1:shuru (); case 2:shuchu (a);
  • 5楼网友:枭雄戏美人
  • 2021-12-23 18:00
用指针吧..数组名就是地址。 int a[10]={1,2,3,4,5,6,7,8,9,0}; pa(a); pa(int *p) { p[1]=100; //这样a[1]从2变为100了 }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯