⑴ c語言題目:
如下:
#include <stdio.h>
void main( )
{
int i,j;
for(i=0;i<4;i++)
{
//開頭空格偏移
for(j=3;j>i;j--)
{
printf(" ");
}
//輸出7個*
for(j=0;j<7;j++)
{
printf("%c",'*');
}
//換行
printf(" ");
}
}
如圖:
⑵ 一個C語言題
k=(n=b>a)||(m=a<b)
子表達式n=b>a結果為真
對於邏輯或運算,左側表達式為真,整個邏輯或表達式結果就為真,所以沒有計算右側的表達式m=a<b,所以m還是原值0
⑶ C語言題庫
譚浩強的C語言的那麼教程的相配套的習題集就足夠滿足你的要求了
⑷ C語言題目!!
D是錯的,圖片中的下面也有文字說明。下面看看我的詳細解釋:
A選項:
char *ch; ch="abc"; //ch是個指針,"abc"是一個字元串常量,常量是在內存中開辟的一個空間保存的,這個空間是只讀的。語句中把ch指針指向這個常量的賦值是完全正確的。下面一段代碼演示"abc"是只讀常量:
void main()
{
char *ch; ch="abc";
*ch='d'; //程序可以編譯鏈接通過,但是運行到這里程序會非法操作,出現系統提示,內存只能讀
}
B選項:
char ch[]={'a','b','c'}; //這樣賦值也沒錯,程序也能編譯通過,但是你只能把ch當一個字元數組使用,而不能把它當字元串來使用,因為字元串必須用0結尾,你硬是要把它當字元串用,行,但是會出現很多不可意料的事情,比如printf(ch);屏幕上就可能出現:abc後面一堆其它的東西。這個選項錯,是因為題目是問「能給字元串正確賦值」的語句,准確說這是給字元數組賦值而非字元串賦值。
C選項:
char ch[3]="abc";//這是字元串賦值語句,在B中也說了,字元串必須0結尾,但是空間只有3,放入了abc再放不下0了,空間不夠,編譯就不會通過,所以錯了,char ch[4]="abc";就沒問題。
D選項:
char ch[4];ch="abc";//ch空間夠了,但是這是2條語句,char ch[4];已經開辟了空間,ch指向這個大小為4的空間,ch可以理解為一個指針,這個指針和這個4位元組的空間捆綁在一起的,對應關系。ch="abc";同A要把這個指針重新指到另外一個字元串常量,那原先4位元組空間就無主了,這編譯怎麼能讓你通過。這是比較通俗的解釋。正規的解釋是:ch[4]是一個字元數組,字元串常量是不可以這樣直接賦值給字元數組。除非是char ch[4]; strcpy(ch,"abc");這樣拷貝過去才沒問題。
解釋不好,有問題可追問,謝謝採納
⑸ c語言習題
27
A+'6'-'3' 而不是A+6-3,當然這不是重點,注意一下就好
而題目的意思是A的ascII碼+6的ASCii碼-3的ASCii碼,
答案是 'D' 而D的ASCII碼就是68
出題人的意思大概是D選項沒寫單引號,我認為出這題的人腦子不合適,不做深究。
28
考的是運算符的優先順序,和運算符的結合問題,這種問題是最沒意思的
(重復一下出題人腦子有泡)
那麼看運算優先順序,自加減優先順序高於賦值運算符,高於逗號運算符
表面上貌似是先做++,-- 在做賦值,最後做等號,哈答案是9
這是典型沒考慮運算符結合問題,
先說賦值和,逗號這兩個運算符,沒有任何問題,是同樣的二元運算符,會嚴格遵循向右結合,所以優先順序生效了
再看麻煩的++和--,同樣的向右結合,但是++ -- 寫在數字後面的時候貌似向右沒有操作數了
那麼向左結合就會被翻譯成 x,x++,a = x++ 就是 a = x ,x++;
把這個原理用在這道題上,先算sum = num ;
此時sum= num = 7
然後num++; num = 8;
再看下一個二元運算符,
sum++ sum = 8;
num++ num= 9;
此時sum 的值是8
擴展一下 C還有個三元運算符 ?:這個運算符一般沒人會考,你把它當成兩個連續向右結合的二元運算符就好了。這種題也就考試有用。
29題
考的是與運算符的一個小知識
與要為真的基本條件是1&1 = 1
0 & n = 0
如果計算第一個表達式為0
那麼n表達式是不會計算的,跳過了
所以m的值沒有變是2
30題
考的是運算精度問題
int * int = int
int / int = int
int *float = float
看出來了吧,向位數更高的靠攏
(int)2/(int)4 = 0 而不等於0.5
後面那個表達式*/%為同級運算符
為了使算式不出現/0或者%0異常都是從左向右結合運算的
先算括弧里的(x+y) = 7.3然後存儲結果時發現有強轉,即7,a%3 = 1
1*7 = 7
7%2 = 1
1/4 = 0
2.5+0 = 2.5
⑹ c語言試題
就做最後一題,其他的自己做吧……
編寫函數fun求1000以內所有8的倍數之和。
//#include "stdafx.h"//vc++6.0加上這一行.
#include "stdio.h"
int fun(void){
int i,sum;
for(sum=0,i=8;i<1001;sum+=i,i+=8);
return sum;
}
void main(void){
printf("The result is %d\n",fun());
}
⑺ C語言題目
樓主沒有搞清楚變數的作用域,main()函數中的a,b,c 與 fun()函數中的a,b,c 完全沒有關系,它們都是局部變數,main()函數中沒有修改自己的a,b,c,所以最後結果就是初始值。
⑻ c語言題目
你是說sizeof(a)會等於6嗎?因為數組a並沒有標明多大,所以在初始化用了多少他的空間就是多大,就相當於一個指針指向一塊內存空間而已,可以跟b一樣,b你懂了,a也就一樣
⑼ C語言題目
char string[32];
int i;
/* 計算長度 */
itoa(abs(in), string, 16);
number=strlen(string);
/* 求和 */
sum=0;
for( i= 0, i< number; i++ )
sum += atoi( string[i]) ;