#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);
}
}
}
c语言程序,求参数传递,在线等
答案:6 悬赏:30 手机版
解决时间 2021-12-23 23:57
- 提问者网友:不爱我么
- 2021-12-23 15:46
最佳答案
- 五星知识达人网友:十年萤火照君眠
- 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;
}
}
如果只是要读到数组里面的值,可以这样定义一个函数
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了
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯