下面程序的输出结果是() #include<stdio.h> int main ( ) { char ch[7]="12ab56"; int i,s=0; for (i=0;ch[i]>'0'&&ch[i]<='9';i+=2); s=10*s+ch[i]-'0'; printf("%d\n",s); return 0; }
时间: 2024-01-03 11:04:07 浏览: 68
程序的输出结果是12。
首先,字符数组 ch 中的前两个元素是数字字符 '1' 和 '2',因此循环条件 ch[i]>'0'&&ch[i]<='9' 成立。在循环中,i 每次加 2,因此 i 最终停在 '5' 的位置上。然后,程序计算 s=10*s+ch[i]-'0',即 s=10*0+'5'-'0'=5。最后输出 s 的值,即 5。注意,程序中分号 ; 后面的语句不会被执行。
相关问题
编写函数,对于给定的字符串,用指定字符替换该字符串中的数字字符。 函数接口定义: void replace_num ( char s[], char c ); 用指定字符 c 替换该字符串 s 中的数字字符。 裁判测试程序样例: #include <stdio.h> #include <string.h> void replace_num ( char s[], char c ); int main() { char str[81],ch; gets (str); ch=getchar(); replace_num(str,ch); puts(str); } /* 请在这里填写答案 */ 输入样例: abc0AB9 $ 输出样例: abc$AB$
答案如下:
```c
#include <stdio.h>
#include <string.h>
void replace_num(char s[], char c) {
int len = strlen(s);
for (int i = 0; i < len; i++) {
if (s[i] >= '0' && s[i] <= '9') {
s[i] = c;
}
}
}
int main() {
char str[81], ch;
fgets(str, sizeof(str), stdin);
scanf("%c", &ch);
replace_num(str, ch);
puts(str);
return 0;
}
```
注意:
1. 使用 `fgets` 代替 `gets`,避免因为输入超过数组长度而导致的缓冲区溢出。
2. 使用 `scanf` 代替 `getchar`,避免读取到多余的换行符。
3. 对于每个字符,判断是否是数字字符,如果是则替换为指定字符。
#include <bits/stdc++.h> using namespace std; typedef string ElemType; typedef struct BitNode { ElemType data; struct BitNode lchild,rchild; } BitNode,BiTree; //char sc[10]= {"+-/"}; void CreateBiTree(BiTree &t) { string ch; cin >> ch; if(ch[0] == '#') t = NULL; else { t = new BitNode; t->data = ch; CreateBiTree(t->lchild); CreateBiTree(t->rchild); } } int InOrderTraverse(BiTree t) { string op = t->data; int a,b; if(op[0]<'0' || op[0]>'9') { cout << '('; a = InOrderTraverse(t->lchild); cout << t->data ; b = InOrderTraverse(t->rchild); cout << ')'; if(op == "+") return a+b; else if(op == "-") return a-b; else if(op == "") return ab; else return a/b; } else { //InOrderTraverse(t->lchild); cout << t->data; //InOrderTraverse(t->rchild); int num=0; for(int i=0;i<op.size();i++){ num = num*10 + op[i]-'0'; } return num; } } int main() { BiTree tree = new BitNode; string ch; int sum; while(cin >> ch) { tree->data = ch; CreateBiTree(tree->lchild); CreateBiTree(tree->rchild); sum = InOrderTraverse(tree); printf("=%d\n",sum); } return 0; }换成c语言形式
以下是将您提供的 C++ 代码转换为 C 语言的等价代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef char ElemType;
typedef struct BitNode {
ElemType data;
struct BitNode *lchild, *rchild;
} BitNode, *BiTree;
void CreateBiTree(BiTree *t) {
char ch[10];
scanf("%s", ch);
if (ch[0] == '#') {
*t = NULL;
} else {
*t = (BitNode *)malloc(sizeof(BitNode));
(*t)->data = ch[0];
CreateBiTree(&((*t)->lchild));
CreateBiTree(&((*t)->rchild));
}
}
int InOrderTraverse(BiTree t) {
char op = t->data;
int a, b;
if (op < '0' || op > '9') {
printf("(");
a = InOrderTraverse(t->lchild);
printf("%c", op);
b = InOrderTraverse(t->rchild);
printf(")");
if (op == '+')
return a + b;
else if (op == '-')
return a - b;
else if (op == '*')
return a * b;
else
return a / b;
} else {
int num = 0;
for (int i = 0; i < strlen(&(t->data)); i++) {
num = num * 10 + t->data[i] - '0';
}
return num;
}
}
int main() {
BiTree tree = NULL;
char ch[10];
int sum;
while (scanf("%s", ch) != EOF) {
tree = (BitNode *)malloc(sizeof(BitNode));
tree->data = ch[0];
CreateBiTree(&(tree->lchild));
CreateBiTree(&(tree->rchild));
sum = InOrderTraverse(tree);
printf("=%d\n", sum);
}
return 0;
}
```
阅读全文