A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 勇猛的小黑 中级黑马   /  2015-11-7 16:29  /  1022 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、用while循环控制上下左右  AaWwSsDd   wasd 上下左右
2、统计键盘输入一行字符字母的个数;
3、弄一个1到1000的随机数,猜十次看是否猜对 arc4random_uniform(1000) 在0到1000之间产生随机整数(包括0不包括1000)
4、打印正三角倒三角
*
**
***

***
**
*
5、for循环打印九九乘法表
6、打印正三角形
  *
***
*****
思路:先打印空格,然后根据规律打印※
        2空格1星
        1空格3星
        0空格5星
7、吧100到二百之间不能被3整除的数输出。
8、用递归发求n的阶乘:

分析:n! = (n-1)!*n
                (n-1)! = (n-2)*(n-1)
<stdio.h>
int main(int argc,const *args[]){
        int ChengJi(int n);
        int a = ChengJi(5);
        printf("%d",a);
        return 0;
}

int ChengJi(int n){
        int sum = 1;
        if(n == 1){
                sum = 1;
        }else{
                sum =ChengJi(n-1)*n;
        }
        return sum;
}
9、实现x的y次方。

<stdio.h>
int main(int argc,const *args[]){
        int ChengJi(int x,int y);
        int a = ChengJi(2,4);
        printf("%d",a);
        return 0;
}

int ChengJi(int x,int y){
        int sum = 1;
        if(y == 1){
                sum = x;
        }else{
                sum =ChengJi(x,y-1)*x;
        }
        return sum;
}
10、敲一下函数的调用。声明,自己创建头文件
11、计算-13 的原码、反码、补码。
        根据求余法则,可以由13的十进制得到二进制,
        13/2  =  6   余  1
        6/2   =  3   余  0
        3/2   =  1   余  1
        1/2   =  0   余  1     那么13 的二进制就是1101
       
        原码:1000 0000 0000 0000 0000 0000 0000 1101
        反码:1111 1111 1111 1111 1111 1111 1111 0010
        补码:1111 1111 1111 1111 1111 1111 1111 0011
12、编写一个函数把一个10进制数按照二进制格式输出。
13、判断一个数的奇偶性
14、不使用其他变量交换两个变量的值
        第一种方法;
        int a =1 ; int b = 2;
        a = a+b;
        b = a-b;
        a = a-b;
        第二种方法(根据二进制看就可得到结果。)
        a =a^b;
        b =a^b;
        a = a^b;
15、从键盘输入数组长度,通过for循环给数组赋值,并使用for循环输出查看。
16、判断十个数的最大值。
        假设第一个是最大的定义为max    依次跟 a[i] 作比较。如果小于a[i]则跟a[i]交换位置。
17、数组a中存放了五门成绩,求平均值,要求调用函数直接把数组当做实参。
18、输入一组无序数据,使用冒泡排序法进行排序并输出。
19、输入一组无序数据,使用选择排序法进行排序并输出。
20、输入一组有序数据折半查找数据。
21、使用折半查找法插入一个数据,输出数据的位置。
22、求二维数组里边的最大值,并输出其在数组的下标。即a[i][j]  i、j分别是多少。
23、从键盘上接受两个参数分别存放到m,n中,使用m和n构成数组。
        ①定义一个函数使用i*j初始化a[i][j];
        ②定义一个函数打印二维数组的每一个值。
24、迷宫游戏的代码实现。
        注意事项:输入方向之后,会重新打印地图,为了防止打印两遍地图,可以利用
                char ch ;
                scanf("%c",ch);//此处吸收代码可用方法getchar();来代替。此方法就是用来获取缓冲区中的某一个字符。
                此代码来吸收缓冲区中的回车(\n);
25、计算数组长度。
        不指定数组长度的初始化。
        使用while  根据结束标志才计算长度。
26、使用gets()从键盘输入字符串,判断有多少个单词,并将每个单词首字符大写输出。
        eg: asdf        aafdasf  asd
        思路:
                写一个for循环,依次获取字符,
                里边写if语句,如果拿到空格,定义一个变量,让变量a取值为0。
                然后继续取值,else if a为0,这时候让count++  这时候单词个数加一。防止多空格问题。
                在令a[i] -= 32;  让首字母变成大写。
                代码:
                for(int i=0;str[i]!='\n';i++){
                        if(str[i] == ' '){
                                word = 0;
                        }else if(word != 0){
                                count++;
                                str[i] -= 32;
                        }
                }
27、思考指针:       
                感觉指针变量里边存的是某个内存空间的首地址,然后根据指针类型自动往后取字节(比如指针类型是int  指针从首地址开始往后取四个字节。)   哈哈哈哈 感觉是对的。
                就有以下问题:指针为什么要区分类型
                                因为系统要根据指针是什么类型,来决定从首地址开始往后取几个字节。
                写程序:int a = 2;
                                int *p = &a;
                                sizeof("*d",p);//看看指针p的长度是不是8(因为64位系统中地址的长度是8)
28、用函数实现两个变量值得交换。
        #include <stdio.h>
       
        void swap(int a,int b){
                int temp;
                temp = a;
                a = b;
                b = temp;
        }
        void swap1(int *p,int *p1){
                int *temp;
                temp = p;
                p = p1;
                p1 = temp;
        }
        void swap2(int *p,int *p1){
                int temp;
                temp = *p;
                *p = *p1;
                *p1 = temp;
        }
        int main(int argc,const char * argv[]){
                int a = 4;
                int b = 5;
                swap(a,b);                // 这个方法明显不行,因为只是a,b只是把值传过去了。没有交换主函数中a,b的值。
                swap1(&a,&b);        //这个高级一点,把a,b的地址传过去了。但是只是交换了地址,等到}(大括号),系统中的内存直接释放了没什么卵用
                swap2(&a,&b);        //这个可以交换,把a,b的地址传过去,然后用*p把p对应的地址的内容做操作。这个就可以交换a,b的值了。
                printf("交换前a= %d,b = %d",a,b);
                printf("交换后a= %d,b = %d",a,b);
               
        }
29、用指针将数组a中n个整数按相反顺序存放。

        #include <stdio.h>
       
        int main(int argc,const char * argv[]){
                int a[] = {1,2,3};
                int b[3];
                int *p = a;
                for(int i=0;i<=3/2;i++){
                        int temp;
                        temp = *p;
                        *p = *(p+(3-i));
                        *(p+(3-i)) = temp;
                }
        }

30、用行指针,列指针分别遍历一遍二维数组。

31、推箱子游戏。
        1、定义数组存放地图
        2、计算位置:小人、箱子及他们下一个位置
        3、保存小人、箱子位置
        4、开始移动
32、输入5个字符串并按字母顺序排列后输出。
        用到函数。 strcmp  比较两个字符串大小。
        利用双层for循环。

1 个回复

倒序浏览
已看到递归。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马