91、时间函数举例1
程序分析:
无。
参考代码:
#include <stdio.h>
#include <time.h>
int main ()
{
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ( "当前本地时间为: %s", asctime (timeinfo) );
return 0;
}
运行结果:
当前本地时间为: Wed Apr 20 09:03:40 2022
92、时间函数举例2
程序分析:
无。
参考代码:
#include <stdio.h>
#include <time.h>
int main()
{
time_t start,end;
int i;
start=time(NULL);
for(i=0; i<300000; i++)
{
printf("\n"); // 返回两个time_t型变量之间的时间间隔
}
end=time(NULL);
// 输出执行时间
printf("时间间隔为 %6.3f\n",difftime(end,start));
}
运行结果:
此处打印n行空格。。。 时间间隔为 40.000
93、时间函数举例3
程序分析:
无。
参考代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
long i=10000000L;
clock_t start,finish;
double TheTimes;
printf("做%ld次空循环需要的时间为",i);
start=clock();
while(i--);
finish=clock();
TheTimes=(double)(finish-start)/CLOCKS_PER_SEC;
printf("%f秒。\n",TheTimes);
return 0;
}
运行结果:
做10000000次空循环需要的时间为0.020000秒。
94、猜谜游戏。
程序分析:
无。
参考代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void caizi(void)
{
int n;
char begin;
int count = 1;
srand((int)time(NULL));
int m = (rand() % 100) + 1;
puts("游戏开始,请输入数字:");
while (1)
{
scanf("%d", &n);
if (n == m)
{
printf("猜中了,使用了 %d 次!\n", count);
if (count == 1)
{
printf("你是神级人物了!膜拜\n");
getchar();
printf("你已经达到最高级别,还需要玩吗?Y/N \n");
scanf("%c", &begin);
if (begin == 'Y' || begin == 'y') //重复玩的一个嵌套循环
{
caizi();
}
else
{
printf("谢谢,再见!\n");
}
}
else if (count <= 5)
{
printf("你是王级人物了!非常赞\n");
getchar();
printf("需要挑战最高级别不?Y/N \n");
scanf("%c", &begin);
if (begin == 'Y' || begin == 'y')
{
caizi();
}
else
{
printf("谢谢,再见!\n");
}
}
else if (count <= 10)
{
printf("你是大师级人物了!狂赞\n");
getchar();
printf("需要挑战最高级别不?Y/N \n");
scanf("%c", &begin);
if (begin == 'Y' || begin == 'y')
{
caizi();
}
else
{
printf("谢谢,再见!\n");
}
}
else if (count <= 15)
{
printf("你是钻石级人物了!怒赞\n");
getchar();
printf("需要挑战最高级别不?Y/N \n");
scanf("%c", &begin);
if (begin == 'Y' || begin == 'y')
{
caizi();
}
else
{
printf("谢谢,再见!\n");
}
}
else
{
getchar();
printf("你的技术还有待提高哦!重玩?Y/N\n");
scanf("%c",&begin);
if (begin == 'Y' || begin == 'y')
{
caizi();
}
else
{
printf("谢谢,再见!\n");
}
}
break;
}
else if (n < m)
{
puts("太小了!");
puts("重新输入:");
}
else
{
puts("太大了!");
puts("重新输入:");
}
count++;//计数器
}
}
int main(void)
{
caizi();
system("pause");
return 0;
}
运行结果:
游戏开始,请输入数字: 25 太大了! 重新输入: 10 太小了! 重新输入: 13 太大了! 重新输入: 11 猜中了,使用了 4 次! 你是大师级人物了!狂赞 需要挑战最高级别不?Y/N N 谢谢,再见!
95、简单的结构体应用实例。
程序分析:
无。
参考代码:
#include <stdio.h>
struct programming
{
float constant;
char *pointer;
};
int main()
{
struct programming variable;
char string[] = "IT学长:http://cyouagain.cn";
variable.constant = 1.23;
variable.pointer = string;
printf("%f\n", variable.constant);
printf("%s\n", variable.pointer);
return 0;
}
运行结果:
1.230000 IT学长:http://cyouagain.cn
96、计算字符串中子串出现的次数 。
程序分析:
无。
参考代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int i,j,k,TLen,PLen,count=0;
char T[50],P[10];
printf("请输入两个字符串,以回车隔开,母串在前,子串在后:\n");
gets(T);
gets(P);
TLen=strlen(T);
PLen=strlen(P);
for(i=0; i<=TLen-PLen; i++)
{
for(j=0,k=i; j<PLen&&P[j]==T[k]; j++,k++)
;
if(j==PLen)
count++;
}
printf("%d\n",count);
system("pause");
return 0;
}
运行结果:
请输入两个字符串,以回车隔开,母串在前,子串在后: abcac c 2
97、从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。
程序分析:
无。
参考代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE*fp=NULL;
char filename[25];
char ch;
printf("输入你要保存到的文件的名称:\n");
gets(filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("error: cannot open file!\n");
exit(0);
}
printf("现在你可以输入你要保存的一些字符,以#结束:\n");
//getchar();
while((ch=getchar())!='#')
{
fputc(ch,fp);
}
fclose(fp);
system("pause");
return 0;
}
运行结果:
输入你要保存到的文件的名称: cyouagain.txt 现在你可以输入你要保存的一些字符,以#结束: cyouagain.cn IT学长 #
执行完程序后,在c文件目录下生成 cyouagain.txt:
cyouagain.txt 文件中的内容如下:
98、从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。输入的字符串以!结束。
程序分析:
无。
参考代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
FILE*fp=NULL;
char str[50];
int i,len;
printf("输入一个字符串:\n");
gets(str);
len=strlen(str);
for(i=0; i<len; i++)
{
if(str[i]<='z'&&str[i]>='a')
str[i]-=32;
}
if((fp=fopen("test","w"))==NULL)
{
printf("error: cannot open file!\n");
exit(0);
}
fprintf(fp,"%s",str);
fclose(fp);
system("pause");
return 0;
}
运行结果:
输入一个字符串: cyouagain.cn
执行完程序后,在c文件目录下生成 test 文件:
test 文件中的内容如下:
99、有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。
程序分析:你需要先创建 A.txt 与 B.txt。
程序分析:
在c文件目录下创建 A.txt 与 B.txt。A.txt中的内容为:123,B.txt中的内容为:abc,然后运行程序。
A、B文件中的内容:
参考代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
FILE*fa,*fb,*fc;
int i,j,k;
char str[100],str1[100];
char tem;
if((fa=fopen("A.txt","r"))==NULL) // A.txt 文件需要存在
{
printf("error: cannot open A file!\n");
exit(0);
}
fgets(str,99,fa);
fclose(fa);
if((fb=fopen("B.txt","r"))==NULL) // B.txt 文件需要存在
{
printf("error: cannot open B file!\n");
exit(0);
}
fgets(str1,100,fb);
fclose(fb);
strcat(str,str1);
for(i=strlen(str)-1; i>1; i--)
for(j=0; j<i; j++)
if(str[j]>str[j+1])
{
tem=str[j];
str[j]=str[j+1];
str[j+1]=tem;
}
if((fc=fopen("C.txt","w"))==NULL) // 合并为 C.txt
{
printf("error: cannot open C file!\n");
exit(0);
}
fputs(str,fc);
fclose(fc);
system("pause");
return 0;
}
运行结果:
执行完程序后,在c文件目录下生成 C.txt。
C.txt 文件中内容:
100、有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
程序分析:
无。
参考代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int ID;
int math;
int English;
int C;
int avargrade;
char name[20];
} Stu;
int main()
{
FILE*fp;
Stu stu[5];
int i,avargrade=0;
printf("请输入5个同学的信息:学生号,姓名,3门成绩:\n");
for(i=0; i<5; i++)
{
scanf("%d %s %d %d %d",&(stu[i].ID),stu[i].name,&(stu[i].math),&(stu[i].English),&(stu[i].C));
stu[i].avargrade=(stu[i].math+stu[i].English+stu[i].C)/3;
}
if((fp=fopen("stud","w"))==NULL)
{
printf("error :cannot open file!\n");
exit(0);
}
for(i=0; i<5; i++)
fprintf(fp,"%d %s %d %d %d %d\n",stu[i].ID,stu[i].name,stu[i].math,stu[i].English,
stu[i].C,stu[i].avargrade);
fclose(fp);
// system("pause");
return 0;
}
运行结果:
请输入5个同学的信息:学生号,姓名,3门成绩: 1 a 60 70 80 2 b 60 80 90 3 c 59 39 89 4 e 56 88 98 5 d 43 88 78
执行完程序后,在c文件目录下生成 stud 文件,内容如下。