1.学生成绩管理系统
要求:
学生成绩管理系统
1.输入成绩
2.输出成绩
3.总成绩
4.平均成绩
5.最高成绩
6.最低成绩
7.及格率
8.成绩排序(由高到低)
0.退出
八项功能+菜单+主函数(用户名、密码、分别有三次机会)如果成功登录则循环调用菜单。
#import <Foundation/Foundation.h>
#define NUM 5
//1.学生成绩管理系统
//要求:
//学生成绩管理系统
//1.输入成绩
//2.输出成绩
//3.总成绩
//4.平均成绩
//5.最高成绩
//6.最低成绩
//7.及格率
//8.成绩排序(由高到低)
//0.退出
//
//八项功能+菜单+主函数(用户名、密码、分别有三次机会)如果成功登录则循环调用菜单。
int menu();
void inputScore();
void outputScore();
void sumSocre();
void avgScore();
void maxScore();
void minScore();
void passScore();
void sortScore();
float score[NUM],sum=0;
int i;
int main(int argc, const char * argv[])
{
@autoreleasepool {
char name[100];
int password,i,j,flag =0;
//用户名三次循环
for (i=1; i<4; i++) {
puts("请输入用户名:");
gets(name); //输入字符串(用户名)
//strcmp:字符串比较函数,比较两个字符串的大小,如果第一个字符串大于第二字符串,则返回正数;如果第一个字符串等于第二个字符串,则返回0;否则,返回负数。
if (strcmp(name, "zhangsan")==0) { //对字符串比较函数的返回值进行判断
//密码三次循环机会
for (j=1; j<4; j++) {
printf("请输入密码:");
scanf("%d",&password); //输入密码
//判断密码
if (password==123456) {
flag = 1; //如果用户名与密码都正确,则标志为1;
break; //退出密码循环
}else{
//密码错误时,提示
printf("密码错误,请重新输入,您还有%d次机会!\n",3-j);
}
}
break; //退出用户名循环
}else{
//用户名错误时,提示
printf("用户名错误,请重新输入,您还有%d次机会!\n",3-i);
}
}
//当标志为1 时,则代表可以正确登录成绩管理系统
while (flag==1) {
//当用户在菜单中选择退出时,会返回值为1,返回1时,则退出程序,否则,继续执行程序
if (menu()==1) {
break;
}
}
}
return 0;
}
int menu(){
int flag=0; //设标志初值为0
//菜单
printf("\n\n\t\t学生成绩管理系统\n");
printf("\t\t 1.输入成绩\n");
printf("\t\t 2.输出成绩\n");
printf("\t\t 3.总成绩\n");
printf("\t\t 4.平均成绩\n");
printf("\t\t 5.最高成绩\n");
printf("\t\t 6.最低成绩\n");
printf("\t\t 7.及格率\n");
printf("\t\t 8.成绩排列\n");
printf("\t\t 0.退出\n");
int n;
printf("请输入功能选项:");
scanf("%d",&n); //由用户输入功能编号
//判断功能编号,进入相应的功能块
switch (n){
case 1: printf("您选择了输入成绩的功能:\n");inputScore();break;
case 2: printf("您选择了输出成绩的功能:\n");outputScore();break;
case 3: printf("您选择了总成绩的功能:\n"); sumSocre();break;
case 4: printf("您选择了平均成绩的功能:\n");avgScore();break;
case 5: printf("您选择了最高成绩的功能:\n");maxScore();break;
case 6: printf("您选择了最低成绩的功能:\n");minScore();break;
case 7: printf("您选择了及格率的功能:\n");passScore();break;
case 8: printf("您选择了成绩排列的功能:\n");sortScore();break;
case 0: flag = 1;break; //当用户选择功能0时,则标志为1;
default:printf("您选择有误!\n");
}
return flag; //返回值 为1
}
//输入成绩
void inputScore(){
printf("请输入%d个成绩:\n",NUM);
for (i=0; i<NUM; i++) {
printf("请输入第%d个成绩:",i+1);
scanf("%f",&score[i]);
}
}
//输出成绩
void outputScore(){
printf("\n成绩如下:\n");
for (i=0; i<NUM; i++) {
printf("第%d个成绩是:%.2f\n",i+1,score[i]);
}
}
//求总成绩
void sumSocre(){
sum=0;
for (i=0; i<NUM; i++) {
sum+=score[i];
}
printf("本班级的总成绩是:%.2f\n",sum);
}
//求平均成绩
void avgScore(){
printf("本班级的平均成绩是:%.2f\n",sum/NUM);
}
//求最高成绩
void maxScore(){
float max = score[0];
for (i=1; i<NUM; i++) {
if (max<score[i]) {
max= score[i];
}
}
printf("本班最高成绩是:%.2f\n",max);
}
//求最低成绩
void minScore(){
float min=score[0];
for (i=1; i<NUM; i++) {
if (min>score[i]) {
min=score[i];
}
}
printf("本班级的最低成绩是:%.2f\n",min);
}
//求及格率
void passScore(){
int count=0;
//循环统计及格人数
for (i=0; i<NUM; i++) {
if (score[i]>=90) {
count++;
}
}
//及格率=及格人数/总人数*100
printf("本班级的及格率是:%.2f%%\n",(float)count/NUM*100);
//输出%,格式%%
}
//成绩排序
void sortScore(){
//从后向前(冒泡排序)
for (i=1; i<NUM; i++) {
for (int j=NUM-1; j>=i; j--) {
if (score[j]>score[j-1]) {
float t= score[j];
score[j]=score[j-1];
score[j-1]=t;
}
}
}
printf("本班级成绩由高到低排序如下:\n");
for (i=0; i<NUM; i++) {
printf("%.2f ",score[i]);
}
printf("\n");
}
2.ATM机管理系统
ATM机管理系统
1.存款
2.查询
3.取款——(子菜单)
4.转账
5.退出
子菜单 如下:
1.100元
2.200元
3.500元
4.1000元
5.2000元
#import <Foundation/Foundation.h>
int a; //全局变量、当全局变量与局部变量同名时,局部变量优先。
//1.最简单的函数封装:无参无返回值的函数
//左void:空类型,没有返回值、该类型不可省略。右void:表示此函数没有参数,参数void可省略
//定义函数时,如果返回值类型省略不写,则默认为int类型
void Hello(void){ //函数头
printf("hello world\n"); //被封装的功能
}//函数体
//格式:
//返回值类型 函数名(){ 功能模块;}
//
//1》编写函数实现输出图形
//
//
//
void menu(){
printf("\n\n\t\t====ATM机管理系统=====\n");
printf("\t\t 1:取款\n");
printf("\t\t 2:存款\n");
printf("\t\t 3:查询\n");
printf("\t\t 4:转账\n");
printf("\t\t 0:退出\n");
printf("请输入功能编号:");
int n;
scanf("%d",&n);
switch (n){
case 1:printf("您选择了取款功能\n");break;
case 2:printf("您选择了存款功能\n");break;
case 3:printf("您选择了查询功能\n");break;
case 4:printf("您选择了转账功能\n");break;
case 0:printf("退出\n");break;
default:printf("您选择有误!\n");
}
}
//2》 用函数实现两数相加
void mySum(){
int a,b;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
}
//3》定义一个函数求两个数最大值。
//2.有参无返回值函数
//参数:负责函数间数据传递的信息
//只能由实参传递数据给形参,且为单向传递
//形参:只能是变量。用来接收数据。
//实参:可以是变量、常量 、表达式。
//实参与形参的类型、数量、顺序必须一致。
void yourSum(int a,int b){ //形式参数(形参):定义函数时所用的参数
printf("%d",a+b);
}
//格式:返回值类型 函数名(参数1,参数2,……参数n){功能模块}
//1》定义一个函数实现求n!(1*2*3*4*5)。
void fuc(int n){
int ji=1;
for (int i=1; i<=n; i++) {
ji*=i;
}
printf("%d\n",ji);
}
//2》输入二个数n与k输出n--k之间的所有偶数
void printEven(int n,int k){
if (n>k) {
int t=n;
n=k;
k=t;
}
for (int i=n; i<=k; i++) {
if (i%2==0) {
printf("%d ",i);
}
}
}
//3》输入一个成绩判断是否合格的(合格>=90)
void isPass(int score){
if (score>=90) {
printf("合格\n");
}else{
printf("不合格\n");
}
}
//3.返回值函数
//return:返回值的关键字
//一个函数中可以有多个return语句,但只能返回一个return的值
int hisSum(int a,int b){
return a+b;
}
//利用函数判断一个数是偶数还是奇数,如果是偶数,则返回1,奇数返回0。在主调函数中判断,如果是偶数则输出even,如果是奇数,输出odd?(有参有返回的函数)
int isOdd(int a); //函数的声明、函数的原型说明
//主调函数如果在被调函数上面,则必须对被调函数进行声明。否则,可声明可不声明。
//任何一个函数都可以调用除主函数外的任何函数(包含它自己)。
//递归调用:就是自己调用自己的过程。
int fac(int n)//n就是循环初值
{
if(n==1) return 1; //循环条件
else return n*fac(n-1); //5*4*3*2*1
}
int herSum(int n)
{
if (n==0) {
return 0;
}else{
return n+herSum(n-1);
}
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
// mySum();
// int a,b;
// printf("请输入两个整数:");
// scanf("%d%d",&a,&b);
// yourSum(a, b+1); //实际参数(实参):调用函数时所用的参数
// int n;
// printf("请输入一个整数:");
// scanf("%d",&n);
// fuc(n);
// int n,m;
// printf("请输入两个整数:");
// scanf("%d%d",&n,&m);
// printEven(n, m);
// int n;
// printf("请输入一个成绩:");
// scanf("%d",&n);
// isPass(n);
// int a,b;
// printf("请输入两个整数:");
// scanf("%d%d",&a,&b);
// printf("%d\n",hisSum(a,b));
// int a;
// printf("请输入一个整数:");
// scanf("%d",&a);
// int n=isOdd(a);
// if (n==1) {
// printf("even\n");
// }else{
// printf("odd\n");
// }
printf("%d\n",herSum(100));
}
return 0;
}
int isOdd(int a){
a=5;
if (a%2) {
return 0;
}else{
return 1;
}
}
6.返回
练习
一、单选题
- 下面对无参数函数的定义形式正确的是( )
A. double fun( ){ } B. double fun(int x; int y){ }
C. double fun(int x, int y) ; D. double fun{ };- 下面程序通过函数实现输入长方形长与宽求周长,空白处应填入( )
#include “stdio.h”
____________________
{
int a,b,s;
printf(“请输入长与宽”);
scanf(“%d%d”,&a,&b);
s=2*(a+b);
printf(“%d”,s);
}
void main()
{ length(); }
A. void length() B. void length(); C. length; D. length(){ };
- 给定一个C程序的代码如下所示,则编译运行后,如果输入的值分别是1与5则输出结果是( )。
#include “stdio.h”
void add( )
{
int a,b,sum=0,i;
scanf(“%d%d”,&a,&b);
for(i=a;i<=b;i++){
sum=sum+i;
}
printf(“%d”,sum);
}
void main()
{ add();}
A. 1 B. 5 C. 15 D. 6
- 给定一个C程序的代码如下所示,则编译运行后,输出结果是( )。
#include “stdio.h”
void fun()
{
int a[5]={12,3,2,7,1},i,m;
m=a[0];
for(i=0;i<5;i++){
if(m<a[i]){
m=a[i];
}
}
printf(“%d “,m*m);
}
void main()
{ fun(); }
A. 12 B. 144 C. 24 D. 9
- 下面程序执行后的结果是( )
#include “stdio.h”
int fun()
{
int i,sum=0;
int a[5]={1,2,3,4,5};
for (i=0;i<5;i++) {
if (a[i]%2!=0){
sum+=i*i;
}
}
printf(“%d”,sum);
}
void main()
{ fun();
}
A. 35 B. 20 C. 25 D. 11
- 下面程序执行的结果是( )
#include “stdio.h”
int fun()
{
int i=0;
int k =1 ;
while(k<3){
printf (“%d”,i);
printf(“d”);
k++;
}
}
void main()
{ fun(); }
A. 012 B. 0d1d2d C. 0d1d D. 0d0d
- 下面程序执行后的结果是( )
#include <stdio.h>
void fun()
{
int sum=0,i;
for(i=0;i<=10;i++){
if(i%10==0) {
sum=sum+i;
} else{
continue;
}
}
printf(“%d”,sum);
}
main()
{ fun(); }
A. 0 B. 10 C. 45 D. 55
- 下面程序执行后,输出的结果是( )
#include <stdio.h>
void fun()
{
int i=5;
while(i<=25){
if(i%10==i/10){
printf(“%d “,i); // 11 22
}
i++;
}
}
main()
{ fun();
}
A. 5 10 15 20 25 B. 11 22 C. 10 20 D. 7 14
- 执行下面程序后的结果是( )
#include <stdio.h>
void fun()
{
int i, s=0;
for (i=5; i<6; i++)
s=s+i;
s=s+i;
printf(“%d”, s);
}
main()
{ fun(); }
A. 5 B. 11 C. 0 D. 10
- 下面程序执行后如果输入的值分别是abc与cba则程序的输出结果是( )
#include “stdio.h”
void f()
{
char arr[10],brr[10];
gets(arr);
gets(brr);
printf(“%d”,strlen(arr)+strlen(brr));
}
main()
{ f(); }
A. -1 B. 6 C. abcabc D. abccba
- 下面程序执行后如果输入的值是2,3则结果是( )
#include “stdio.h”
void fun( )
{
int a,b;
scanf(“%d,%d”,&a,&b);
a>b?printf(“%d”,a*a):printf(“%d”,b*b*b);
}
void main()
{ fun(); }
A. 27 B. 4 C. 9 D. 8
- 执行下面程序,输入陶渊明的年龄26则输出结果是( )
#include “stdio.h”
void fun()
{
int age;
scanf(“%d”,&age);
if(age>=15 && age<=30)
printf(“学习奋斗”);
else if(age>30 && age<=50)
printf(“累积经验”);
}
void main()
{ fun(); }
A. 学习奋斗 B. 累积经验 C. 无法编译 D. 无输出
- 下面程序执行后的结果是( )
#include “stdio.h”
int m=10;
void fun()
{
m=m+2;
}
void main()
{
m++;// 11
fun();// 11+2 =13
m++;// 14
printf(“%d”,m);
}
A. 10 B. 11 C. 12 D. 14
- 下面程序执行后的结果是( )
#include “stdio.h”
void sum()
{
int i,count=0;
for(i=0;i<=40;i++){
if(i%2==0 && i%5==0){
count++;
}
}
printf(“%d”,count); // 0,10,20,30,40
}
void main()
{ sum(); }
A. 2 B. 4 C. 5 D. 6
- 有以下代码:
int b;
void main()
{
int a=10;
b=b+100;
}
则a,b分别属于( )
A. 局变变量 局部变量 B. 全局变量 局部变量
C. 局部变量 全局变量 D. 全局变量 全局变量
二、判断题
- 变量的作用域指变量值表示的范围 ( )
- 在函数之内定义的变量称为局部变量,它的有效作用范围是整个程序( )
- 已知定义好一个求两数相减的无参函数,函数名为sub,如果调用此函数可>通过语句sub{ };( )
- 从用户的角度函数可以分为实用函数与不实用函数( )
- 定义一个输出数组中最大值的无参函数可以使用语句void maxvalue( ); ( )