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

c語言刁鑽題目

發布時間: 2022-11-26 09:18:02

① 幾道c語言問題!!!

1.A
if (a=0)-->不成立. 因為a=0是賦值,相當於if(0)

if(a>0)-->不成立;所以執行y+=y
-->結果:y=20
***********************************************
2.有兩個選擇
D:有語法錯誤,因為while(!x)後缺分號.
若不是上面情況則選B.原因是:
x=-1*x--->x=-1
!x-->!(-1)-->!(true)-->false
結果:退出循環.僅循環一次.
***********************************************
3.A
該題關鍵是判斷語句"i=10&&x>0".
i=10&&x>0-->i=(10&&x>0)-->i=(true && ture)-->i=true-->true
因此永遠循環.
***********************************************
4.C
第1次:i=0-->判斷成立(0<3)-->i=1(i++<3,指先比較i<3,再i加1)
第2次:判斷成立(1<3)-->i=2
第3次:判斷成立(2<3)-->i=3
第4次:判斷不成立(3<3)-->i=4
退出
結果:i=4
***********************************************
5.沒有合適答案.
執行後,y=1.原因如下:
第1次:y=1-->判斷成立(1<=50)
-->if(x>=0)-->條件成立-->break-->退出循環(並不進行y++操作)
結果:y=1
***********************************************
6.C
a(a(i))-->a(a(10))-->a(9)-->6
數組第1個元素為a(0)=1,a(1)=4,...
***********************************************
7.D
i-->1位元組
c-->2位元組
a-->4位元組
1+2+4=7
結果:位元組總數為7位元組.
***********************************************
8.B
應該:stu是用戶定義的結構類型,而不是struc stu.
***********************************************
9.C
C語言中規定不能進行指針"加"操作.
***********************************************
10.D
第1次循環:
s指向"ABCD"中"A"位置,p指向"ABCD"中"B"位置.
printf輸出"B"開始的字元串.
第2次循環:
p加1-->指向"ABCD"中"C"位置,判斷成立(s指向"A"位置).
printf輸出"C"開始的字元串.
第3次循環:
p加1-->指向"ABCD"中"D"位置,判斷成立.
printf輸出"D"開始的字元串.
第4次循環:
p加1-->指向"ABCD"中"D"後面,與s相關4個地址位,條件不成立.
退出.
輸出結果:
BCD
CD
D

② c語言簡單題目求助!

#include <stdio.h>

int main()

{

int n;

while(scanf("%d",&n)!=EOF)

{

printf("%s ",n%7?"no":"yes");

}

return 0;

}

③ C語言中的一些腦殘問題求解

其實就是a++和++a的區別嘛,很好理解啊。++a,實在語句之前執行,a++,是在語句完成後執行。
d=(b- - )+(++a)-a;
拆分一下這個語句,剩下的自己拆分(比較典型)
a=a+1;
d=b+a-a;
b=b-1;

下次請用追問,不要用評論,這樣不好看清楚。補充一下回答吧
c=(-a++)+(++b);//a=2,b=3,c=2,a的值為1++=2,負號不會影響a的賦值
d=(b- - )+(++a)-a;//a=3,b=2,d=3
e=(a/(++b))-(b/(--a));//a=2,b=3,e=3/3-3/2,這里注意,後面的--a不會影響前面的a
其實這還不是最深入的理解,看看這個吧:
int a = 1, b = 2, c=5;
c = (++a)+(++a)+a; //a=3,c=8
a = 1;b = 2; c=1;
c = a + (++a)+(++a); //a=3,c=7
a = 1;b = 2; c=1;
c = (++a)+ a + (--a);//a=1,c=5
a = 1;b = 2; c=1;
c = a + (c--);//這個最神奇:c=2

④ C語言刁鑽難題

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intsu(intn)//判斷是不是素數
{
inti;
if(n<2)//素數必須大於等於2
return0;
for(i=2;i*i<=n;i++)
if(n%i==0)
return0;
return1;
}
intmain()
{
inta[100];//用來存儲產生的隨機數
inti,n,cnt=0;//cnt表示素數個數
scanf("%d",&n);//要產生的隨機數個數
//srand(time());如果不加這句,每次產生的隨機數會是一樣的。srand()設置rand的起點,time是獲取當前系統時間
for(i=0;i<n;i++)
{
a[i]=rand();//產生隨機數被存儲到a數組
printf("%d",a[i]);//輸出
if(su(a[i]))//統計素數個數
cnt++;
}
if(cnt!=0)//如果有素數
{
for(i=0;i<n;i++)
if(su(a[i])
printf("%d",a[i]);
}
return0;
}

⑤ 問幾道C語言中的題目

對於第一題:我認為應該如下
#include "stdio.h"
main()
{
char a;
int b;
a=getchar(); scanf("%d",&b);
a=a-'A'+0;
b=b*2;
printf("%c %d",a,b);
}
對於第二題:在scanf函數中,符號*表示在本項讀入後不賦值給相應的變數,抑制本次的輸入,也就是這項的數值輸了也白輸。就該題而言,當輸入10 20 30時,由於*號出現在第二項,則第二項20就被抑制輸入了,由緊接的下一項30代替,而第三項因為沒有多餘數據輸入,保持原來的0不變。
對於第三題:必須了解scanf("%2d%2d",&a,&b);中%2d的含義,它表示輸入數據的寬度是2.這你就知道了吧?
對於第四題:我運行了一下,結果是a+b=30,會不會是你弄錯了,或者和編譯的系統有關?
對於第五題:我們要知道逗號表達式的運算是從左向右運算,然後整個表達式的值是最後一個式子的值。對於該題,先把2給i,然後進行++i的運算,的i為3,最後整個式子的值為i++,即3
對於第六題:對於運算符%要求左右兩邊均為整型,而對於右邊進行的f必須進行強制轉換,形式為(int)(f) 。這是特別需要引起注意的,int兩邊一定要有括弧,否則就不是強制轉換了。
對於第七題:對於b選項只要一個範例就可以,a代入kk>='A'為真,則kk>='A'‖kk<=』Z』為真,則會整個式子為假,將A代入kk>='A'為真,則kk>='A'‖kk<=』Z』為真,則會整個式子為假。判斷不出大小寫字母。
對於第八題:就重點說下B選項,對於符號‖來說,當左邊為真的時候,右邊的式子就不執行了,只有當左邊是假的時候才執行右邊的。對於在2到6之間的數,左邊(c>=2&&c<=6)為真,停止執行,整個式子為真,對於該范圍以外的,左邊(c>=2&&c<=6)為假,執行中間的(c!=3),為真,整個式子為真。
對於第九題:功能相同的都表示a為0的時候。輸出y,a不是0的時候,輸出x。也許你頗有疑問的是a選項。對於該選項,我們得看if(a) 表示什麼含義,只要a是不為0,if語句就會判斷條件為真,就執行下面的語句。
對於第十題:我們必須看清case 2: a++; b++; break;case 3: a++; b++; 這兩個語句是屬於switch(x)還是switch(y)的,顯然是switch(x)的。一起來看,x=1,執行switch(y),又因為y=0,執行case 0: a++; break;此時,a=1,b=0.然後程序就跳到case 2前面的} 號,注意沒有跳到整個程序外面,因為case 2前面的} 號的後面沒有 break。然後就執行case 2: a++; b++; break,此時=2,b=1。程序結束。

對於第11題:特別注意while語句後面有分號,表示執行空語句。當表達式y--的值是0的時候,就會跳出空語句,執行下面的語句,而此時顯然 y--是0,而y本身變成-1 。
對於第12題:k=5,執行while(--k)後,k的值為4,條件為真,就執行printf("%d",k-=3),得到k的值為1,接著while(--k)中的--k,得到k的值為0,條件為假,不執行printf("%d",k-=3)。
對於第13題:開始k=5,n=0;然後switch(k)判斷,執行default :n=0;k--;由於後面沒有break語句,就執行case 2: case 4:n+=2;k--;break;此時,n=2,k=3.滿足k>0&&n<5,接著做,k=3,就執行case 3:n+=1; break;此時n=3,k=3.滿足k>0&&n<5,接著做,執行case 3:n+=1; break;此時n=4,k=3,滿足k>0&&n<5,接著做,case 3:n+=1; break;此時n=5,k=3,不滿足,跳出循環,結束。

我不知道你14題哪裡不明白?

對於15題:x=8,第一次執行for語句然後if語句判斷8%3=2,為真,執行printf("%d, ",x--); 輸出8,x本身為7,再執行continue繼續循環,接著執行for語句中的x--,x為6。 第二次執行for語句,if判斷,6%3=0,為假,直接執行printf("%d, ",--x);就輸出5,x本身也是5.接著執行for語句中的x--,x為4。第三次執行for語句,if判斷,4%3=1,為真,執行printf("%d, ",x--); 輸出4,執行continue;接著執行for語句中的x--,x為3。第四次執行for語句,if判斷,3%3=0,為假,直接執行printf("%d, ",--x);就輸出2.

⑥ c語言編程題目

#include<stdio.h>
int main()
{
int i, j, T;
while (scanf("%d", &T) != EOF &&(T>=1&&T<=2000))
{
int a[T][2];
for (i = 0; i < T; i++)
for (j = 0; j < 2; j++)
scanf("%d", &a[i][j]);
for (i = 0; i < T; i++)
{
printf("case %d:\n", i + 1);
printf("%d\n", a[i][0] + a[i][1]);
}
}
return 0;
}

⑦ c語言基礎問題,匯編語言,請看下題應該選擇什麼

廠商值的是硬體和軟體的出品商,比如Windows是微軟的,還比如主板上的BIOS是指硬體上的。所以確實是提前編譯好的。這里你只需要去用就行
這個題目比較刁鑽。這個引號內的匯編很迷惑人。程序運行難道不是編譯嗎?這個時候如果我不看題的話。也會選D的

⑧ 求解c語言的一些題目 100分 好的話追加

序說明]
輸入 2 個整數lower 和 upper,輸出一張華氏一攝氏溫度轉換表,華氏溫度的取值范
圍是[lower,upper], 每次增加 20 F. 計算公式如下, 式中: c 表示攝氏溫度,f表示華氏溫度。
C= 5x(f一32)/9
運行示例:
Enter lower: 30
Enter upper: 35
fahr celsius
30 -1.1
32 0.0
34 1.1
[程序]
#include <stdio.h>
main( )
{ int fahr, lower, upper,
double celsius
printf (」Enter lower:」);
scanf ("%d」, &lower」);
printf ("Enter upper:」);
scanf (「%d」, &upper);
printf(」fahr celsius \n」);
for (fahr=lower;____(1)____;____(2)____){
celsius =____(3)____ ;
printf (「%d ____ (4)_____ \n「, fahr, celsius);
}
}
[供選擇的答案]

計算機等級考試試卷(二級C)第1頁(共7頁)

(l) A、 fahr <= upper B、fahr < upper
C 、 fahr >=uppa r D、 fahr > upper
(2) A、 fahr++ B、 fahr =fahr -2
C、 fahr + 2 D、fahr + 2
(3) A、5*(fahr – 32) /9 B、(5.0/9.0)*(fahr – 32)
C、 5/9*(fahr – 32) D、 5 * fahr - 32/9
(4) A、 %6d B、%6.2f C、%6.lf D、%6.0f
試題2 (每小題3分,共12分)
閱讀下列程序說明和程序. 在每小題提供的若干可選答案中, 挑選一個正確答案.
[程序說明]
輸入 2 個正整數 a 和 n, 求 a+aa+aaa+aa...a(n 個 a)之和.要求定義並調用函數
fn(a,n), 它的功能是返回aa...a(n個a).例如,fn(3,2)的返回值是33.
運行示例,
Enter a: 2
Enter n: 3
sum = 246
[程序]
#include<stdio.h>
main ( )
{ int i, n;
long a, sn;
long fn(long a, int n);
printf(「Enter a;」);
scanf (「%ld」, &a);
printf(「Enter n:」);
scanf(「%d」,&n);
_________(5)_______________
for ( i=1;i<=n; i++)
_________(6)____________
printf(「sum=%ld\n」,sn);
}
long fn(long a,int n)
{ int i;
long tn=0;
for(i=1;i<=n;i++) {
tn=tn+a;
________(7)____________
}
計算機等級考試試卷(二級C)笫 2 頁(共 7 頁)
(8)
}
[供選擇的答案]
(5) A sn=0; B ;
C sn=1; D sn=a;
(6) A sn=sn+fn(a, I ); B sn=sn+fn(a,n);
C sn=sn+fn(I,a); D sn=sn+fn(I,n);
(7) A tn=tn*10; B a=a*10;
C sn=tn*10; D sn=sn+a*10;
(8) A return; B return sn;
C return a; D return tn;
試題3(每小題3分,共12分)
閱讀下列程序說明和程序,在每小題提供的若干可選答案中,挑選一個正確答案。
[程序說明]
輸入一個以回車結束的字元串(少於80個字元),刪除其中除英文字母和數字字元以外的其他字元,再判斷新字元串是否對稱(不區分大小寫字母)。
運行示例1:
Enter a string : Madam I』m Adam
Yes
運行示例2:
Enter a string : elephant
No

#include <stdio.h>
#include <___(9)___>
main()
{ int flag ,i,k,length;
char str[80];
printf(「Enter a string:」);
gets(str);
i=k=0;
while(str[i]!=』\0』){
if(isupper(str[i])) str[i]=tolower(str[i]);
if(isdigit(str[i])//isalpha(str[i])){
(____10____)
k++;
}
i++;

計算機等級考試試卷(二級C)笫 3 頁(共 7 頁)
}
____(11)______
length=k;
flag=1;
for(k=0;k<=length/2;k++)
if(str[k]!=str[length-1-k]){
_____(12)______
break;}
if(flag) printf(「Yes\n」);
else printf(「No\n」);
}
[供選擇的答案]
(9) A 、ctype.h B、 string . h
C、 stdilb .h D、 math .h
(10) A、 i++; B、 str[k]=str[i];
C、 str[i]=str[k]; D、;
(11) A 、str[i]=』\0』; B 、str[i-1]=』\0』;
C、 str[k]=』\0』; D、 ;
(12) A、 flag=1; B、 flag=0;
C 、; D 、continue;

試題4 (每小題3分,共12分)
閱讀下列程序並回答問題,在每小題提供的若干可選答案中,挑選一個正確答案.
[程序]
#I include<stdio.h>
main()
{ int i,,m;
scanf(「%d」,&m);
for(i=2;i<=m/2;i++)
if(m%i==0){
printf(「%d#」,i);
break;} /*第8行*
printf(「%d」,i);}

(13)程序運行時,輸入5,輸出____13_____
A、3 B、3#3
C、3#4 D、3#5
(14)程序運行時,輸入9,輸出___14______

計算機等級考試試卷(二級C)笫 4頁(共 7 頁)

A、 3 B、 3#3
C、 3#4 D、 3#5
(15)將第8行改為」continue;」後,程序運行時,輸入9,輸出——。
A、 3 B、 3#3
C、 3#4 D、3#5
(16)將第8行改為「;「後,程序運行時,輸入9,輸出——。
A 、3 B、 3#3
C、 3#4 D、 3#5
試題5(每小題3分,共12分)
閱讀下列程序並回答問題,在每小題提供的若干可選答案中,挑選一個正確答案。
[程序]
#include<stdio.h>
main()
{int i,j,temp;
int a[3][3]={1,2,3,4,5,6,7,8,9};
void f(int *x,int *y);
for(i=0; i<3;i++)
for(j=0;j<3;j++)
if(i<j) f(&a[i][j],&a[j][i]); /*第8行*/
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf(「%2d」, a[i][j]);
}
void f(int *x,int *y)
{ int t;
t=*x; *x=*y; *y=t;
}
(17)程序的輸出是—(17)——。
A、3 2 1 6 5 4 9 8 7 B、 7 8 9 4 5 6 1 2 3
C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9
(18)將第8行改為」f(&a[I][j],&a[j][I]);」後,程序的輸出是——(18)——。
A、 3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3
C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9、
(19)將第8行改為」if(I<2) f(&a[I][j],&a[2-I][j]);」後,程序的輸出是——(19)——。
A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3
C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9、
(20)將第8行改為」if(j<2) f(&a[I][2-j]);」後,程序的輸出是——(20)——。

計算機等級考試試卷(二級C)笫 5頁(共 7 頁)

A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3
C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9
試題6(每小題3分,共12分)
#include<stdio.h>
main()
{ int i,x1,x2;
int a[5]={1,2,3,4,5};
void f1(int x,int y), f2 (int *x, int *y);
x1=x2=0;
for(i=1;i<5; i++){
if (a[i]<a[x1])
x2=i;
}
f2(&a[x1], &a[0]);
for (i=0;i<5;i++) printf (「%2d」,a[i]);
printf (「\n」);
f1 (a[x2], a[1]);
for (i=0; i<5;i++) printf (「%2d」,a[i]);
printf (「\n」);
f2(&a[x2], &a[4]);
for (i=0; i<5;i++) printf (「%2d」,a[i]);
printf (「\n」);
f1 (a[x1],a[3]);
for (i=0; i<5;i++) printf (「%2d」,a[i]);
printf (「\n」);
}
void f1 (int *x, int *y)
{ int t;
t=x; x=y; y=t;
}
void f2(int *x, int *y)
{ int t;
t=*x; *x=*y; *y=t;
}
(21) 程序運行時,第1行輸出——(21)——。
A.1 2 3 4 5 B。2 1 3 4 5

計算機等級考試試卷(二級C)笫 6頁(共 7 頁)
C、1 2 3 5 4 D、5 2 3 4 1
(22) 程序運行時,第2行輸出 :_____(22)_____
A、2 1 3 4 5 B、5 2 3 4 1
C、2 5 3 4 1 D、1 2 3 4 5
(23)程序運行時,第3行輸出 _______(23)______ .
A、1 2 3 5 4 B、2 5 3 4 1
C、1 2 3 4 5 D、5 2 3 4 1
(24)程序運行時,第4行輸出 _______(24)_____ .
A、5 2 3 1 4 B、1 2 3 4 5
C、1 2 3 5 4 D、5 2 3 4 1
試題7 (28 分)
從n個不同的元素中,每次取出 k個不同的元素,丕管其順序合並成一組,稱為組合.
組合種數計箅公式如下..
Cnk=n!/((n-k)!*k!)
1)定義函數fact(n)計算n!,類型double.
2)定義函數cal(k,n),計算組合種數Cnk,類型double.要求調用fact(n)計算n!.
3)定義函數main(),輸入正整數n,輸出n的所有組合數
Cnk,要求調用函數cal(k,n).

答案:
試題1:1、A 2、D 3、B 4、C
試題2:5、A 6、A 7、A 8、D
試題3:9、A 10、B 11、A 12、B
試題4:13、A 14、B 15、D 16、D
試題5:17、D 18、C 19、B 20、A
試題6:21、D 22、D 23、D 24、B
試題7:

# include 「stdio.h」
double fact(int n)
{int k; double result=1;
for(k=1;k<=n;k++)
result*=k;
return result;
}

double cal(int k, int n)
{double result;
result=fact(n)/(fact(n-k)*fact(k));
return result;
}

void main( )
{int n,k;
double x;
scanf(「%d」,&n);
for(k=1;k<=n;k++)
{x=cal(k,n);
printf(「%f\n」,x);
}
}

⑨ C語言的一些題目。會的幫解答一下。 謝謝

一、 改錯題
1、int a;
scanf(「%d」,&a);

2、if(a==b) printf(「Hello」);

3、if (ch==』A』) printf(「Item A selected」);

4、列印出1~50之間的所有整數:
for(i=1;i<=50;i++)printf(「%d」,i);

5、欲定義數組以對應數學公式中的a1、a2、a3、a4:
int a[3];
二、 程序閱讀與填空
1、交換變數a和b中值:t=a;a=b;b=t 。

2、判斷某整數m是否能被5整除,其表達式是 m%5=0 。

3、以下語句的循環次數為 50 次。For(i=1;i<=50;i++);

4、要給一個長度為4的一維數組a[]一次性賦初值分別為2,4,6,8,如何寫定義語句a[]={2,4,6,8} 。

5、程序填空,以下是求一個方陣主對角線上元素的和的程序段。
….
for(i=0;i<=3;i++)
for(j=0;j<=3;j++)
if (i=j ) s=s+ ;


6、7、 有語病吧?

8、有如下語句:int a=5,b=3;
int *p=&a,*q=&b;
*p=4;*q=a;
執行完這些語句後,變數a中存放的是 4 ,變數b中存放的是 5 。

9、有如下程序段:
if (a<b)
{
if (c==d) x=1;
else x=2;
}
若a的值為3,b的值為4,c的值為9,d的值為10,則執行完該程序段後,變數x的值是 2 。
(3分)

10、程序填空,列印出斐波那齊數列的前10項。
main()
{
int i,f[11];
f[1]=1;f[2]=1;
printf(「%d,%d,」,f[1],f[2]);
for(i=3;i<=10;i++)
{f[i]= f[i-1]+f[i-2]; printf(「%d」,f[i] );}
}

四、 編程題
1、 編程求解下列函數的值
程序代碼:
#include<stdio.h>
main()
{
int x,Y;
scanf("%d",&x);
if(x>=0)Y=x+1;
else Y=x+10;
printf("%d",Y);
}

2、求1~200之間自然數中的偶數之和
#include<stdio.h>
main()
{
int i,sum=0;
for(i=2;i<=200;i=i+2)sum+=i;
printf("%d",sum);
}

⑩ C語言這道關於swtich語句的題目,求解

輸出是#&——進入switch(a>0),由於a>0成立值為1,所以執行case 1:後的語句;case 1:後嵌套了一個switch(b<0),由於b<0為假值為0,但switch(b<0)中沒有case 0:,所以直接跳過switch(b<0;又由於switch(a>0)的case 1:後沒有break;,所以就要直接向下執行case 0:後的語句;case 0:後嵌套了switch(c==5),c==5為真值是1,所以執行switch(c==5)的case 1:後的語句printf("#");打出#來,接著被break;跳出switch(c==5),順序執行switch(a>0)的default:後的語句printf("&");指出&來,然後跳出switch(a>0)語句,執行printf("\n");回車結束程序。