从键盘输入“12”,执行#include<stdio.h> void main() { int c; while((c=getchar())!='\n'); switch(c) { case'0'; case'1':putchar(c+1); case'2':putchar(c+1);break; case'3':putchar(c+2); default:putchar(c+2);break; } }代码,输出结果是什么,为什么?
时间: 2024-04-21 12:25:06 浏览: 57
从键盘输入 "12",程序会读入字符 '1' 和 '2',但是由于代码中的 while 循环将会读入并丢弃所有的输入字符,直到读入一个换行符为止。因此,在 switch 语句中,只有最后一个输入的字符 '2' 会被处理。
根据代码中的 switch 语句,字符 '2' 会匹配 case '2',然后输出字符 '3',因为 '2' 的 ASCII 码是 50,加上 1 后变成 51,对应的字符是 '3'。由于代码中加了 break 语句,程序会跳出 switch 语句,然后输出字符 '3',因为 '2' 的 ASCII 码是 50,加上 2 后变成 52,对应的字符是 '4'。
因此,程序的输出结果是 "34"。
相关问题
分析代码:#include <stdio.h> #include <time.h> #include <stdlib.h> #include <errno.h> #include <unistd.h> #include <pthread.h> //char buf[] = "welcome"; void * handler(void *p)//void *p = buf; { getchar(); printf("%s\n", (char *)p); return p; pthread_exit(p); } void f(char **p)//char **p = &s; { char *q = "dadf"; *p = q; } int main(int argc, char *argv[]) { char *s = NULL; f(&s); printf("%s\n", s); #if 1 pthread_t thread; char buf[] = "welcome"; void *result; if (pthread_create(&thread, NULL, handler, (void *)buf)) exit(-1); pthread_join(thread, &result);//exit(0); waitpid(pid, &status, 0); printf("***\n"); printf("result:%s\n", (char *)result); while (1); #endif exit(0); }
这段代码主要涉及了线程以及指针的使用。
首先,在 `f` 函数中,使用了一个二级指针 `char **p`,并将其传入函数中。在函数中,又定义了一个指针 `q`,并将其指向了一个字符串常量。然后,将 `q` 的值赋给了 `p` 指向的内存地址,即 `s`,最后在 `main` 函数中输出了 `s` 的值。
在 `main` 函数中,定义了一个指针 `s`,并将其初始化为 `NULL`。然后,调用了 `f` 函数,并将 `s` 的地址传入。`f` 函数中将 `s` 指向了一个字符串常量,因此在 `main` 函数中输出 `s` 的值时,会输出 `dadf`。
接下来,使用了线程,在 `handler` 函数中,定义了一个指针 `p`,并将其强制类型转换为 `char*` 类型。然后,通过 `getchar()` 等待用户输入,最后将 `p` 返回。在 `main` 函数中,通过 `pthread_create` 函数创建了一个新的线程,并将 `handler` 函数作为线程入口函数,`buf` 的地址作为参数传入。然后,通过 `pthread_join` 函数等待线程的退出,并获取返回值。最后,在 `main` 函数中输出了返回值。
需要注意的是,代码中存在一个 `waitpid` 函数,但是在代码中并没有定义 `pid` 变量,因此这一行代码会导致编译错误。可以将其注释掉,或者在代码中定义 `pid` 变量并赋值。此外,代码中的 `pthread_exit(p)` 函数永远不会被执行,因为其位于 `return` 语句之后。
1.编一个程序,把一批非零整数中的偶数、奇数的平均值分别计算出来。用零作为终止标记。 2.读程序写结果:键盘输入 abcdef<CR> , #include <stdio.h> void fun( ) { char c ; if((c=getchar( ))!='\n') fun( ) ; putchar(c); } void main( ) { fun( ); }
1.以下是一个简单的实现,使用了两个计数器和两个累加器来计算偶数和奇数的平均值。程序使用了一个无限循环,只有当输入的数字为0时才会退出循环。
```c
#include <stdio.h>
int main() {
int num, even_count = 0, odd_count = 0;
float even_sum = 0, odd_sum = 0;
while (1) {
scanf("%d", &num);
if (num == 0) {
break;
}
if (num % 2 == 0) {
even_count++;
even_sum += num;
} else {
odd_count++;
odd_sum += num;
}
}
printf("Even average: %.2f\n", even_sum / even_count);
printf("Odd average: %.2f\n", odd_sum / odd_count);
return 0;
}
```
2.程序的作用是从键盘输入字符并将其输出,直到遇到换行符“\n”为止。由于函数fun()是递归调用,因此输入的字符会被依次压入栈中,直到遇到换行符后才开始逐个弹出栈中的字符并输出。
因此,当输入 abcdef 后,程序会先将字符“a”压入栈中,再将字符“b”压入栈中,以此类推,直到将字符“\n”(即换行符)压入栈中。此时,程序开始逐个弹出栈中的字符并输出,因此输出结果为:
```
fedcba
```
阅读全文