编程题:
希望大家copy之前还是自己先想一想哈
随机构造50个句子
使用4个名为article(冠词),noun(名词),verb(动词),preposition(介词)的指向字符串的指针数组。
数组article包含“the”,“a”,“one”,“some”和“any”;数组noun包含“boy”,“girl”,“dog”,“town”和“car”;数组verb包含“drove”,“jumped”,“ran”,“walked”和“skipped”;数组preposition包含“to”,“from”,“over”,“under”和“on“。
程序按如下顺序、随机地从每个数组中挑选一个单词来构造句子:article,noun,verb,preposition,article和noun。每个句子的第一个字母大写,句子以句号结束。
在开始之前,我们对于字母转为大写做一个解析
**方法一:(原来的方法) **
但是不推荐,毕竟咋都学用于字符串和字符处理的标准库函数
final_sentence[0] -= 32; //因为我们知道大小写字符之间ASCII码值插值为32
方法二:(调用ctype头文件里面的toupper函数)
final_sentence[0] = toupper(final_sentence[0]); //实现将首字母转换为大写
- OK,既然都说到这里了我们顺便提一下ctype里面的一些好用的东西
图片来源菜鸟教程
曾经有一周我们老师曾给我们说过这样一道题目
==敲黑板重点 ==
输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
- 曾经我们是这样做滴
或者也可以把里面的字符改为其ASCII码
#include<stdio.h>
int main()
{
int is_letter = 0,is_number = 0,is_blank = 0,others = 0,c; //分别为字母、数字、空格、其他
while((c = getchar()) != '\n'){
if(c >= 'A' && c<='Z' || c >= 'a' && c <= 'z') //判断是否为字母
is_letter++;
else if(c >= '0' && c <= '9') //判断是都为数字
is_number++;
else if(c == ' ') //判断是否为空格
is_blank++;
else //其他
others++;
}
printf("%d %d %d %d\n",is_letter,is_number,is_blank,others);
return 0;
}
现在使用ctype中的库函数实现这个程序
#include <stdio.h>
#include <ctype.h>
int main()
{
int is_letter = 0,is_number = 0,is_blank = 0,others = 0,c; //分别为字母、数字、空格、其他
while((c = getchar()) != '\n'){
if(isalpha(c)) //判断是否为字母
is_letter++;
else if(isdigit(c)) //判断是都为数字
is_number++;
else if(c == ' ') //判断是否为空格
is_blank++;
else //其他
others++;
}
printf("%d %d %d %d\n",letter,number,blank,others);
return 0;
}
是不是一下子就简单了许多
okk,现在附上本节课课后作业实现代码!!!
- 当然在这之前我还想给大家分享一下C 语言中的字符串指针
曾经我们是使用字符数组去实现这样一个过程
char str[] = "豪哥哥最帅啦";
- 然后一步一步加深
***我们也可以用指针的方式来输出字符串***
char str[] = "豪哥哥最帅啦";
char *pstr = str;
最后就是我们的主题啦
***(用一个指针指向字符串)***
char *str = "豪哥哥最帅啦";
或者像下面这样
char *str;
str = "豪哥哥最帅啦";
okk是不是想起来一些什么了呢!!!
(看我一眼)字符串中的所有字符在内存中是连续排列的,str 指向的是字符串的第 0 个字符;
OKK,实现代码来啦!!!!!!
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<time.h>
int suiji(int *,int *,int *,int *); //这个函数实现随机数的生成
int main()
{
const char* artical[5] ={"the","a","one","some","any"};
const char* noun[5]={"boy","girl","dog","town","car"};
const char* verb[5]={"drove","jumped","ran","walked","skipped"};
const char* preposition[5]={"to","from","over","under","on"};
char final_sentence[50];
int w,z,s,q;
int i;
srand(time(NULL));
for(i=0;i<50;i++)
{
suiji(&w,&z,&s,&q);
strcpy(final_sentence,artical[w]);
strcat(final_sentence," ");
strcat(final_sentence,noun[z]);
strcat(final_sentence," ");
strcat(final_sentence,verb[s]);
strcat(final_sentence," ");
strcat(final_sentence,preposition[q]);
strcat(final_sentence," ");
a = rand() % 5;
n = rand() % 5;
strcat(final_sentence,artical[w]);
strcat(final_sentence," ");
strcat(final_sentence,noun[z]);
strcat(final_sentence,".");
final_sentence[0] = toupper(final_sentence[0]);
puts(final_sentence);
}
}
int suiji(int *w,int *z,int *s,int *q)
{
*w = rand() % 5;
*z = rand() % 5;
*s = rand() % 5;
*q = rand() % 5;
}