C语言实验 第四课
统计单词 输入一行字符,统计其中有多少个单词,单词之间用一个或多个空格分隔开。 例如运行时输入:I am a boy. 运行结果:There are 4 words in the line.
思路 读取一个字符串 判断单词的数量
思路 读取一个字符串,解决方法有哪几种? scanf(“%s”,str); for(i=0;i<100;i++) scanf(“%c”,str[i]); gets(str); 这三种方法都可以吗?
思路 判断单词的数量,如何解决 开拓思路,不拘一格 常见的错误 1.直接数空格 2.忽略开头有空格的情况 3.忽略结尾有空格的情况 _a__bb___ccc_
程序片段 #include<stdio.h> void main( ) { char string[81]; int i, num=0,flag=0; char c; gets(string); for(i=0;(c=string[i])!='\0';i++) if(c==' ')flag=0; else if(flag==0) flag=1; num++; } printf("There are %d words in the line.\n",num);
抽奖游戏 用一个数组存放班上45个同学的学号或者电话号码(可虚构),编写一个抽奖的软件。 要求:按下回车键屏幕上开始快速滚动;再次按下回车键停止滚动,所显示的号码就是中奖号。
思路 按下回车键开始 电话号码滚动的效果 按下回车键结束
思路 按下回车键开始滚动 getchar( )函数读取当前输入的值,如果是回车就开始滚动,否则继续读取键盘输入。 用while(getchar()!='\n'); 来实现,当输入的值不是回车就重复输入,输入回车的时候while循环结束,继续执行下面的程序。
滚动效果 随机选择一个数 显示随机数对应这个同学的电话号码,判断是否停止,如果否则擦除这个号码,重新选择随机数并显示。 rand( )函数 某个范围(a,b)内的随机数怎么表示? 显示随机数对应这个同学的电话号码,判断是否停止,如果否则擦除这个号码,重新选择随机数并显示。 putchar('/r'); 循环+选择
思路 再次按下回车键停止滚动 kbhit( )函数 能直接使用getchar( )函数吗? 执行getchar()函数和scanf()函数时程序都会停止运行来等待键盘的输入,必须要按下一个键程序才会继续往下。 kbhit( )函数 检测键盘是否有键按下。 如果有键按下,则返回对应键值;否则返回零。 使用while(!kbhit())来控制循环,如果按下了键while循环结束,然后使用c=getchar()来读取用户刚才按的这个键,判断是否回车。 如果是回车就直接在屏幕上输出中奖信息,否则用goto语句重新开始一个while循环。
程序片段 printf("Please press enter to start\n"); printf("And press enter again to stop\n"); srand(time(NULL)); while(getchar()!='\n'); lab1: while(!kbhit()) { putchar('\r'); i=rand()%50; for(j=0;j<11;j++) putchar(phone[i][j]); } c=getchar(); if(c!='\n') goto lab1; else printf("Congratulations!\n");