练习2-1
#include<stdio.h>
#include<time.h>
int sleep(unsigned long x)
{
clock_t c1=clock();
clock_t c2;
do
{
if ((c2 = clock()) == (clock_t)-1)
return 0;
} while ( ( 1000.0 * ( c2-c1 ) / CLOCKS_PER_SEC ) <x);
return 1;
}
int main()
{
int i;
clock_t c;
for ( i = 10; i > 0; i-- )
{
printf("\r%2d",i);
sleep(1000);
}
printf("\r \a FIRE!!\n");
c = clock();
printf("程序运行了%d个时钟数\n",c);//注意clock()函数的返回值是时钟数
printf("程序运行了%.1f秒\n",(double)c/CLOCKS_PER_SEC);//秒 单位需要 c/CLOCKS_PRE_SEC
}
练习2-2
/*****************************************/
//练习2-2
//从字符串开头逐一显示字符串
//函数 结构为 void gput(const char *s,int speed)
/*****************************************/
#include<stdio.h>
#include<time.h>
#include<string.h>
/*sleep函数 函数持续占用CPU,以达到延迟效果*/
int sleep(unsigned long x)
{
clock_t c1 = clock();
clock_t c2;
do
{
if ((c2 = clock()) == (clock_t)-1)
return 0;
} while ((1000.0 * (c2 - c1) / CLOCKS_PER_SEC) < x);
return 1;
}
/*gput函数 从字符串开头逐一显示字符*/
void gput(const char *s, int speed)
{
for (int i = 0; i < (int)strlen(s); i++)
{
putchar('\r');
putchar(s[i]);
sleep(speed);
}
}
/******************主函数部分******************/
int main()
{
gput("ABC", 1000);
}
练习2-3
//初次尝试写头文件,值得注意的一点是头文件的引用应该用" "双引号,因为其不在标准库函数中
#include<stdio.h>
#include<time.h>
int sleep(unsigned long x)
{
clock_t c1 = clock();
clock_t c2;
do
{
if ((c2 = clock()) == (clock_t)-1)
return 0;
} while ((1000.0 * (c2 - c1) / CLOCKS_PER_SEC) < x);
return 1;
}
/***********************************************/
//练习2-3
//闪烁显示字符串函数
//函数 结构为 void bput(const char *s, int d, int e,int n)
/***********************************************/
#include<stdio.h>
#include"sleep.h"
#include<string.h>
/*bput函数 闪烁显示字符串*/
void bput(const char *s, int d, int e, int n)
{
for (int i = 0; i < n; i++)
{
putchar('\r'); //让光标移动到行前端
printf("%s",s);
sleep(d);
putchar('\r');//再次让光标移动到前端
for (int j = 0; j < (int)strlen(s); j++)//输处相应字符长度的空格 覆盖文字
{
putchar(' ');
}
sleep(e);
putchar('\r'); //让光标移动到行前端
printf("%s", s); //最后一个输出是为了保证在程序结束后字符串显示
}
}
/*主函数*/
int main()
{
char s[] = "ABCDEFG";
int d = 1000;
int e = 1000;
int n = 3;
bput(s,d,e,n);
}
//练习2-4
/***********************************************/
//练习2-4
//字幕显示字符串
//函数 结构为 void telop(const char *s, int direction, int speed,int n)
/***********************************************/
#include<stdio.h>
#include"sleep.h"
#include<string.h>
/*字幕显示字符串的函数*/
void telop(const char *s, int direction, int speed, int n)
{
if (direction == 0)
{
int cnt = 0;
for (int j = 0; j < n; j++)
{
putchar('\r');
for (int i = 0; i < (int)strlen(s); i++)
{
if (cnt + i < (int)strlen(s))
putchar(s[cnt + i]);
else
putchar(s[cnt + i - strlen(s)]);
}
sleep(speed);
if (cnt < strlen(s) - 1)
cnt++;
else
cnt = 0;
}
}
else
{
int cnt = 0;
for (int j = 0; j < n; j++)
{
putchar('\r');
for (int i = 0; i < (int)strlen(s); i++)
{
if (cnt + i < (int)strlen(s))
putchar(s[cnt + i]);
else
putchar(s[cnt + i - strlen(s)]);
}
sleep(speed);
if (cnt > 0)
cnt--;
else
cnt = (int)strlen(s) - 1;
}
}
}
int main()
{
char s[] = "ABCDEFG ";
int direction;
int speed;
int n;
printf("请输入字幕滚动方向(0---从右向左、1---从左向右):"); scanf_s("%d",&direction);
printf("请输入字幕的滚动的速度:"); scanf_s("%d",&speed);
printf("请输入想要循环的次数:"); scanf_s("%d",&n);
telop(s,direction,speed,n);
}
个人总结:整体编码的水平还是太差,逻辑不清晰。
结合最近上的软件工程的课程,要学会函数功能模块的划分。
多写代码,多做项目