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循环。
|
|