c语言 求绝对值,求大神!

C语言选择题,求大神帮助_百度知道
C语言选择题,求大神帮助
A B C D 1. 下列可用于C语言用户标识符的一组是( ). (2分)
A. void, define, WORD
B. a3_b3, _123,Car
C. For, -abc, IF Case
D. 2a, DO, sizeof
A B C D 2. 有以下程序:#include &stdio.h&int main( ){ int i=1,j=1,k=2; if((j++ || k++) &&i++ )
printf(&%d,%d,%d&,i,j,k);
return 0;}执行后输出结果是: (2分)
A B C D 3. 若运行时给变量x输入12,则以下程序的运行结果是(
)。#include &stdio.h&int main (){ int x,y; scanf(&%d&,&x); y=x&12 ?(x+10):(x-12); printf(&%d&,y);
return 0;} (2分)
A B C D 4. 已知int t=0;while(t=1){...}则以下叙述正确的是(
A. 循环控制表达式的值为0
B. 循环控制表达式的值为1
C. 循环控制表达式不合法
D. 以上说法都不对
A B C D 5. 以下能正确定义一维数组的选项是(
A. int a[5〕={0,1,2,3,4,5};B. char a={′A′,′B′,′C′};C. int a[5]=&0123&;D. char a[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};
A B C D 6. 有以下程序:#include &stdio.h&int fun(int x,int y){ return(x+y);}int main (){
int a=2,b=5,c=8;
printf(&%d&,fun(fun(a+c,b),a-c));
return 0;}运行后输出结果是() (2分)
A. 编译出错
A B C D 7. 下列说法正确的是(
A. 在C语言中,可以使用动态内存分配技术定义元素个数可变的数组B. 在C语言中,数组元素的个数可以不确定,允许随机变动C. 在C语言中,数组元素的数据类型可以不一致D. 在C语言中,定义了一个数组后,就确定了它所容纳的具有相同数据类型元素的个数
A B C D 8. 有定义语句: char
c[10];,则正确的输入语句是(
A. scanf(&%d%s&,&b,&c);
B. scanf(&%d%s&,&b,c);
C. scanf(&%d%s&,b,c);
D. scanf(&%d%s&,b,&c);
A B C D 9. C语言规定,在一个源程序中,main函数的位置(
A. 必须在最开始
B. 必须在系统调用的库函数的后面
C. 可以任意
D. 必须在最后
A B C D 10. 以下4个选项中,不能看作一条语句的是(
B. a=5,b=2.5,c=3.6;
D. if(b!=5)x=2;y=6;
提问者采纳
答案:BCBBD
DDBCD顺便解析一下:1;需要考虑哪些是关键字: void
属于;那些是非法字符:-属于。2;考察'||'运算,||前的j++如果为真,即不为0,||后的运算不处理,所以k不变,只有j,i自加1;3; y=x&12 ?(x+10):(x-12);,考察条件运算符,若x&12为真,则取(x+10),若为假取后者;4;这是一个死循环,所以不合法,即:不满足条件—退出循环-再次赋初值-循环-不满足条件;5;一维数组的复制一般形式:类型说明符 数组名[常量表达式]={值,值,值……},常量表达式要注意,个数为后面值的个数与'\0';6;就是代值然后运算;7;考察定义,侧重于记忆;8;因为是一维数组c[10],所以c实际代表了它的地址值,不能在前面多加&表地址;9,mian函数在C语言中,可以在任意位置,有且只能一个main函数,就像人的大脑一样,企鹅函数的执行总是从main函数开始;10;D是两条语句,故不行,,A为空语句,B 正确;但我认为,C是错误表述,是否题目你写错了?
提问者评价
谢谢,解答的很详细,非常感激哈
其他类似问题
c语言的相关知识
其他4条回答
1B2c3b4c5d6d7d8a9c10d
1 B2 C3 B4 B5 D6 D7 D8 C9 C10 D
1.B2.C3.B4.B5.D6.D7.D8.A9.C10.D
1 B2 C3 B4 B5 D6 D7 D8 B9 C10 C
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言,求大神解释??_百度知道
第四行!C 语言中,逗号(,)也可以是运算符,称为逗号运算符(Comma Operator)。逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式,称为逗号表达式。其一般形式为:  子表达式1, 子表达式2, ..., 子表达式n  例如:  a + b, c = b, c++  逗号运算符的优先级是所有运算符中级别最低的,通常配合 for 循环使用。逗号表达式最右边的子表达式的值即为逗号表达式的值。上例中,c++ 的值(c 自增之前的值)即为该表达式的值。  逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算。因此,上例中,c 得到 b 的值后,才进行自增运算。 所以,第四行,赋值是错误的
第四行是因为左边没有式子,最后面那个式子无法赋值,是吗?
,不能用于赋值运算。下面则是可以的:for(i=0,j=0; i&5; i++){ }
其他类似问题
按默认排序
其他4条回答
答案是D。出错的是第四行,第四行()里表示a=a+b,,b=b+a;对a与b重新赋值了,但并没有对c赋值,括号里的形式也是完全不合法的,改正的方法就是去掉中间其中一个逗号,因为两个逗号中间什么都没有程序就不知道要运行什么,也就运行不下去。改正后c被赋的值是b(b=b+a).
逗号表达式的,返回的结果是后面的表达式的结果。在(a+=b,,b+=a)中,显然中间两个逗号之间是空的,造成无法与前后的整数进行比较,因此出现错误。所以在第4行出错。
前后为什么要比较?计算机不是只取最后那个表达式的值就可以了吗?
答案是:D其他3个都是对的,那只有D错了
我知道是D,为什么?
给分我帮你解
要先采纳,才帮解?
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c语言啊,求大神您解答_百度知道
c语言啊,求大神您解答
用100元人民币兑换10元、5员和1元的纸币,(每一种都要有)公50张,请用穷举法编程计算共有集中兑换发难,每种方案各兑换多少张纸币? 请大神们解答,谢谢,拜过问题补充:速度阿,在线等大神执教,回答正确有意想不到的惊喜哦
给楼主个思路吧。 每种都要有,就是说10,5,1至少有一张,那至少有16块是定的,组合的只是84块。 写个循环int shik = 0;int wuk = 0;int yik = 0;for (shik = 0; shik * 10 & 84 ;shik++){
for (wuk = 0; 84 - shik * 10 - wuk * 5 & 0; wuk++)
for (yik = 1; yik & 84 - 84 - shik * 10 - wuk * 5; yik++)
if (shik * 10 + wuk * 5 + yik == 84)
printf(&%d %d %d, shik, wuk, yik);
}主体都差不多了。惊喜呢?
其他类似问题
按默认排序
其他3条回答
如果分别设X,Y,Z代表10元,五元,一元则10X+5Y+Z==100;X+Y+Z==50;
//LZ的意思是不是三种加起来要50张还是别的什么意思??容易得到。。。9X+4Y==50;X==(50-4Y)/9;则Y只能取1,2,3,4,5,6,7,8,9,10,11,12,13,(这个用程序很容易实现)可以得出Y==8,X==2,Z==40(唯一解)也就是说2张10元,八张五元,和四十张1元,一楼的程序测试过没结果输出,pascal,没学过
太简单了……给你个pascal版的先看看unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtype
TForm1 = class(TForm)
Button1: TB
Button2: TB
Button3: TB
Button4: TB
Button5: TB
Button6: TB
Button7: TB
Button8: TB
Button9: TB
Button10: TB
Button11: TB
Button12: TB
Button13: TB
Button14: TB
Button15: TB
Button17: TB
Button18: TB
Button19: TB
Button20: TB
Panel1: TP
procedure Button17Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button20Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
{ Private declarations }
{ Public declarations }var
Form1: TForm1;
operator,i,flag:implementation{$R *.dfm}procedure TForm1.Button17Click(Sender: TObject);begin
panel1.caption:=panel1.caption+(sender as tbutton).Cprocedure TForm1.Button13Click(Sender: TObject);beginpanel1.caption:=panel1.caption+(sender as tbutton).Cprocedure TForm1.Button14Click(Sender: TObject);beginpanel1.caption:=panel1.caption+(sender as tbutton).Cprocedure TForm1.Button15Click(Sender: TObject);beginpanel1.caption:=panel1.caption+(sender as tbutton).Cprocedure TForm1.Button11Click(Sender: TObject);beginpanel1.caption:=panel1.caption+(sender as tbutton).Cprocedure TForm1.Button10Click(Sender: TObject);beginpanel1.caption:=panel1.caption+(sender as tbutton).Cprocedure TForm1.Button9Click(Sender: TObject);beginpanel1.caption:=panel1.caption+(sender as tbutton).Cprocedure TForm1.Button7Click(Sender: TObject);beginpanel1.caption:=panel1.caption+(sender as tbutton).Cprocedure TForm1.Button6Click(Sender: TObject);beginpanel1.caption:=panel1.caption+(sender as tbutton).Cprocedure TForm1.Button5Click(Sender: TObject);beginpanel1.caption:=panel1.caption+(sender as tbutton).Cprocedure TForm1.Button4Click(Sender: TObject);beginpanel1.caption:='';procedure TForm1.Button1Click(Sender: TObject);begin if (panel1.caption&&'') or (panel1.Caption&&'-')or(panel1.Caption&&'.')
a:=strtofloat(panel1.caption);
operator:= (Sender as tbutton).T
panel1.caption:='';
flag:=flag+1;procedure TForm1.Button2Click(Sender: TObject);begin if (panel1.caption&&'') or (panel1.Caption&&'-')or(panel1.Caption&&'.')
a:=strtofloat(panel1.caption);
operator:= (Sender as tbutton).T
panel1.caption:='';
flag:=flag+1;procedure TForm1.Button8Click(Sender: TObject);begin if (panel1.caption&&'') or (panel1.Caption&&'-')or(panel1.Caption&&'.')
a:=strtofloat(panel1.caption);
operator:= (Sender as tbutton).T
panel1.caption:='';
flag:=flag+1;procedure TForm1.Button12Click(Sender: TObject);begin if (panel1.caption&&'') or (panel1.Caption&&'-')or(panel1.Caption&&'.')
a:=strtofloat(panel1.caption);
operator:= (Sender as tbutton).T
panel1.caption:='';
flag:=flag+1;procedure TForm1.Button18Click(Sender: TObject);beginif i mod 2=0 then
panel1.caption:='-'+panel1.captionelsebegin
panel1.caption:=copy(panel1.Caption,2,length(panel1.Caption));
i:=i+1;procedure TForm1.Button19Click(Sender: TObject);beginpanel1.caption:=panel1.caption+(sender as tbutton).Cprocedure TForm1.FormCreate(Sender: TObject);begin
operator:=0;
flag:=0;procedure TForm1.Button20Click(Sender: TObject);begin
if (panel1.caption&&'') or (panel1.Caption&&'-')or(panel1.Caption&&'.')
b:=strtofloat(panel1.caption);
if (c=b)and(flag=0)then
case operator of
1:begin panel1.caption:=floattostr(a+b);c:=a+b;
2:begin panel1.caption:=floattostr(a-b);c:=a-b;
3:begin panel1.caption:=floattostr(a*b);c:=a*b;
if a=0 then
panel1.caption:='NAN'
panel1.caption:='INF';
panel1.caption:=floattostr(a/b);
flag:=0;procedure TForm1.Button3Click(Sender: TObject);begin
panel1.caption:=copy(panel1.caption,0,length(panel1.caption)-1) ;end.
这是啥啊?用啥运行?能用codeblocks运行吗
其实就是一个2重循环,第一层循环遍历10元张数第二层循环遍历5元张数10元、5元张数确定后,1元的也知道了然后判断总数是不是100,如果是则输出或者存储到一个数组中int num10, num5, num1, num = 0;for(num10 = 1; num10 & 49; num10 ++){
for(num5 = 1; num5 & 50 - num10; num5 ++)
num1 = 50 - num10 - num5;if(100 == (num10 * 10 + num5 * 5 + num1))
printf(&Solution %d, need %d $10, %d $5, %d $1\n&, num, num10, num5, num1);
}}printf(&Total %d solutions.\n&, num);
c语言的相关知识
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁单片机c语言,求大神!!急_百度知道
或许看得不够仔细,程序中没看到什么明显问题,你先把
2个地方的,TH0=-TL0=-改为TH0=()/256TL0=()%256
其他类似问题
按默认排序
其他3条回答
电路是什么可以把:设置温度报警值  的函数去掉,不要调用 试试看
电路就是一个最小系统,加一个蜂鸣器,加一个18b20,你说的去函数不管用。。。都不告警了。。
你没说改成什么样?
就是18b20一接通,蜂鸣器就响,不管什么温度都响,程序在proteus上跑没问题了。怎么联系你,我没有财富了。
proteus不可靠的,不要相信...
DS18B20的初始化函数第一次调用是在Set_Alarm_temp_Value()这个函数里,但是没有判断初始化是否成功,而且初始化函数被调用了好几次????,我觉得初始化函数在变量初始化之后运行一次正确就可以了!!你试试看!!
我是小白- -,你说的方法怎么操作?
你看看,你的实时温度是多少,然后看看你的厥门是多少
没有数码管,所以没有显示,厥门是什么?
好吧,你的是51是吗?我现在都是可以在线调试的,可以实时看数据,这样你下载一个51程序的进程,或是把报警那一块注释掉,然后给最后的问题一个值,比如高于23度,LED灯亮,低于23度,led灭,慢慢测试出温度是多少,看看是不是温度读出来的不对
没财富了。。怎么联系你?
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c语言求大神指教_百度知道
c语言求大神指教
小孟去“西装制作店”的时候发现,店里的一块矩形布料,长为m,宽为n,店员每次裁剪只能沿一条直线把一块布料切割成两块长款均为整数的布料(一次不能同时裁剪两块布料)。
现在有很多人订购这块布料,需求量分别为
。问是否可以经过若干次裁剪,把布料裁剪成面积为的矩形布料以满足客户的需求。输入格式:输入包含若干组数据。每组数据的第一行为一个整数T();第二行为两个整数m和n();第三行为T个整数输入结束的标志为T=0。输出格式:对于每组数据,如果可以切割成功,输出“Yes”,否则输出“No”。样例输入:43 46 3 2 10样例输出:Yes
提问者采纳
#include&&stdio.h&#define&N&10int&check(int&*a,&int&area,int&T){&int&plus_num&=&0;&int&result&=&0;&int&i&=&0;&for&(;&i&T;&i++)&{&&result&+=&a[i];&}&if&(result&&=&area)&{&&printf(&Yes\n&);&}&else&&printf(&No\n&);&return&0;}int&main(){&int&T&=&0;&int&m,n&=&0;&int&area&=&0;&int&a[N]&=&{0};&int&i&=&0;&scanf(&%d&,&&T);&if&(T&==&0)&{&&return&0;&}&else&{&&scanf(&%d&%d&,&&m,&&n);&&for&(;&i&T;&i++)&&{&&&scanf(&%d&,&&a[i]);&&}&&area&=&m&*&n;&&check(a,&area,&T);&&return&0;&}}
提问者评价
其他类似问题
递归对T进行全排列寻找可行解,不知道对不对,我不是大神。。#include &stdio.h&#define MAX 10int m,n,Tn,T[MAX],R[MAX];int Comb(int R[],int pR,int m,int n){ int i=0,r; if(T[pR]%m==0) {
if(R[pR]==Tn)
if(n&T[pR]/m)
printf(&T=%d,m=%d,n=%d cut m\n&,T[pR],m,n);
for(;i&Tn;i++)
if(R[i]==-1)
R[i]=R[pR]+1;
n-=T[pR]/m;
r=Comb(R,i,m,n);
n+=T[pR]/m;
printf(&T=%d,m=%d,n=%d cut m\n&,T[pR],m,n);
n+=T[pR]/m;
} } if(T[pR]%n==0) {
if(R[pR]==Tn)
if(m&T[pR]/n)
printf(&T=%d,m=%d,n=%d cut n\n&,T[pR],m,n);
for(;i&Tn;i++)
if(R[i]==-1)
R[i]=R[pR]+1;
m-=T[pR]/n;
r=Comb(R,i,m,n);
m+=T[pR]/n;
printf(&T=%d,m=%d,n=%d cut n\n&,T[pR],m,n);
m+=T[pR]/n;
} } return 0;}void main(){
int t,rult=0; while(1) {
scanf(&%d&,&Tn);
scanf(&%d&,&m);
scanf(&%d&,&n);
for(i=0;i&Tn;i++)
scanf(&%d&,&T[i]);
for(i=0;i&Tn;i++)
for(t=0;t&Tn;t++)
if(Comb(R,i,m,n)==1)
printf(&YES&);
printf(&NO&);
rult=0; }}
你这思路是什么啊
按默认排序
其他2条回答
这是一个数论问题,首先要建立数学模型(或者叫做思路):先就这个题目给的数据来分析一下:面积条件:3*4≤6+3+2+1T个数分成两个整数的积。6=x1*y1=1*6=2*3(1*6的组合因为6超出布料长度4,应该舍去)。3=x2*y2=1*32=x3*y3=1*21=x4*y4=1*1边长条件:布料的每个边,由T个数中几个数取一个2项因子相加得到,边的每一项有2*分解数个办法,因此每条边最多有2^T(T个数的分解方法之积),本例2^4*(2*1*1*1)=2^5=32种,得到32组2个方程组成的整数方程组。(本例1*1两个因子无差别,少了32/2=16组,实际最多16组,举例如下:3=x1+x2+x3+x4,4=y1+y2+y3+y4;逐个验证,遇到满足题意的返回yes。全部验证完毕,没有满足要求的,返回no。另外,我们可以模拟裁剪。这里面,只能分解成1*x格式的,是布置的关键,他们的布置方法只有两个方向,一种形状,而且必须组合形成1*布料边长的矩形,比如上面例子:1*3,可以沿布料3米边裁出1米组成,余下3*3正方形布料,T=3,3*3,裁出6,2,1;问题降了一次,可以递归;
3*3的布料,不能裁出1*6来,只能裁出2*3,余下1*3布料,T=2,1*3,2,1;可以继续递归;
1*3,裁出1*2,余下1*1,T=1,1*1,1;可以继续递归;
1*1,正好可以裁出1*1,成功。回答yes,结束。一开始1*3如果沿4米边裁剪,余下的不是矩形,不能递归。这时我们看到,4米边余下一块1*1的突出,可以接着裁出1*1,余下矩形2*4,T=2,2*4,6,2;可以递归;
2*4,裁出2*3,余下1*2,T=1,1*2,2;可以递归;
1*2,裁出1*2,正好,成功,回答yes,结束。我们从只能分解成1*x的里面最大的一块开始裁剪,并且组合,裁齐,余下矩形,将问题降次,递归。
1*x处理完毕后,再处理只能分解成2*x的(相对于布料),同样由最大的开始,组合裁剪一边,余下矩形,降次,再递归。
#include ....#define MAX 100typedef struct _jied JIEDstruct _jied{ int z[]; int x[];
//某个面积可分解的总次数}void main(){ int i=0,j=0,k=0,p=0; int q[MAX]; int m=0,n=0; JIED a[MAX]; int b[MAX]; int g[MAX]; int MianJi1=0,MianJi12=0,GeShu=0,iS
/*获取输入 m n T
b[MAX]*/ .....
/*因题目为倒退,所以建议从b[MAX]-&m*n处理*/ /*面积不合则先排除*/ MianJi2 = m*n; for (i=0;i&T;i++) {
MianJi1+=b[i]; } if (MianJi1 != MianJi2)
/*输出 No*/ else {
/*将b[MAX]的值进行分解z*x(如6可分解为1*6,2*3,两种情况)*/
for (i=0;i&T;i++)
FenJcs = 0;
/* 分解 */
for (j=1;j&(b[i]/2+1);j++)
if ((b[i] % j )== 0)
a[p].z[q] =
a[p].x[q++] = b[i]/j;
a[p++].d=FenJ
/* 分解后开始排列组合
** 如 6、3、2、1
** 分解为z(1,2)/x(6,3);(z1,x3);(z1,x2);(z1,x1)
** 则排列组合为:
** 1:(1,6);(1,3);(1,2);(1,1)
** 2:(2,3);(1,3);(1,2);(1,1)
** 再判断1No2Yes,则结果输出Yes
/* 下面只是T=4的写法 */
for (e1=0;e1&a[0].e1++)
for (e2=0;e2&a[1].e2++)
for (e3=0;e3&a[2].e3++)
for (e4=0;e4&a[3].e4++)
g[w++]=a[0].z[e1];
g[w++]=a[0].x[e1];
g[w++]=a[1].z[e2];
g[w++]=a[1].x[e2];
g[w++]=a[2].z[e3];
g[w++]=a[2].x[e3];
g[w++]=a[3].z[e4];
g[w++]=a[4].x[e4];
/* 判断g数组中的长宽值,是否全为双对
** 若某个值为单个数,则No,否则Yes并goto
for (i=0;i&w;i++)
for(j=0;j&w;j++)
if (g[j] == g[i])
if ((GeShu%2) !=0)
iShfobz=1;
} } Yes_flag: if (iShfobz == 1) /*输出Yes*/ else /*输出No*//* 理论上这个思路比较笨和规矩,但是如果T不定时,这种写法肯定无法完成,但递归或者循环或者树的写法都没想出来 ** 不知道是不是我这个思路一开始就有问题,感觉极度无法实现 ** 如果正推的情况就更加崩溃了,比如3*4的在T=4的情况下可能出现哪几种组合 ** 在排列组合的情况上,程序不知道有什么更好的写法吗? ** 因为不知道怎么写,所以使用了近乎穷举的方式
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 c语言 求绝对值 的文章

 

随机推荐