#include ‹stdio.h> void main) int i, n=0; char str[80]; /*水*********FOUND*********** gets(strl8el); /***********FOUND*****水*****/ for ( i=0; strrill='1e':i++ /***********FOUND*****米*****人 if ( strli1>=0 && strlilx=9) /***********FOUND***队*米*米*水*/ In = n*10 + strtil; printf("%d %d\n", n, 2*n) ;
时间: 2023-07-06 20:30:57 浏览: 111
这段代码存在一些问题,首先是main函数的括号应该是左括号而不是右括号。其次,gets函数已经被废弃,应该使用fgets函数代替。接下来,在第一个for循环中,条件应该是str[i]!='\0'而不是strrill='1e'。在第二个if语句中,应该是str[i]>='0'而不是strli1>=0,同时应该是str[i]<='9'而不是strlilx=9。最后,在赋值语句中,应该是n = n * 10 + str[i] - '0'而不是In = n*10 + strtil。以下是修改后的代码:
```
#include <stdio.h>
int main() {
int i, n=0;
char str[80];
fgets(str, 80, stdin);
for (i=0; str[i]!='\0'; i++) {
if (str[i]>='0' && str[i]<='9') {
n = n * 10 + str[i] - '0';
}
}
printf("%d %d\n", n, 2*n);
return 0;
}
```
相关问题
用c语言完善以下代码,从字符串str中获取一子串,并将其存放到str1中,该子串从str的第k个字符开始取n个字符,若不足n个字符,则取到str的最后一个字符为止,代码如下:#include <stdio.h> #include <string.h> void main() { char str[81],str1[81]; char *p=str,/**/ /**/=str1; int k,n; gets(str); scanf("%d%d",&k,&n); if(k<=strlen(str)) { /**/ /**/; while((n>0)&&(*p!=0)) { /**/ /**/=*p++; n--; } } *p1=0; puts(str1); getch(); }
首先需要声明字符串str和str1:
char str[100], str1[100];
然后从str中获取子串:
int len = strlen(str);
for (int i = 0; i < n; i++) {
if (i < len - k + 1) {
str1[i] = str[k - 1 + i];
} else {
break;
}
}
最后,补充缺失的字符:
str1[n] = '\0';
#include<stdio.h> #include<string.h> void main() { char str[10]="Ch\nina"; printf("%d",strlen(str)); }
这段代码的作用是输出字符串 "Ch\nina" 的长度,即 6。但是可以看出,在数组定义时,只分配了 10 个字符的空间,而 "Ch\nina" 长度为 7,因此存在字符串溢出的问题。建议将数组大小定义为至少 8 个字符。同时,main 函数的返回值应该为 int 而不是 void。修改后的代码如下所示:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[8] = "Ch\nina";
printf("%d", strlen(str));
return 0;
}
```
阅读全文
相关推荐

















