當前位置:首頁 » 編程語言 » c語言題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言題

發布時間: 2022-02-09 01:02:13

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]) ;