解题思路:
gets函数的原型是char * gets(char *s);当读取成功的时候返回s,所以这个程序里p的值是和a的值相同的。当gets读取发生错误时返回NULL
while(gets(a))就是只要a能读取成功就一直循环
这样我们就完成了循环的步骤
之后,创建函数,实现出现空格后,把空格后的所有字符向前移一位,从而实现清除空格的效果
不过,需要注意的是,当吧所有字符向前移动一位后,最后一位字符却没有消失
比如:1 2 3 3 4 5 6 7 8 9 把这个数组从第二个3开始向前移动一位
那就是 1 2 3 4 5 6 7 8 9 9 ,就是把后一个赋值给前一个,不过这样的话,最后有一个值是重复的,那就要把最后一个值给设置成结束,也就是'\0'
参考代码:
#include <stdio.h> #include <string.h> void fun(char a[]) { int i, j; for (i = 0; i < strlen(a); i++) { if (a[i] == ' ') { for (j = i; j < strlen(a) - 1; j++) a[j] = a[j + 1]; a[j] = '\0'; } } } int main() { char a[101]; while (gets(a)) { fun(a); puts(a); } return 0; }
0.0分
43 人评分
#include<stdio.h> #include<string.h> int main() { char a[100]; while (gets(a)) { ga(a); puts(a); } return 0; } void ga(char a[100]) { int len,k=0; len=strlen(a); for(int i=0;i<len;i++) { if(a[i]==' ') { k=i; for(k;k<len;k++) { a[k]=a[k+1]; } } } }
#include<stdio.h> int main() { char n; while(~(scanf("%c",&n))) { if(n=='\n') printf("\n"); else if(n==' ') printf(""); else printf("%c",n); } return 0; }
这题用continue行吗?
黄科大20级网攻刘盼成 2022-01-13 16:40:07 |
这个如果有两个连续的空格不是就不行了吗?
DAILAO 2022-12-25 20:44:23 |
两个连续的其实也可以的 我拿continue做的但是最后没通过 再电脑上可以运行的
春风十里 2023-02-11 21:19:11 |
可以的
#include <stdio.h> #include <string.h> void fun(char a[]){ int j,n,i; n=strlen(a); for(i=0;i<n;i++) { if(a[i]==' ') { for(j=i;j<n-1;j++) { a[j]=a[j+1]; } } } for(i=0;i<n;i++) {printf("%c",a[i]);} printf("\n"); } int main(){ char a[1000]; while(gets(a)) { fun(a); } } 这为什么错了啊
可是有许多连续的空格就失效了
明明的随机数 (C++代码)浏览:867 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:668 |
三进制小数 (C语言代码)浏览:1099 |
简单的a+b (C语言代码)浏览:827 |
C二级辅导-计负均正 (C语言代码)浏览:698 |
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:913 |
打水问题 (C语言代码)浏览:1148 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:686 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:504 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:660 |