⑴ 簡單c語言題目
第一題:a*=16+(b++)-(++c)等價於a=a*
(16+(b++)-(++c));
"()"優先順序最高,所以先執行:(b++),在使用b之後,使b加一,因此(b++)=3;(++C),在使用c之前,使C加一,因此(++C)=5。然後將按照加減的結合性."自左向優"計算,因此16+(b++)-(++c)=14;之後
執行a*(16+(b++)-(++c))=28,所以a=28;
第2題:結果應該是1,因為unsigned
short類型的數值范圍是0到65535,(-
-!汗,你可找c\c++程序設計的書,那裡可以找到數據類型的數值范圍)因為int是范圍要大多,又因為signeed是以補碼形式存放,而unsigned是全部2進制位都用本身表示自己,所以
程序的輸出結果是-1;
第3題:x/y=0.5,但要自動轉換成int類型,因此x/y=0
,所以1.0+x/y的值為1.0;
第4題:x-=y-z等價於x=x-(y-z),用小學的演算法計算x-(y-z)=5,
x的值為5;
x%=y+z等價於x=x%(y+x),因為x%(y+x)=0.5,又因為x,y都為整形(int),所以x的值為0;
第5題;在此語句中printf("#d&%d\n",(++x+y++),z+2);
#d&是字元輸出,%d是輸出第一個表達式(自左向右),即是(++x+y++),先執行自增運算符++x值為4,(原理看第一題的說明),y++的值為3,所以(++x+y++)
=7,所以程序執行結果是#d&7;
第6題:我覺得你這個題目是你抄錯題"a=2,b=3,c=4.5,y=1.6,"中的c應該為x,這題是這樣的,先執行(int)x=4,(int)=1,再執行(int)x%(int)y=4(注意,這里4是float類型),在執行(float)(a+b)/2=2.5,所以此表達式的值為6.5
第7題:-
-!你有抄錯題沒有?
main()
{int
i,j,m,n;
i=8;
j=3;
m=++i;
n=j--;
printf("%d,%d,%d,%d,i,j,m,n);}
/*覺得是printf("%d,%d,%d,%d",i,j,m,n);
*/
m=++i;因此m=9,這里i為9,這個容易理解(第一題);j第一次執行的時候n=j--,這里n=3,j=3;到第2次執行J的時候,即是執行printf("%d,%d,%d,%d,i,j,m,n)語句,這里的j就為2
因此執行結果為:9,2,9,3
第8題:因為a>b>C是真,在C中都用數值1表達真,0表達假,所以m=1,所以表達式m=a>b>c的值是1;
第9題:又抄錯題?-
-!「b=2」?
先執行!,在執行關系運算符,a>b為真,c>a為假,ab為假,在執行邏輯運算符a>b&&c>a為假,a>b&&c>a‖ab&&c>a‖ab為假,所以a>b&&c>a‖ab的值是0;
第10題:答案肯定為0;"設a=3,b=4,c=5,則表達式!(x=a)&&(y=b)&&0的值是"這題你做的出請告訴我,我也不會。(但可以敢肯定的是他的值為0,因為這個表達式的後面那個數據為0)如果將這題這樣改寫的話「10.設a=3,b=4,c=5,則表達式!(c=a)&&(c=b)&&0的值是」,我就有感覺怎做,首先(c=a)為假,!(c=a)為真,(c=b)為假,!(c=a)&&(c=b)為假,!(c=a)&&(c=b)&&0為假,即是0;
⑵ 求幾道C語言題的答案3
1.D 題目中j應該為i,可能是筆誤.當i=0時,s=s+a[0][0]=0+1=1;當i=1時,s=s+a[1][1]=1+2=3;當i=2時,s=s+a[2][2]=3+7=10;當i=3時,s=s+a[3][0]=10+3=13.
2.A While(1+3)這個是成立的,裡面的表達式是算術表達式,這樣下面選項就不攻自破了.
3.C 運行過程是:s=s+t=0.0+0.0=0.0;t被附值為1.0/(i*i)的值,此時i==1,t就是1.0,i自加1,i的值變為2.while(i<=2)判斷為真再執行一次do後語句.s=s+t=0.0+1.0=1.0;t=0.25;i自加1,值變為3.while判斷為假,跳出語句.
4.C 整型變數i初始化為010,這是個八進製表示形式.轉化為十進制值為8.printf輸出語句各變數輸出是按照從右到左的方式輸出,也就是先輸出i++的值,(%d是使變數的值按照十進制的形式輸出)後面那個就是8,同時i的值自加為9,再輸出++i的值,先自加1,變為10輸出.
5.C 這里要注意的是含參數的宏定義,把參數一成不變地代進去,象該題D(a+b)*c,把a+b代替x,表達式就是a+b*a+b*c=4+5*4+5*2=34;如果你要得到(a+b)*(a+b)*c這種格式的話,在宏定義時就要改為#define D(x) (x)*(x)
6.A 這是概念性問題.找書看就知道了.
7.D x?a=b這個條件表達式就是當x為真時,值是a,假時為b 而x!=0這個關系表達式,就是當x不等於0時,為真.
8.D 指針變數p還沒有指向一個確定的整型變數,不能附值.
9.B 規定的格式 就是將字元串的首地址附給p.
10.A 這題和第三題類似,就是在do後語句中,順序變了.基本思路一樣.
⑶ 求C語言經典例題與答案
我這里有一份
是基礎的
傳你郵箱了
⑷ C語言幾道簡單的題目
【B】2.變數a與b分別初始為10與20,正確的語句是:
A:
int
a=10,
int
b=20;
B:
int
a=10,
b=20;
C:
int
a=10;
b=20;
D:
int
a=10;
b=20,
【C】3.以下選項中正確的C語言常量是:
A:
0xEfGh
B:
'XYZ'
C:
12.34e5
D:
'\5A'
【A】4.設有double
x;char
s[50];輸出雙精度浮點數x和字元串s,正確的語句是:
A:
printf("%lf
%s",x,s);
B:
printf("%ld
%s",x,s);
C:
printf("%lf
%s",&&x,s);
D:
printf("%lf
%s",x,s[50]);
【B】5.語句printf("%.1f,%d\n",10./4,10/8);的輸出是:
A:
2.5,1.25
B:
2.5,1
C:
1,1.25
D:
2,1.25
【B】6.設有char
ch;
與語句「ch=getchar();」等價的語句是:
A:
scanf("%c",ch)
B:
scanf("%c",&ch);
C:
printf("%c",ch);
D:
printf("%c",&ch);
【C】7.
設int
n,m;
使m為n的十進制百位數的語句是:
A:
m
=
n/100;
B:
m
=
n%100;
C:
m
=
n/100%10;
D:
m
=
n%10/100;
【C】8.設float
x,y;
使y為x的小數部分的語句是:
A:
y
=
(int)x;
B:
y
=
int(x);
C:
y
=
x-(int)x;
D:
y
=
x-int(x);
【C】9.
與語句「m
+=
(x=5)
+
(--y);」等價的語句序列是:
A:
m=m+x+y;
x=5;
y=y-1;
B:
x=5;
m=m+x+y;
y=y-1;
C:
x=5;
y=y-1;
m=m+x+y;
D:
y=y-1;
m=m+x+y;
x=5;
【B】10.
設int
n;
對應「n為二位數(10至99)」的判斷表達式是:
A:
10<=n<=99
B:
10<=n
&&&&
n<=99
C:
10<=n
||
n<=99
D:
10<=n,
n<=99
【A】11.
設char
ch;
判斷「ch為數字字元」的表達式是:
A:
ch>='0'
&&&&
ch<='9'
B:
ch>0
&&&&
ch<9
C:
ch>='0'
||
ch<='9'
D:
ch>=0
||
ch<=9
【A】12.
與語句「x+=(a++==b)?c:--d;」功能等價的語句段是:
A:
if
(a==b)
{
a=a+1;
x=x+c;
}
else
{
a=a+1;
d=d-1;
x=x+d;
}
B:
a=a+1;if
(a==b)
{
x=x+c;
}
else
{
d=d-1;
x=x+d;
}
C:
if
(a==b)
{
a=a+1;
x=x+c;
}
else
{
a=a+1;
x=x+d;
d=d-1;
}
D:
if
(a==b)
{
a=a+1;
x=c;
}
else
{
a=a+1;
d=d-1;
x=d;
}
【C】13.
設有in
i;
寫出下列語句的運行結果:
for
(i=0;i<5;i++)
printf("%d",i);
A:
0123456
B:
012345
C:
01234
D:
0123
【C】14.
設有char
ch;
寫出下列語句的運行結果:
for
(ch='B';ch<='F';ch++)
putchar(ch);
A:
ABCDEFG
B:
ABCDEF
C:
BCDEF
D:
BCDEFG
【A】15.
以下一維數組定義中,正確的是:
A:
int
a[5]
=
{
1,2,3,4,5
};
B:
int
a[5]
=
1,2,3,4,5;
C:
int
a[1
to
5];
D:
int
a[]
【D】16.以下字元串定義與賦值中,正確的是:
A:
char
s[80];
s
=
{'A',
'B',
'C'};
B:
char
s[80];
s
=
"ABC";
C;
char
s[80]
=
{"A",
"B",
"C"};
D:
char
s[80]
=
"ABC";
【B】17.
在字元串常用函數中,用於復制字元串的函數是:
A:
strlen
B:
strcpy
C:
strcat
D:
strcmp
【B】18.
設有定義:int
i,
a[10];
能正確輸入a數組各元素的語句是:
A:
i=10;
scanf("%d",
&a[i]);
B:
for(i=0;
i<=9;
i++)
scanf("%d",
a+i);
C:for(i=0;i<10;i++)scanf("%d",a[i]);D:for(i=0;i<10;i++)scanf("%d",
&a);
【B】19.
設有定義:int
a[10]={6,7,8,9,10};正確的解釋是:
A:
將5個初值依次賦給a[1]至a[5]
B:
將5個初值依次賦給a[0]至a[4]
C:
將5個初值依次賦給a[6]至a[10]
D:
將5個初值依次賦給a[5]至a[9]
⑸ 求一道C語言題的答案
#include<stdio.h>
int
main()
{char
s[]="I
am
a
***student,you
***are
**a
teach*****er.";
char
*p,*q;
for(p=q=s;*p;p++)
if(*p!='*')*q++=*p;
*q='