1.#include <stdio.h>
void main()
{
int i,j;
for(i=0;i<=3;i++)
for(j=0;j<=3;j++)
if(8-i-j<=6)
printf("红:%d 白:%d 黑:%d\n",i,j,8-i-j);
}
2.4
0+4
1+3
2+2;
5
0+5
1+4
2+3
include <stdio.h>
void main()
{
int data,i;
printf("请输入一个数:");
scanf("%d",&data);
for(i=0;i<=data/2;i++)
printf("%d+%d\n",i,data-i);
}
练习:有一个整型数组,含有10个元素,在整个数组中查找某一个值,找到了就给出这个值在数组中的位置,没有找到就输出"没有找到"
include <stdio.h>
void main()
{
printf("请输入10个数:");
int i,a[10],search;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
printf("请输入要找的值:");
scanf("%d",&search);
int flag=0;
for(i=0;i<10;i++)
{
if(search==a[i])
{
printf("%d\n",i+1);
flag++;
}
}
if(flag==0)
{
printf("没有找到!\n");
}
}
定义一个数组,里面升序排好了5个数,现在往其中插入某个数,使插入后的数组依然有序。
include <stdio.h>
void main()
{
int a[6]={1,3,5,7,9, },in,i,j;
printf("请输入要插入的数:");
scanf("%d",&in);
//1.找到要插入的位置
for(i=0;i<=4;i++)
{
if(a[i]>in)
break;//找到第一个比in大的元素结束循环,此时i即为in的下标号
}
//2.把原有数组中比插入的数大的元素往后挪一个位置
for(j=5;j>i;j--)//把插入点i之后的元素都往后挪一个位置
{
a[j]=a[j-1];
}
//3.把数插进入
a[i]=in;
for(i=0;i<6;i++)
{
printf("%d\n",a[i]);
}
}
include <stdio.h>
void main()
{
int a=5;
// &a; //表示a所代表的空间的地址
printf("%d\n",*(&a));
(&a)=3;//,表示一个地址里面的值
printf("%d\n",a);
}
指针变量:用来接受内存中的地址。
指针:地址。
定义一个指针变量:
例:要定义一个指针变量,用来接受一个整型变量的地址
int a;//得到整型变量 &a 整型变量的地址
int *p=&a; //定义一个接受整型变量的地址的变量。指针变量。取名指针变量因为它保存的是一个变量的地址,只要找到了该指针变量就能找到那个变量,像一个指针时刻指向那个变量
char c;
char *p=&c;//定义一个指向字符变量c的指针变量
整型变量数据类型:int
定义一个整型变量: int p; 用来接受一个整数: p=10;
小数变量数据类型:float
定义一个小数变量:float p;用来接受一个小数: p=1.2
字符变量的数据类型:char
定义一个字符变量:char p;用来接受一个字符:p='a'
指针变量数据类型:datatype*
定义一个接受整型变量的地址的指针变量:int p;
int a; p=&a;
定义一个接受小数变量的地址的指针变量:float p;
float a; p=&a;
定义一个接受字符变量的地址的指针变量:char* p;
char a; p=&a;
int p1,p2;y
int* p1,p2;x
include <stdio.h>
void main()
{
int a=5;
int p=&a;
p;
printf("p=%d p=%p\n",p,p);
}
include <stdio.h>
void main()
{
int a[5]={1,2,3,4,5};
int p;/
printf("a:%p &a[0]:%p\n",a,&a[0]);
printf("a+1:%p &a[0]+1:%p &a[1]:%p\n",a+1,&a[0]+1,&a[1]);*/
printf("&a=%p a=%p &a+1:%p a+1=%p\n",&a,a,&a+1,a+1);
}
/*
1.a:表示数组的首元素的首地址。
a+1:表示数组第二个元素的地址,+1,跨过指针所指向对象的一个长度,此处a作为指针所指向的对象是数组中的元素。
%p:输出一个地址的格式
3.指针的含义包含2方面:1.它的值(地址)
2.它指向的对象
2.&a:它的值是数组a的第一个元素的地址,但是作为一个指针,所指向的对象是整个数组,
&a+1:指针&a跨过一个&a所指向的对象,即从数组开头指向了数组最后,跨过整个数组
*/
include <stdio.h>
void main()
{
int a[5]={1,2,3,4,5};
int (*p)[5]=&a;
printf("%p\n",p);
}
/*
int a[5];//定义了一个int型的数组a,里面含有五个int型的元素
int a[5];//定义了一个int型的数组a,里面含有5个int型的元素,指针数组——指针的数组
int (a)[5];//定义了一个指向含有5个int型元素的数组的指针a.数组指针——数组的指针.
int (a)[5];//定义了一个指向含有5个int*型元素的数组的指针a.
*/
int a[5]={1,2,3,4,5};
a:1的地址
a+1:2的地址
&a:整个数组的地址==1的地址
&a+1:跳过该数组长度的地址
*a:1
*(a+1)=2
*&a<=>a
&a<=>a
int (p)[3]=a
include <stdio.h>
void main()
{
int a[5]={1,2,3,4,5};
int (p)[3]=(int ()[3])&a;
//左边:指针p指向含有3个int型元素的数组的指针
//右边:指针&a是一个指向含有5个int型元素的数组的指针,强制转换成指向一个含有3个int型元素的数组的指针。
printf("p=%d,p=%p,p+1=%p,(p+1)=%d\n",p,p,p+1,(p+1));
printf("p=%d (p+1)=%d\n",p,(p+1));
}
/*
int a[5];//定义了一个int型的数组a,里面含有五个int型的元素
int a[5];//定义了一个int型的数组a,里面含有5个int型的元素,指针数组——指针的数组
int (a)[5];//定义了一个指向含有5个int型元素的数组的指针a.数组指针——数组的指针.
int (a)[5];//定义了一个指向含有5个int*型元素的数组的指针a.
*/
网友评论