01
#include <stdio.h>
int main()
{
char *s1[] = {"right?"};
// 系统会根据数据总个数和第2维的长度算出第1维的长度
char s2[][20] = {"right"};
// 存放着 6 个指针变量的一位数组
char *s3[6];
s3[1]="right";
char s4[6][20];
// 报错,s4[1] 是一个地址
s4[1]="right";
return 0;
}
02
#include <stdio.h>
int main()
{
int x;
float y;
scanf("%2d%f",&x,&y);
printf("x=%d,y=%f\n",x,y);
}
执行结果
03
#include <stdio.h>
int ADD(int x, int y)
{
return x+y;
}
int main()
{
int k,x=5,y=10;
// 定义指向函数的指针变量 f,f先与*结合,表示指针变量,再与()结合,()表示是函数,即该指针变量指向函数
int (*f)();
f=ADD;
k=(*f)(x,y);
k=ADD(x,y);
// 报错,指针型函数int *func(int x,float y),返回值是地址
k=*f(x,y);
k=f(x,y);
}
04 计算 n!
#include <stdio.h>
int main()
{
int n=3,i,sum=1;
for(i=n;i>=2;i--){
sum*=i;
}
printf("%d\n",sum);
}
05
#include <stdio.h>
int main()
{
// s1 无字符串结束符,长度不能确定;s2长度为数组元素的个数
char s1[]={'x','y','z'}, s2[10]={'x','y','z'};
// strlen(s)返回s字符串中字符的个数,若s是一个数组,则返回数组元素的个数
printf("%d %d\n",strlen(s1),strlen(s2));
}
执行结果:
06
#include <stdio.h>
int main()
{
float a=123.4567;
// (12345.67+0.5)/100=123.46
printf("%f\n",(int)(a*100+0.5)/100.0);
}
执行结果:
07
#include <stdio.h>
int main()
{
int a=3;
do{
// %3d:输出最小域宽为3个字符的整数
// a=3-2=1,1--=0,a=0-2=-2
printf("%3d\n",a-=2);
}while(!(--a));
return 0;
}
执行结果:
08
#include <stdio.h>
struct num{
int x;
int y;
}n={1,3};
int main()
{
struct num *p=&n;
// 3/1=3 3*4=12
int result = p->y/n.x*++p->y;
// 执行结果:12
printf("%\n",result);
return 0;
}
09
#include <stdio.h>
int A[3][3] = {1,2,3,4,5,6,7,8,9},*p;
main()
{
p = (int*)malloc(sizeof(int));
FUN(p,A);
// 执行结果:5
printf("%d\n",*p);
}
int FUN(int *r,int p[][3])
{
*r=p[1][1];
return 0;
}
10 写程序输出以下方阵
13 14 15 16
9 10 11 12
5 6 7 8
1 2 3 4
#include <stdio.h>
int main()
{
int i,j,x;
for(j=4;j>0;j--){
for(i=1;i<=4;i++){
// 列:3*4+1,2*4+1,1*4+1,0*4+1
x=(j-1)*4+i;
printf("%4d",x);
}
printf("\n");
}
}