一道C语言题:当运行时输入:abcd$abcde↙,下面程序的运行结果是?
这句话的意思就是:从控制台一次获取一个字符,先输出来,再判断获取的字符是不是‘$’;如果是则退出循环,如果不是则继续获取字符并输出。
分解一下就容易理解了:
#include
main()
{
char a;
do {
a=getchar();
putchar(a);
}
while(a!='$');
printf("end");
}
input: abcd
output:
aaa 当是a时,执行完Case 'a' :的printf()后,就又去执行后面的两个,所以会输出3个a, 下面与之同
bb
c
end! 当是d时,abc均不符合,故走default:其后有break;所以就只输出一个end!
注意两种差异,前者putchar()输出后才做判断,所以会输出$符号,后者不会。
结果是abcd$
while(putchar(getchar())!='$')
putchar的返回值是输出的字符,这条语句是先输出再判断是否等于$,最后结束。
C语言问题,为什么我运行下面代码的时候,360会弹出来阻止?
一般病毒扫描都是靠所谓的“特征”进行扫描的,如果你编译的代码恰好和某个 病毒特征类似,即使你不是病毒,也可能被扫描到。所有软件都会有这种问题的,不奇怪
C语言的switch语句的问题。
这道题主要考的是break的问题,当case'c':case'C':printf("pass");后有break后运行结果就为pass。没有error了。你所困惑的那点是这样的,'c'和'C'的ASCII码不同,前者是63H,后者是43H。希望多去csdn看看 参考资料:csdn社区
c语言程序题
x=y=1;z=x++,y++,++y;逗号表达式的优先级最低,所以第二行实际上相当于 (z=x++),y++,++y;这是一个逗号表达式,计算顺序从左到右。x++和y++都是后自增,意思就是说这一说执行完后才自增,++y是先自增,就是运行到这里先自增,所以从上面可以知道上面三个的顺序是 z=xy(这行之后才...
关于c语言的问题,紧急!
第一题程序运行过程:int fun(int x,int y);你这句在程序里是对被调用的函数的声明,这里的函数就是你定义的那个fun函数,说白点就是给计算机一个路径去找到这个fun这个函数具体怎么运算,这你在后面的程序段你也解释了fun这个函数该怎么计算,就是这个程序段:int fun(int x,int y){ int m=3...
为什么C语言编写的程序运行时闪一下就没了?
当C语言编写的程序运行时突然消失,通常源于设置上的问题。要解决这个问题,可以参考以下步骤:首先,从最基础的HELLOWORLD程序开始。当你编写并编译完成这个程序后,正常运行时,程序会在屏幕上显示“HelloWorld”,只有在用户按下任意键后才会关闭窗口。然而,当你直接双击执行生成的EXE文件时,可能会出现程序...
求大神解答这道c语言题
当s[j]比s[i]大时,j=i.这样循环后得到的s[j]就是s中的最小值.也就是'a'所以j=0;然后是交换s[0]和s[4]也就是'a'和'r'交换后s="rftea"输出s值,rftea
C语言编程题目三道
include<stdio.h>void cal(int n1,int n2,char f);int main(){ int n1,n2; char f; printf("分别输入两个小于100整数及一个运算符号:\\n"); scanf("%d%d",&n1,&n2); getchar(); scanf("%c",&f); cal(n1,n2,f); return 0;}void cal(int n1,int ...
C语言两道小题
第一题:func((x--,y++,x+y),z--)语句里(x--,y++,x+y)是个逗号表达示,每一条都会运算,但结果只取最后一条:X先-1得5,Y再+1得8,最后 x+y=((x-1)+(y-1))=((6-1)+(7+1))=13 所以括号内的最终值是13,就有func(13,8)给传递过去得结果 13+8=21(被输出)第二题就...
下面这道C语言题代码怎么写?
综上,C代码和运行结果如下:输出符合样例,望采纳~附源码:include <stdio.h> typedef long long ll;int main() { int T, res;ll s, n, k, sum;scanf("%d", &T);while (T--) { scanf("%lld%lld%lld", &s, &n, &k);res = 0;if (s > k) { sum = (n \/ k) * 2...
C语言选择题(3道题),帮忙解答一下,谢谢!
你好:第一题:先执行循环体:b-=a; a++;b=b-a=10-1=9,a=2,再判断条件:b--<0 b=9>0 然后b-- (注意无论判断条件是否满足,都执行),b=8 第二题:答案错了,应选D 程序应该这么看:int a=3,b=2,c=1;int x=10,y=20;if(ab就不满足条件,所以下面的不执行!if(b!=0)...
纳艺肝胆: 结果是ABC,开始,strcat把6789与12345连在一起,即:ss[10]="123456789",后面用gets重新输入了ABC,此时数组又重新写入了ABC
夹江县18793481257: 当执行以下的C语言程序时,如果输入ABC,则输出结果为 ABC6789,谁能解释一下为什么吗? - ?
纳艺肝胆: gets(ss); 的时候,你的ss中的字符串就变成了你输入的"ABC",strcat(ss,"6789");是把后面的字符串,复制到前面的字符串之后,于是就出现你的那个结果了.
夹江县18793481257: 编写一个C语言程序输入abc三个数 输出最大值 - ?
纳艺肝胆: scanf ("%a%b%c",&a,&b,&c); 改为,就可以 scanf ("%lf%lf%lf",&a,&b,&c);
夹江县18793481257: (一道选择题)帮我分析下为什么当执行下面的程序时,如果输入ABC,则输出结果是()#include#includevoid main() { char ss[10]="12345";gets(ss);... - ?
纳艺肝胆:[答案] 答案是A. 虽然你定义的SS数组有字符串,但是gets函数输入的ABC将原来的字符串覆盖了所以新的数组为SS[10]="ABC", 接下来的stract是字符串连接函数即将字符串"6789"连接到ABC后面. 所以输出的结果是ABC6789.
夹江县18793481257: C语言的一道输入abc输出最大者 - ?
纳艺肝胆: 第一你这程序,只有max函数的申明,没有定义, 第二scanf("%d,%d",%d,&a,&b,&c); 是错误的,反引号"应该在第三个%d后, 应该是scanf("%d,%d,%d",d,&a,&b,&c);
夹江县18793481257: 编写一个C语言,输入abc,将他们从大到小排序输出 - ?
纳艺肝胆: #include <iostream> #include<stdio.h> int main(){ int a,b,c,temp; printf("请输入三个数abc:"); scanf("%d%d%d",&a,&b,&c); if( b>a ){ temp = a; a = b; b = temp; } if( c>a ){ temp = a; a = c; c = temp; } if( c>b ){ temp = b; b = c; c = temp; } printf("从大到小排序:"); printf("%d %d %d",a,b,c); system("pause"); return 0; }
夹江县18793481257: C语言看书看晕了,求帮忙做个题,输入ABC三个值输出其中最大者,最好有解释 - ?
纳艺肝胆: #include "stdio.h" #include"iostream" using namespace std;//头文件部分 int main() {int a,b,c;//定义变量 cout<<"请输入三个数字"<<endl ; cin>>a>>b>>c;//输入 a=a>=b&&b>=c?a:b>=c?b:c;//判断 cout<<"最大的数为"<<a;//输出 }
夹江县18793481257: C语言问题,下面程序为什么我输入abc回车后,直接就输出abc了 - ?
纳艺肝胆: 原因: 第一个scanf 从输入缓冲区中取数据(所谓的输入),手动输入数据时只取出回车符号(或者是空格符号)之前,紧接着就是第二scanf 开始从输入缓冲区中取数据,此时输入缓冲区中还存在第一次输入的回车符,所以就直接取出(也不会给你机会输入了),继续向下执行了.解决方案: 在scanf 输入之前,加上 fflush(stdin); 目的是清空输入缓冲取,使输入缓冲区下次取出数据之前是干净的.希望可以帮助到你.
夹江县18793481257: 编写一个c程序 输入abc 比较大小 - ?
纳艺肝胆: 1)你在输入的时候要加逗号 1,2,3 2)你的把scanf里的%d间的逗号去掉,输入的时候就不用加逗号了
夹江县18793481257: c语言这个程序为什么我输入abc他变成aabbcc - ?
纳艺肝胆: 因为你输一个打印一个,当然是aabbbcc了,你可以尝试在打印的时候加一个换行,那样就行了