函数传值中的值传递对初始值是不产生任何影响(不管另一个函数的值改不改变),地址传值对初始值产生影响(如果另一个函数中的值会改变的话)。
#include<stdio.h>
void add(int a,int b){
// a=1000;
a=a+1;
printf("%d\n",a);
}
void sub(int *a,int *b){
*a=10000;
}
int main()
{
int a=10,b=100;
add(a,b);
printf("%d\n",a);
sub(&a,&b);
printf("%d\n",a);
return 0;
}
a=11 a=10 a=1000
函数返回值(gcc---函数必须自己声明,gcc声明把所有的函数的返回值设为int)(多文件编程)a.c b.c gcc -o a a.c b.c
strcpy复制 char name[10]; strcpy(name,"abc");
strcmp字符串比较 strcmp("abc","abd")==0;
strlen计算字符串长度 strlen("arcad");
strstr 字符串查找 strstr("google","oo");
strcat 字符串拼接 strcat("adada","dadad");
函数递归:函数就是不断调用自己,递归一般用来处理有规律的数据。,例如:斐波那契数列
int fun(int i){
if(i==0) return0;
return fun(i-1);
}
时间库函数:
获取当前时间:time_t time(time_t *tloc);
把时间转换为字符串输出: cahr * ctime(const time_t *clock);
把秒时间转换成时间结构: struct tm *gmtime(const time_t *clock);世界时间
获取微秒时间:int gettimeofday(struct timeval* restrict tp,void rrestrict tzp);
取随机数
#include<stdlib>
long random(void);
void srandom(unsigned seed);
随机数的获取
struct timeval tval
gettimeofday(&tval,NULL);
srandom(tval.tv_usec);
printf("%d",random()%100);
猜数字,输入一个数字,如果猜错了继续猜,并且说明比猜的数小还是大,再次输入进行比较,直到猜对为止,并且计算开始到猜对的时间。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <sys/time.h>
static long randomnumber;
static long inputnumber;
int sum;
int mend;
int mstart;
int inputnumbers(){
printf("请输入一个数:");
scanf("%ld",&inputnumber);
return 0;
}
int compare(long rn,long in){
if (rn>in) {
printf("猜小了,请重新输入\n");
inputnumbers();
// compare(randomnumber,inputnumber);
}
else
{
printf("猜大了,请重新输入\n");
inputnumbers();
// compare(randomnumber,inputnumber);
}
if (rn==in) {
printf("猜对了\n”);
time_t t1;
struct tm *gt1=gmtime(&t1);
mend=gt1->tm_min;
sum=mend-mstart;
printf("%d\n",sum);
return 0;
}
return compare(rn,inputnumber);
}
int main(){
time_t t;
struct tm *gt=gmtime(&t);
mstart=gt->tm_min;
printf("%d\n",mstart);
inputnumbers();
struct timeval tval;
gettimeofday(&tval,NULL);
srandom(tval.tv_usec);
randomnumber=random()%100;
printf("随机数为:%ld\n",randomnumber);
compare(randomnumber,inputnumber);
}