【C语言刷题1】-创新互联
1. 获取字符串长度写了几道和字符串指针有关的编程题,和大家分享一下
成都创新互联公司长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为汉中企业提供专业的成都网站设计、成都网站建设、外贸网站建设,汉中网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
思路:
[1]获取字符串
会发现相当于实现strlen函数的功能, 如果使用scanf通过占位符%s输入会导致遗漏空格,如果字符串中含有空格就会导致错误,因此我们通过指针用循环的方式获取字符串
char ch[20];
char* m=ch; //指向字符数组ch的首元素
while((*m=getchar())!=EOF)//当考虑空格输入时用while循环,循环终止条件EOF当输入\n时满足
{
m++;
}
*(m-1)='\0';//在字符串末尾放入\0方便后续计算字符串长度
[2]计算字符串长度
定义一个新的指针指向字符串首元素,指针++往后遍历整个字符串,直到遇到字符串结束标志'\0'为止
代码实现:#includeint main()
{
int a=0;
char ch[20];
char* m=ch; //指向字符数组ch的首元素
while((*m=getchar())!=EOF)//当考虑空格输入时用while循环,循环终止条件EOF当输入\n时满足
{
m++;
}
*(m-1)='\0';
char* x=ch;
while (*x!='\0')
{
x++;
a++;
}
printf("%d",a);
return 0;
}
2.复制部分字符串思路:通过一个指针找到开始复制的第一个字符,然后遍历字符串,并将每个字符依次复制
代码实现:
#includeint main()
{
int m=0,i=0;
char ch1[30];
char ch2[30];
scanf("%s",ch1);
scanf("%d",&m);
char* str=ch1;
str+=m-1;
while((*str)!='\0')
{
ch2[i++]=*str;
str++;
}
ch2[i]='\0';
printf("%s",ch2);
return 0;
}
3. 思路:通过之前的方式获取整个字符串,然后设立一个指针从头开始遍历整个字符串,另外定义一个整形变量统计字符数量,如果遇到空格指针++,如果不是空格指针++同时整形变量++
代码实现:
#includeint main() {
char ch[20];
char* str=ch;
while((*str=getchar())!=EOF)
{
str++;
}
*(str-1)='\0';
char* x=ch;
int a=0;
while(*x!='\0')
{
if(*x==' ')
x++;
else
{
x++;
a++;
}
}
printf("%d",a);
return 0;
}
4.思路:为了实现多组输入,用while循环,scanf输入放在循环条件部分,循环条件为输入scanf()!=EOF,再根据字符串比较大小函数strcmp()比较判断用户名和密码是否正确
代码实现:
#include#includeint main() {
char ch1[10],ch2[10];
while(scanf("%s %s", ch1, ch2)!=EOF)
{
if (strcmp(ch1, "admin") == 0 && strcmp(ch2, "admin") == 0)
printf("Login Success!\n");
else
printf("Login Fail!\n");
}
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享标题:【C语言刷题1】-创新互联
网页网址:http://ybzwz.com/article/cecgdd.html