黑马程序员--练习题汇总(未完待续)

来源:互联网 发布:html2canvas.js api 编辑:程序博客网 时间:2024/06/09 22:33


1.输入一个小写字母,将其转化为大写

#import <Foundation/Foundation.h>char change(char c){    if (c>='a' && c<='z') // 保证输入的是小写字母    {        return c - 32;    }    else    {        return c;    }}int main(){    NSLog(@"please input");        char m;        scanf("%c",&m);        char k = change(m);        NSLog(@"%c",k);        return 0;}



2.输入一个句子,然后把每个单词首字母大写之后输出。

int main(){    char *sen;        NSLog(@"please input");        gets(sen);        if(sen[0]>='a' && sen[0]<='z')    {       sen[0] = sen[0]-32;    };       for (int i = 0;sen[i] != '\0';i++)    {        if(sen[i] == ' ')        {            if (sen[i+1]>='a' && sen[i+1]<='z')            {                sen[i+1] = sen[i+1]-32;            };                                }            }        NSLog(@"%s",sen); // NSLog输出看来也是认地址,然后到/0结束        return 0;}

3.用类与对象的思想设置一个学生

#import <Foundation/Foundation.h>typedef enum{    Sexman,    Sexwomen,    Unknown}Sex; // 定义一个枚举typedef struct{    int year;    int month;    int day;}Date; // 定义一个结构体typedef enum{    FavRed,    FavWhite,    FavBlack}Favcolor; // 定义一个枚举@interface Student : NSObject{    @public    Sex sex;    Date birthday;    double weight;    Favcolor fav;}- (void)eat;- (void)run;- (void)printf;@end@implementation Student- (void)eat{    weight = weight=1;    NSLog(@"weight=%f",weight);}- (void)run{    weight = weight-1;    NSLog(@"weight=%f",weight);}- (void)printf{    NSLog(@"xingbieshi%d,shengrishi%d-%d-%d,tizhongshi%f,xihuandeyanseshi%d",sex,birthday.year,birthday.month,birthday.day,weight,fav);}@endint main(){    Student *p = [Student new];    p->sex = Sexman;    Date d = {2011,10,9}; // 先将生日赋值给d,然后再传递给birthday,因为在定义对象的时候,已经对birthday赋值,这里无法用这种方式再次赋值    p->birthday = d;    p->weight = 120;    p->fav = FavRed;        [p eat];    [p run];    [p run];    [p run];    [p printf];        return 0;}

4.用类和对象设置一个计算器,可以计算和,平方,返回3,14

#import <Foundation/Foundation.h>@interface Jisuanqi : NSObject- (double)pi;- (int)pingfang:(int)num;- (int)sumAndnum1:(int)num1 Withnum2:(int)num2; // 注意书写格式,两个形参之间加一个空格@end@implementation Jisuanqi- (double)pi{    return 3.14;}- (int)pingfang:(int)num{    return num * num;}- (int)sumAndnum1:(int)num1 Withnum2:(int)num2{    return num1 + num2;}@endint main(){    Jisuanqi *p = [Jisuanqi new];        double c1 = [p pi];    int c2 = [p pingfang:10];    int c3 = [p sumAndnum1:2 Withnum2:4];        NSLog(@"pi=%f,pingfang=%d,sum=%d",c1,c2,c3);        return 0;}

5.设计一个方法,用来比较车速,若本车速快,返回1,若本车速慢,返回-1,若车速相同,返回0

#import <Foundation/Foundation.h>@interface Car : NSObject{    @public    int speed;}- (int)Comparespeedwith:(Car *)other;@end@implementation Car- (int)Comparespeedwith:(Car *)other{    return speed - other->speed;}@endint main(){    Car *p1 = [Car new];    p1->speed = 100;        Car *p2 = [Car new];    p2->speed = 150;        int c =[p1 Comparespeedwith:p2];    NSLog(@"suducha=%d",c);        return 0;}

6.

//小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意润年问题)(C语言)#import <Foundation/Foundation.h>#include <stdio.h>//所用到的三个函数的声明;int getDays(int y, int m, int d);void estimate(int days);int isRun(int y);int main(){   //初始化年,月,日,用于接收输入键盘录入。    int year,month,day;    do    {        printf("请输入2006.1.1之后的任意一天,年月日之间以.隔开\n");        scanf("%d.%d.%d", &year, &month, &day);    } while (year<2006 || month<1 || month>12 ||day>31);    //调用函数getDays获得这天离2006年1月1日相差的天数。    int days=getDays(year, month, day);    //调用函数判断遇到的是美女还是帅哥。    estimate(days);    return 0;    }int getDays(int y,int m,int d){    //闰年每月的天数    int leapYearMonths[12] = {31,29,31,30,31,30,31,31,30,31,30,31};    //正常年每月的天书    int yearMonths[12] = {31,28,31,30,31,30,31,31,30,31,30,31};    //初始化一个月份差距的天数和,默认值为0。    int sumOfMonth=0;    //初始化一个年差距的天数和,默认值为0.    int sumOfYear=0;    //从2006年开始遍历,算出年差距的总天数。    for(int x=2006;x<y;x++)    {        if(isRun(x))            sumOfYear+=366;        else            sumOfYear+=365;    }    //从1月份算起,算出月差距的总天数。    for(int i=1;i<m;i++)    {        if(isRun(y))            sumOfMonth+=leapYearMonths[i];        else            sumOfMonth+=yearMonths[i];    }    //返回一个年月日差距的总天数。    return sumOfMonth+sumOfYear+d;}void estimate(int days){    //利用%的特性来判断是否遇见美女和帅哥。    if(days%2==0)        printf("这天小明碰到的是帅哥\n");    if(days%3==0)        printf("这天小明碰到的是美女\n");    if(days%2!=0 && days%3!=0)        printf("这天小明既没有碰到美女,也没有碰到帅哥");}//判断是否是闰年的函数。int isRun(int y){    //闰年的计算是1,能被4整除,且不能被100整除,    //     2。能被400整除。两者满足其一即可。    if((y/4==0 && y/100!=0)||(y/400==0))    {        return 1;    }    else    {        return 0;    }}
7.

//学生信息管理系统,包含添加,删除和查看功能(有个功能实现不了,就是不知道怎么样在第一次运行程序时候输入的数据,关闭再打开还能查看)#import <Foundation/Foundation.h>#include <stdio.h>#include <string.h>void gongNing (); // 增加、删除、查询的功能声明void zengJia(); // 增加功能声明void shanchu(); // 删除功能声明void chaxun(); // 查询功能声明void xuehao();void xingming();void xingbie();void fenshu();void suoyou();void shanchuxingming();void shanchuxuehao();void shanchuxingbie();void shanchufenshu();void shanchusuoyou();// 定义一个学生的结构体struct Student{    char name[10]; // 姓名    int age; // 年龄    char set[10]; // 姓别    int number;  // 学号    double score; // 分数} ;// 定义一个学生数组可放100人struct Student str[100];int main(){    // 提示用户登陆学生管理系统    //    printf("欢迎登陆学生管理系统\n");    printf("\n\n\n\n\t\t\t\t\t\t 欢迎使用学生管理系统!\n");        // 调用功能    gongNing();            // 程序归零,正常退出    return 0;}// 所有功能定义void gongNing (){    // 保证功能函数一直不退出循环,想退出的时候再退出(可退出的死循环)    // 定义功能的标识    int n = 0;        // 提示用户输入    printf("\t\t\t\t\t\t*******************\n");    printf("\t\t\t\t\t\t   1.增加学生信息\n");    printf("\t\t\t\t\t\t   2.删除学生信息\n");    printf("\t\t\t\t\t\t   3.查询学生信息\n");    printf("\t\t\t\t\t\t   退出系统按任意键\n");    printf("\t\t\t\t\t\t*******************\n");        // 接收用户的选择    scanf("%d", &n);        // 定义用户所需进入的选择    if (n == 1)    {        zengJia(); // 增加    }    else if (n == 2)    {        shanchu(); // 删除    }    else if (n == 3)    {        chaxun(); // 查询    }    else    {        exit(0);//退出函数的命令    }}// 增加功能定义void zengJia(){    static int i;    // 定义学生数组每个人的信息    while (i<100) {        printf("请输入该学生的姓名\n");        scanf("%s",str[i].name);        printf("请输入该学生的年龄(5岁-30岁之间)\n");        scanf("%d",&str[i].age);        // 检察年龄是否适当(5岁-30岁之间)        while  (str[i].age<5 || str[i].age>30)        {            printf("对不起您的学生年龄输入可能有误\n");            printf("请重新输入该学生年龄\n");            scanf("%d",&str[i].age);        }                printf("请输入该学生的性别(man或woman)\n");        scanf("%s",&str[i].set);        // 只能输入男或女或man或woman        while ((strcmp("man",str[i].set)!=0) && (strcmp("woman",str[i].set)!=0))        {            printf("您输入的性别有误\n请重新输入\n");            scanf("%s",&str[i].set);        }                printf("请输入该学生的学号\n");        scanf("%d",&str[i].number);        // 检察学号是否相同,学号具有惟一性,不能同时给多人赋值        for (int a = 0; a<i; a++)        {            while  (str[i].number == str[a].number)            {                printf("对不起学号具有惟一性,不能同时给多人同一学号\n");                printf("请重新输入该学生的学号\n");                scanf("%d",&str[i].number);            }        }        printf("请输入该学生的分数\n");        scanf("%lf",&str[i].score);        // 检察分数是否适当        while  (str[i].score<0 || str[i].score>100)        {            printf("对不起您的考生考分不符合判卷标准\n");            printf("请重新输入该学生的分数\n");            scanf("%lf",&str[i].score);        }                // 确保每次调用函数都输入下一个数组的信息        i++;        printf("是否继续添加,请按1,返回菜单请按2,退出按任意键\n");        int a = 0;        scanf("%d", &a);        if (a == 1)        {            zengJia();                    }        else if (a == 2)        {            gongNing();        }    }}// 删除功能定义void shanchu(){    printf("请输入需要删除的选择\n学号删除请按1\n姓名删除请按2\n性别删除请按3\n分数删除请按4\n删除所有请按5\n返回请按6\n");    int a = 0;    scanf("%d",&a);    if (a == 1) {        shanchuxuehao();    } else if (a == 2) {        shanchuxingming();    } else if (a == 3) {        shanchuxingbie();    } else if (a == 4) {        shanchufenshu();    } else if (a == 5){        shanchusuoyou();    }else if(a == 6)    {        gongNing();    }}void shanchuxuehao(){    // 提示用户需要删除该学生的学号    printf("请输入需要删除该学生的学号\n");    int n = 0;    scanf("%d",&n);    // 找到这个学号对应的数组    for (int i = 0,count = 0; i<100; i++)    {        // 定义一个空的学生变量a        struct Student a;        // 如果数组某一个元素的学号与需要删除的学号相等        if (str[i].number == n)        {            printf("您要删除的学生姓名是%s、年龄是%d、性别是%s、学号是%d、分数是%f\n如不是很按1(跳过继续查找),返回请按2,删除请按任意键\n",str[i].name, str[i].age, str[i].set, str[i].number,str[i].score);            int b = 0;            scanf("%d",&b);            if (b==1) {                continue;            } else if (b ==2) {                shanchu();            } else {                str[i] = a; // 然后将这个数组元素清空                --count;            };        }        ++count;        if (count==100) {            printf("无此学生\n");            shanchu();        }    }    }void shanchuxingming(){    // 提示用户需要删除该学生的学姓名    printf("请输入需要删除该学生的姓名\n");    char n[10] = {0};    scanf("%s",&n);    // 找到这个性别对应的数组    for (int i = 0,count = 0; i<100; i++)    {        // 定义一个空的学生变量a        struct Student a;        // 如果数组某一个元素的姓名与需要删除的姓名相等        if (strcmp(str[i].name, n) == 0)        {            printf("您要删除的学生姓名是%s、年龄是%d、性别是%s、学号是%d、分数是%f\n如不是很按1(跳过继续查找),返回请按2,删除请按任意键\n",str[i].name, str[i].age, str[i].set, str[i].number,str[i].score);            int b = 0;            scanf("%d",&b);            if (b==1) {                continue;            } else if (b ==2) {                shanchu();            } else {                str[i] = a; // 然后将这个数组元素清空                --count;            };        }        ++count;        if (count==99) {            printf("无此学生\n");            shanchu();        }    }}void shanchuxingbie(){    // 提示用户需要删除该学生的学姓别    printf("请输入需要删除该学生的姓别(man或woman)\n");    char n[10] = {0};    scanf("%s",&n);    // 找到这个性别对应的数组    for (int i = 0,count = 0; i<100; i++)    {        // 定义一个空的学生变量a        struct Student a;        // 如果数组某一个元素的姓名与需要删除的姓名相等        if (strcmp(str[i].set, n) == 0)        {            printf("您要删除的学生姓名是%s、年龄是%d、性别是%s、学号是%d、分数是%f\n如不是很按1(跳过继续查找),返回请按2,删除请按任意键\n",str[i].name, str[i].age, str[i].set, str[i].number,str[i].score);            int b = 0;            scanf("%d",&b);            if (b==1) {                continue;            } else if (b ==2) {                shanchu();            } else {                str[i] = a; // 然后将这个数组元素清空                --count;            };        }        ++count;        if (count==99) {            printf("无此学生\n");            shanchu();        }    }    }void shanchufenshu(){    // 提示用户需要删除该学生的分数    printf("请输入需要删除多少学生的分数以内的数据用“-”(如:90-100,单个成绩100-100)\n");    int n = 0,m = 0;    scanf("%d-%d",&n, &m);    for (;n <= m;n++)    {        // 找到这个学号对应的数组        for (int i = 0,count = 0; i<100; i++)        {            // 定义一个空的学生变量a printf("您要删除的学生是%d-%d将被删除,返回请按2,确认请按任意键\n",n,m);            struct Student a;            // 如果数组某一个元素的分数与需要删除的分数相等            if (str[i].number == n)            {                str[i] = a; // 然后将这个数组元素清空                            }            ++count;            if (count==99) {                printf("无此学生\n");                shanchu();            }        }    }}void shanchusuoyou(){    for (int i = 0; i<100; i++) {        struct Student a;        // 如果数组某一个元素的姓名与需要删除的姓名相等                printf("您将要删除所有学生信息,返回请按1,删除请按任意键\n");        int b = 0;        scanf("%d",&b);        if (b==1) {            continue;        } else if (b ==2) {            shanchu();        } else {            str[i] = a; // 然后将这个数组元素清空        };    }}// 查询功能定义void chaxun(){    printf("按学号查询请按1\n按姓名查询请按2\n按性别查询请按3\n按分数查询请按4\n查询所有(按录入顺序)请按5\n");    int a = 0;    scanf("%d", &a);    if (a==1) {        xuehao();    } else if (a == 2) {        xingming();    } else if (a == 3) {        xingbie();    } else if (a == 4) {        fenshu();    } else if (a == 5) {        suoyou();    }    printf("是否继续查询,查询请按1,返回菜单请按2\n");    int b = 0;    scanf("%d",&b);    if (b == 1) {        chaxun();    }else if (b ==2){        gongNing();    }}void suoyou(){    printf("从录入顺序\n");    for (int i = 0; i<=99; i++) {        printf("第%d个的姓名是%s、年龄是%d、性别是%s、学号是%d、分数是%f\n",(i+1),str[i].name, str[i].age, str[i].set, str[i].number,str[i].score);    }}void fenshu(){    // 提示用户输入需要查询的学生分数    printf("请输入需要查询的学生分数\n");    double n = 0;    scanf("%lf",&n);    // 将这个分数找出    for (int i = 0,count = 0; i<100; i++)    {        // 如果数组的某一个元素分数与需要查找的元素分数相等        if (str[i].score == n)        {            // 打印这个学生元素的所有信息            printf("该学生的姓名是%s、年龄是%d、性别是%s、学号是%d、分数是%f\n",str[i].name, str[i].age, str[i].set, str[i].number,str[i].score);            --count;        }        ++count;        // 遍历每一个分数,如果找不到打印无此学生,返回查询        if (count==100)        {            printf("无此学生\n");            chaxun();        }    }    }void xingbie(){    // 提示用户输入需要查询的学生姓别    printf("请输入需要查询的学生姓别\n");    char n[10] = {0};    scanf("%s",n);    // 将这个姓别找出    for (int i = 0,count = 0; i<100; i++)    {        // 如果数组的某一个元素姓别与需要查找的元素姓别相等        if (strcmp(str[i].set, n) == 0)        {            // 打印这个学生元素的所有信息            printf("该学生的姓名是%s、年龄是%d、性别是%s、学号是%d、分数是%f\n",str[i].name, str[i].age, str[i].set, str[i].number,str[i].score);            --count;        }        ++count;        // 遍历每一个姓别,如果找不到打印无此学生,返回查询        if (count == 100)        {            printf("无此学生\n");            chaxun();        }    }    }void xingming(){    // 提示用户输入需要查询的学生姓名    printf("请输入需要查询的学生姓名\n");    char n[10] = {0};    scanf("%s",n);    // 将这个姓名找出    for (int i = 0, count = 0; i<100; i++)    {        // 如果数组的某一个元素姓名与需要查找的元素姓名相等        if (strcmp(str[i].name, n) == 0)        {            // 打印这个学生元素的所有信息            printf("该学生的姓名是%s、年龄是%d、性别是%s、学号是%d、分数是%f\n",str[i].name, str[i].age, str[i].set, str[i].number,str[i].score);            --count;        }        // 遍历每一个姓名,如果找不到打印无此学生,退出此功能        ++count;        if (count==100)        {            printf("无此学生\n");            chaxun();        }            }    }void xuehao(){    // 提示用户输入需要查询的学生学号    printf("请输入需要查询的学生学号\n");    int n = 0;    scanf("%d",&n);    // 将这个学号找出    for (int i = 0; i<100; i++)    {        // 如果数组的某一个元素学号与需要查找的元素学号相等        if (str[i].number == n)        {            // 打印这个学生元素的所有信息            printf("该学生的姓名是%s、年龄是%d、性别是%s、学号是%d、分数是%f\n",str[i].name, str[i].age, str[i].set, str[i].number,str[i].score);            break;        }        // 遍历每一个学号,如果找不到打印无此学生,退出此功能        else if (i == 99)        {            printf("无此学生\n");            chaxun();        }    }    }

8.

#import <Foundation/Foundation.h>#include <stdio.h>#include <string.h>int string_len(char *s){  //两种方法:第一种是遍历字符串,计数,第二种是利用strlen函数    /* int i;          for (i=0;s[i] != '\0';i++);//前边一直,出错,是因为这里少了一个分号;          return i;*/        int a=strlen(s);        return a;}int main(){    char name[1024];        printf("please input a sentence");        gets(name);        int c=string_len(name);        printf("字符串长度=%d",c);        return 0;}

9.

//输入字符串,将每个单词首字母变成大写再输出#import <Foundation/Foundation.h>#include <stdio.h>int main(){    char name[1024];//定义字符数组        printf("please input a sentence");        gets (name);//接收输入的字符串        if (name[0]>='a'&&name[0]<='z')//如果首字母是小写            {                name[0]=name[0]-32;//将首字母转化为大写    }        for (int i=1;name[i]!='\0';i++)//遍历字符串            {        if (name[i-1] ==' '&&name[i]>='a' && name[i]<='z')//如果该字符前一个字符为空格,且该字符为小写                    {            name[i]=name[i]-32;        }    }            printf("%s",name);        return 0;}

10.在键盘输入run,然后打印pao [str isEqualToString:@""]的用法

#import <Foundation/Foundation.h>int main(){    NSLog(@"please input a sentence");    char *sen;    scanf("%s",sen);        NSString *str = [NSString stringWithUTF8String:sen];        if ([str isEqualToString:@"run"])    {        NSLog(@"跑");    }    else if ([str isEqualToString:@"pao"])    {        NSLog(@"跑1");    }    else    {        NSLog(@"wrong input");    }                    return 0;}


0 0
原创粉丝点击