6.数组测试案列

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.返回

练习

一、单选题

  1. 下面对无参数函数的定义形式正确的是( )
    A. double fun( ){ } B. double fun(int x; int y){ }
    C. double fun(int x, int y) ; D. double fun{ };
  2. 下面程序通过函数实现输入长方形长与宽求周长,空白处应填入( )
#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(){  };
  1. 给定一个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
  1. 给定一个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
  1. 下面程序执行后的结果是( )
#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
  1. 下面程序执行的结果是( )
#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
  1. 下面程序执行后的结果是( )
#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
  1. 下面程序执行后,输出的结果是( )
#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
  1. 执行下面程序后的结果是( )
#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
  1. 下面程序执行后如果输入的值分别是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
  1. 下面程序执行后如果输入的值是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
  1. 执行下面程序,输入陶渊明的年龄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. 无输出

  1. 下面程序执行后的结果是( )
#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
  1. 下面程序执行后的结果是( )
#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
  1. 有以下代码:
int b;
void main()
{
   int a=10;
    b=b+100;
}

则a,b分别属于( )
A. 局变变量 局部变量 B. 全局变量 局部变量
C. 局部变量 全局变量 D. 全局变量 全局变量

二、判断题

  1. 变量的作用域指变量值表示的范围 ( )
  2. 在函数之内定义的变量称为局部变量,它的有效作用范围是整个程序( )
  3. 已知定义好一个求两数相减的无参函数,函数名为sub,如果调用此函数可>通过语句sub{ };( )
  4. 从用户的角度函数可以分为实用函数与不实用函数( )
  5. 定义一个输出数组中最大值的无参函数可以使用语句void maxvalue( ); ( )
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容