c語言基礎試題
① 幾道c語言基礎題
建議你還是分開提問吧,給你試題 2 的程序:
#include<stdio.h>
intmain(void)
{
intxiao=0,da=0,shu=0;
chartmp;
printf("請輸入字元串,#結束:");
while(tmp=getch())
{
if(tmp=='#')
break;
if(tmp>='a'&&tmp<='z')
xiao++;
elseif(tmp>='A'&&tmp<='Z')
da++;
elseif(tmp>='0'&&tmp<='9')
shu++;
printf("%c",tmp);
}
printf("
小寫字元數:%d
",xiao);
printf("大寫字元數:%d
",da);
printf("數字字元數:%d
",shu);
return0;
}
② c語言程序設計的基礎題目求教,請給解析(多追積分)
1:已知a=13,b=6,a%b的十進制數值為()
a%b,整數%整數,表示求余數,因此13%6=1
2:設x的值為15,n的值為了2,則表達式x%=(n+3)運算後的x的值是()
x%=(n+3)相當於x=x%(n+3),x%=n+3也表示x=x%(n+3),類似的有+=,-=,*=,/=
因此x=x%(n+3),x=15%5,x=0.
3:int
x=y=4,z=2;x=y==z;則x的值為()
x=y=4,等號是右結合的,也就是這種情況下要從右向左計算,因此相當於y=4;x=y;
而x=y==z,==的優先順序比=高,因此相當於x=(y==z),y=4,z=2所以y==z不成立,所以y==z這個表達式的值是false,也就是0,所以x=0
4:若有定義:int
a=10,b=9,c=8;接著順序執行後下列語句是,變數b中的值是()
c=(a-=(b-5));
c=(a%11)+(b=3);
由上面的幾題為基礎,
c=(a-=(b-5))相當於c=(a=a-(b-5)),c=(a=10-(9-5)),c=(a=6),所以a=6,c=6,b=9(表達式b-5並沒有改變b的值)
c=(a%11)+(b=3)相當於,c=6%11+3=6+3=9,所以a=6,c=9,b=3
5:int
x=2,y=2,z=0;則表達式的x==y>z的值為()
x==y>z這個一個復合邏輯表達式,>優先順序高於==,所以相當於x==(y>z),y>z成立,所以y>z==1,x==1不成立,所以表達式的值為0
6:若有以下定義和語句int
a[4]={0,1,2,3},*p;
p=&a[2];則*--p的值是()
p=&a[2];表示p是a[2]的地址
*--p相當於*(--p),就是先將p減1,也就是a[1]的地址,然後用*操作符取出地址中的值,也就是1
③ 下半年計算機二級c語言基礎試題
下半年計算機二級c語言基礎試題
任何設計活動都是在各種約束條件和相互矛盾的需求之間尋求一種平衡,程序設計也不例外。下面是我收集的關於計算機二級c語言基礎試題,希望大家認真閱讀!
下半年計算機二級c語言基礎試題1
一、選擇:
1.給出以下定義:
char acX[ ]= "abcdefg";
char acY[ ]= {'a','b','c','d','e','f','g'};
則正確的敘述為( )
A) 數組acX和數組acY等價 B) 數組acX和數組acY的長度相同
C) 數組acX的長度大於數組acY的長度 D) 數組acX的長度小於數組acY的長度
答案:C
2.
void example(char acHello[])
{
printf("%d", sizeof(acHello));
return;
}
void main()
{
char acHello[] = "hello";
example(acHello);//數組名稱作參數,傳的是地址,一個地址佔四個位元組
return;
}
的輸出是
A 4 B 5 C 6 D不確定
答案:A
3. 有以下程序段
char acArr[]= "ABCDE";
char *pcPtr;
for(pcPtr = acArr; pcPtr < acArr + 5; pcPtr++)
{
printf("%s/n", pcPtr);
}
return;
輸出結果是( )
A) ABCD B) A C) E D) ABCDE
B D BCDE
C C CDE
D B DE
E A E
答案:D
4.在中斷中,不能同步獲取信號量,但是可以釋放信號量。
A.正確 B.錯誤
答案:A
5.以下敘述中不正確的是( )
A) 在不同的函數中可以使用相同名字的變數
B) 函數中的形式參數是局部變數
C) 在一個函數內定義的變數只在本函數范圍內有效
D) 在一個函數內的復合語句中定義的變數在本函數范圍內有效(復合語句指函數中的成對括弧構成的代碼)
答案:D
6.設有如下定義:
unsigned long pulArray[] = {6, 7, 8, 9, 10};
unsigned long *pulPtr;
則下列程序段的輸出結果為( )
pulPtr = pulArray;
*(pulPtr + 2) += 2;
printf ("%d,%d/n", *pulPtr, *(pulPtr + 2));
A)8,10 B)6,8 C)7,9 D)6,10
答案:D
7. 定義結構體時有下面幾種說法,請指出正確的(多選):______
A、結構體中的每個部分,最好進行四位元組對齊;
B、結構體的總長度最好是四位元組對齊;
C、結構中成員的存放不用考慮位元組對齊情況;
答案:A、B
8.void example()
{
int i;
char acNew[20];
for(i = 0; i < 10; i++)
{
acNew[i] = '0';
}
printf("%d/n", strlen(acNew));
return;
}
的輸出為( )
A 0 B 10 C 11 D不確定
答案:D
9.switch(c)中的c的數據類型可以是char、long、float、unsigned、bool. ( )
A. 正確 B. 錯誤
答案:B
10. 網路上傳輸的位元組序默認是大位元組的,如果主機是小位元組序,在網路通信時則須進行位元組序轉換;如果主機是
大位元組序,為了程序的一致性及可移植性,最好也在程序中加上位元組序轉換的操作(空操作)。
A. 正確 B.錯誤
答案:A
二、 填空題
1、 C語言函數返回類型的默認定義類型是
2、 函數的實參傳遞到形參有兩種方式: 和
3、在一個函數內部調用另一個函數的調用方式稱為 。在一個函數內部直接或間接調用該函數成為函數 的調用方式
4、C語言變數按其作用域分為 和
5、凡在函數中未指定存儲類別的局部變數,其默認的存儲類別為
三、 看程序寫結果
1、#include
Int abc(int u,int v);
Void main()
{int a=24,b=16,c;
c=abc(a,b);
printf(「value=%d」,c);
}
Int abc(int u, int v)
{int w;
While(v)
{w=u%v;
u=v;
v=w;
}
Return u;
}
2、#include
int x1=30,x2=40;
main()
{int x3=10,x4=20;
sub(x3,x4);
sub(x2,x1);
printf(「%d,%d,%d,%d 」,x3,x4,x1,x2);
}
sub(int x,int y)
{x1=x;x=y;y=x1;}
3、#include
Main()
{int i=5;
Printf(「%d 」,sub(i));
}
sub(int n)
{int a;
If(n==1) return 1;
a=n+sub(n-1);
return (a);
}
4、#include
Void fun()
{static int m;
m+=2;
printf(「%d 」,m);
}
Main()
{int a;
For(a=1;a<=4;a++) fun();
Printf(「 」);
}
四、 編程題
1、 編寫一個函數,判斷任一整數是否為素數,用main()函數調用並測試之。
2、 用遞歸方法求n!
3、 有一個一維數組,內放10個學生成績,寫一個函數,求出平均分,最高分和最低分
下半年計算機二級c語言基礎試題2
1.下列敘述中正確的是( )。
A. 所有數據結構必須有根結點
B. 所有數據結構必須有終端結點(即葉子結點)
C. 只有一個根結點,且只有一個葉子結點的數據結構一定是線性結構
D. 沒有根結點或沒有葉子結點的數據結構一定是非線性結構
【答案】D
【解析】D項正確,線性結構的特點是:
①集合中必存在「第一個元素"且惟一;
②集合中必存在「最後一個元素」且惟一;
③除最後一個元素外,其他數據元素均有惟一的「後繼;
④除第一個元素外,其他數據元素均有惟一的「前驅」。所以沒有根結點或沒有葉子結點的數據結構一定是非線性結構。AB兩項錯誤,不是所有數據結構都必須有根結點和葉子結點;C項錯誤,數據結構中若有中間結點不滿足只有一個前件或者後件的條件,就不是線性結構。答案選擇D選項。
2. 以下敘述中錯誤的是( )。
A. C語言中的每條可執行語句和非執行語句最終都將被轉換成二進制的機器指令
B. C程序經過編譯、鏈接步驟之後才能形成一個真正可執行的二進制機器指令文件
C. 用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中
D. C語言源程序經編譯後生成後綴為.obj的目標程序
【答案】A
【解析】A項錯誤,注釋語句不會被翻譯成二進制的'機器指令。C源程序經過C編譯程序編譯之後生成後綴為.obj的二進制文件(稱為目標文件),然後由「鏈接程序」(Link)的軟體把.obj文件與各種庫函數連接起來生成一個後綴為.exe的可執行文件。答案選擇A選項。
3. C語言主要是藉助以下( )功能來實現程序模塊化的。
A. 定義函數
B. 定義常量和外部變數
C. 三種基本結構語句
D. 豐富的數據類型
【答案】A
【解析】C程序的模塊化主要通過函數來實現。C語言允許對函數單獨進行編譯,從而可以實現模塊化。答案選擇A選項。
4. 有以下程序段:
char ch;
int k;
ch='a';
k=12;
print("%c,%d,",h,ch,k);
printf("k=%d ",k);
已知字元a的ASCII碼十進制值為97,則執行上述程序段後輸出的結果是( )。
A. 因變數類型與格式描述符的類型不匹配輸出無定值
B. 輸出項與格式描述符個數不符,輸出為零值或不定值
C.a,97,12k=12
D. a,97,k=12
【答案】D
【解析】字元變數的值是該字元的ASCII碼值,可以參與整型變數所允許的任何運算。"ch='a",%c表示以字元格式輸出ch的值,所以輸出為a;%d表示以十進制代碼的形式輸出ch的值,為97;k沒有對應的輸出格式,不輸出。在第二個語句中,首先輸出"k=",然後以十進制代碼輸出k的值,為12。答案選擇D選項。
5. 下列敘述中正確的是( )。
A. 棧是「先進先出」的線性表
B. 隊列是「先進後出"的線性表
C. 循環隊列是非線性結構
D. 有序線性表既可以採用順序存儲結構,也可以採用鏈式存儲結構
【答案】D
【解析】有序的線性表既可採用順序存儲結構,也可以採用鏈式存儲結構。A項錯誤,棧是「先進後出"的線性表B項錯誤,隊列是「先進先出"的線性表;C項錯誤,循環隊列是線性結構的,有序的線性表既可採用順序存儲結構,也可採用鏈式存儲結構。
答案選擇D選項。
6. 某二叉樹的中序序列為DCBAEFG,後序序列為DCBGFEA,則該二叉樹的深度(根結點在第1層)為( )。
A. 5
B. 40
C.3
D. 2
【答案】B
【解析】二叉樹的後序序列為DCBGFEA,則A為根結點。中序序列為DCBAEFG,則DCB為左子樹結點,EFG為右子樹結點。同理B為C父結點,C為D父結點。根據分析,可畫出左子樹,同理E為F父結點,F為G父結點。根據分析,可畫出右子樹,故二叉樹深度為4層。答案選擇B選項。
7. 設有定義:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};,則以下賦值語句中正確的是( )。
A. s[0]=m[1];
B. s=m;
C.s.n=m.n;
D. s[2].x=m[2].x;
【答案】A
【解析】定義了結構體類型數組s,長度為2,結構體類型數組m,長度為2,並對數組m進行了初始化。同類型的結構體可以直接用變數名實現賦值,A項正確;數組名為數組首地址,地址常量之間不可以相互賦值,B項錯誤;數組名為地址常量不是結構體變數,不能引用成員,C項錯誤;s[2]與m[2]數組越界,D項錯誤。答案選擇A選項。
8. 關於C語言標識符,以下敘述錯誤的是( )。
A. 標識符可全部由數字組成
B. 標識符可全部由下劃線組成
C. 標識符可全部由小寫字母組成
D. 標識符可全部由大寫字母組成
【答案】A
【解析】C語言標識符只能由字母、數字、下劃線構成,且只能以字母、下劃線開頭,故答案選擇A選項。
9. 以下程序段中的變數已定義為int類型,則
sum=pAd=5;
pAd=sum++,++pAd,pAd++;
printf("%d ",pAd);
程序段的輸出結果是( )。
A. 6
B. 4
C. 5
D. 7
【答案】D
【解析】自增和自減運算符的兩種用法:前置運算,運算符放在變數之前,規則是先使變數的值增(或減)1,然後以變化後表達式的值參與其他運算;後置運算,運算符放在變數之後,規則是變數先參與其他運算,然後再使變數的值增(或減)1。執行pAd=sum++,sum++是後置自增,執行完後,pAd=5,sum=6。++pAd和pAd++語句中沒有其他運算,即效果相同,pAd分別加1,兩句執行完後,pAd7。答案選擇D選項。
;④ 求高手幫忙做一些C語言試題
第一題、單項選擇題(每題1分,5道題共5分)
1、設x和y均為int型變數,則以下語句:x=x+y; y=x-y; x=x-y; 的功能是:
D、交換x和y中的值
2、已說明int a=256,執行語句printf(」%x」 ,a);的結果是:
A、100
3、以下合法的賦值語句是:
A、x=y=100;
4、已說明int a=256,執行語句printf(」%x」 ,a);的結果是()
A、100
5、函數putchar可以向終端輸出一個( )。
D、字元
第二題、多項選擇題(每題2分,5道題共10分)
1、以下合法的表達式是:
A、x=y=200
B、5+(x=10)
D、y+x==10
2、x、y、z被定義為int 型常量,若從鍵盤給 x、y、z輸入數據,不正確的輸入語句是:
A、input x、y、z;
C、scanf(」 %d%d%d」,x, y, z);
D、read (」 %d%d%d」,&x,&y,&z);
3、不能正確表示條件x≥y≥z的C語言表達式是:
A、(x>=y)&(y>=z)
C、(x>=y).AND.(y>=z)
D、(x>=y>=z)
4、已知「int a, b; scanf ( "%d%d", &a, &b );」。若為a和b輸入值,可以作為輸入分隔符的是( )。
B、空格
C、回車
D、Tab鍵
5、下列屬於C語言標准庫函數的為()。
A、sin()
B、sqrt()
C、log10()
E、pow()
F、isalpha()
第三題、判斷題(每題1分,5道題共5分)
1、表達式18/4*sqrt(4.0)/8值的數據類型為double。
正確
2、邏輯關系「a≥10或a≤0」正確表示的C語言表達式是:a>=10 or a<=0 。
錯誤
3、a=b=58是合法的C語言賦值表達式。
正確
4、C語言表達式值的類型可以根據環境來確定。
錯誤
5、若有int x=5;,則(float)x就把x轉換為float類型了。
錯誤
⑤ 求解C語言基礎題。
一、平台:數組中連續相等的元素就是一個平台。
二、最長平台:就是在所有平台中找出最長的那個。
三、方法不止一種,從完整程序思路,至少包含一個實現功能的函數及列印輸出的函數。
下面是我寫的演示代碼:
遍歷數組,找出最長平台,返回其在數組中起點和終點位置(返回值是指針數組)。異常直接拋出自行處理。
#include<stdio.h>
#define ML 20
int **findMaxG(int nums[],int len);//找出最長平台,並返回平台起始和結束的位置(指針數組)。異常返回NULL
int showMaxG(int *pMax[2]);//列印輸出最長的平台。異常返回0
int main()
{
int **pMax=NULL;
int nums[ML]={1,1,2,3,3,3,4,5,6,6,7,7,7,7,8,8,8,9,10,10};
pMax=findMaxG(nums,ML);
return !showMaxG(pMax);
}
int showMaxG(int *pMax[2])
{
int *p0=pMax[0];
if(pMax[0]==NULL || pMax[1]==NULL || pMax[1]<pMax[0]) return 0;
printf("最長平台為:");
while(p0<=pMax[1])
printf("%d ",*p0++);
printf(" ");
return 1;
}
int **findMaxG(int nums[],int len)
{
static int *pMax[2];
int n=1,maxn=1,*p0=nums,*p1=nums;
if(len<=0) return NULL;
pMax[0]=pMax[1]=nums;
while(p0<&nums[len-1])
{
p1=p0+1;
while(p1<&nums[len-1])//統計當前平台長度
{
if(*p1!=*p0)//開始統計新的平台,之前平台在p1-1處結束
break;
else
n++,p1++;
}
if(n>maxn)
maxn=n,pMax[0]=p0,pMax[1]=p1-1;//記錄最大的平台
p0=p1,n=1;//復位,准備統計下一個平台
}
return pMax;
}
⑥ C語言試題
自考「C語言程序設計」模擬試題一
2008-1-3
相關自考頻道點評提問自考網上培訓
自考「C語言程序設計」模擬試題一
一、填空題
1、C語言中基本的數據類型有:______、______ 、______ .
2、C語言中普通整型變數的類型說明符為______,在內存中占______位元組,有符號普通整型的數據范圍是______ .
3、整數-35在機內的補碼表示為______.
4、執行下列語句int a=8; a+=a-=a*a; 後,a的值是______.
5、有如下語句:char A[ ]={「I am a student」}; 該字元串的長度是______,A[3]=______.
6、符號「a」和『a』的區別是______.
7、所謂「指針」就是______.「&」運算符的作用是______.「*」運算符的作用是______.
8、有如下輸入語句:scanf(「a=%d,b=%d,c=%d」,&a,&b,&c);為使變數a的值為1,b的值為3,c的值為2,從鍵盤輸入數據的正確形式應是______.
二、選擇題
1、設整型變數a為5,使b不為2的表達式是( )。
A. b=a/2 B. b=6-(——a) C. b=a%2 D. b=a>3?2:1
2、為了避免嵌套的條件分支語句if-else的二義性,C語言規定:C程序中的else總是與( )組成配對關系。
A. 縮排位置相同的if B. 在其之前未配對的if
C. 在其之前未配對的最近的if D.同一行上的if
3、以下程序的輸出結果是( )。
int x=10,y=10;
printf(「%d %d\n」,x——,——y);
A. 10 10 B. 9 9 C. 9 10 D. 10 9
4、設A為存放(短)整型的一維數組,如果A的首地址為P,那麼A中第i 個元素的地址為( )。
A.P+i*2 B. P+(i-1)*2 C. P+(i-1) D. P+i
5、選出下列標識符中不是合法的標識符的是( )。
A. hot_do B. cat1 C. _pri D. 2ab
6、以下程序的輸出結果是( )。
int a=5;
float x=3.14;
a*=x*(『E』 - 『A』);
printf(「%f\n」,(float)a);
A. 62.000000 B. 62.800000 C. 63.000000 D. 62
7、設有說明double(*p1)[N];其中標識符p1是( )。
A. N個指向double型變數的指針。
B. 指向N個double型變數的函數指針。
C. 一個指向由N個double型元素組成的一維數組的指針。
D.具有N個指針元素的一維指針數組,每個元素都只能指向double型量。
8、在C程序中有如下語句:char *func(int x,int y);它是( )。
A. 對函數func的定義。 B. 對函數func的調用。
C.對函數func的原型說明。 D. 不合法的。
9、以下程序的輸出結果是( )。
char str[15]=「hello!」;
printf(「%d\n」,strlen(str));
A. 15 B. 14 C. 7 D. 6
10、分析以下程序的輸出結果是( )。
main()
{int a=5,b=-1,c;
c=adds(a,b);
printf(「%d」,c);
c=adds(a,b);
printf(「%d\n」,c); }
int adds(int x,int y)
{static int m=0,n=3;
n*=++m;
m=n%x+y++;
return(m); }
A. 2,3 B. 2,2 C. 3,2 D. 2,4
11、下列描述中不正確的是( )。
A. 字元型數組中可能存放字元串。
B. 可以對字元型數組進行整體輸入、輸出。
C. 可以對整型數組進行整體輸入、輸出。
D. 不能在賦值語句中通過賦值運算符「=」對字元型數組進行整體賦值。
12、以下程序的輸出結果是( )。
#define f(x) x*x
main()
{int a=6,b=2,c;
c=f(a)/f(b);
printf(「%d\n」,c);
}
A. 9 B. 6 C. 36 D. 18
13、設有如下定義: int x=10,y=3,z;
則語句printf(「%d\n」,z=(x%y,x/y)); 的輸出結果是( )。
A. 1 B. 0 C. 4 D. 3
14、定義如下變數和數組:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};
則語句for(i=0;i<3;i++) printf(「%d 」,x[i][2-i]); 的輸出結果是( )。
A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9
15、以下對二維數組a進行正確初始化的是( )
A. int a[2][3]={{1,2},{3,4},{5,6}}; B. int a[ ][3]={1,2,3,4,5,6};
C. int a[2][ ]={1,2,3,4,5,6}; D. int a[2][ ]={{1,2},{3,4}};
16、兩次運行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結果是( )。
int x;
scanf(「%d」,&x);
if(x++>5) printf(「%d」,x);
else printf(「%d\n」,x - -);
A. 7和5 B. 6和3 C. 7和4 D. 6和4
17、設有如下定義: char *aa[2]={「abcd」,「ABCD」}; 則以下說法中正確的是( )。
A)aa數組成元素的值分別是「abcd」和ABCD「
B)aa是指針變數,它指向含有兩個數組元素的字元型一維數組
C)aa數組的兩個元素分別存放的是含有4個字元的一維字元數組的首地址
D)aa數組的兩個元素中各自存放了字元『a』和『A』的地址
18、下列程序的輸出結果是( )。
char *p1=「abcd」, *p2=「ABCD」, str[50]=「xyz」;
strcpy(str+2,strcat(p1+2,p2+1));
printf(「%s」,str);
A. xyabcAB B. abcABz C. ABabcz D. xycdBCD
19、下列程序的輸出結果是( )。
int a[5]={2,4,6,8,10},*P,* *k;
p=a; k=&p;
printf(「%d」,*(p++));
printf(「%d\n」,* *k);
A. 4 4 B. 2 2 C. 2 4 D. 4 6
20、不能把字元串:Hello!賦給數組b的語句是( )。
A. char b[10]={『H』,『e』,『l』,『l』,『o』,『!』};
B. char b[10]; b=「Hello!」;
C. char b[10]; strcpy(b,「Hello!」);
D. char b[10]=「Hello!」;
三、讀程序題
1、float f=3.1415927;
printf(「%f,%5.4f,%3.3f」,f,f,f);
則程序的輸出結果是 .
2、int x=6, y=7;
printf(「%d,」,x++);
printf(「%d\n」,++y);
程序的輸出結果是 .
3、a=3;
a+=(a<1)?a:1;
printf(「%d」,a);
結果是.
4、for (a=1,b=1;a<=100;a++)
{ if(b>=20) break;
if(b%3==1)
{b+=3; continue;}
b-=5; }
程序的輸出結果a的值為 .
5、int y=1, x, *p, a[ ]={2,4,6,8,10};
p=&a[1];
for(x=0;x<3;x++)
y + = * (p + x);
printf(「%d\n」,y);
程序的輸出結果y的值是 .
四、程序填空題
1、從鍵盤上輸入10個數,求其平均值。
main()
{int i;
float f,sum;
for(i=1,sum=0.0;i<11;i++)
{ ;
; }
printf(「average=%f\n」,sum/10); }
2、以下程序是建立一個名為myfile的文件,並把從鍵盤輸入的字元存入該文件,當鍵盤上輸入結束時關閉該文件。
#include
main()
{ FILE *fp;
char c;
fp= ;
do{
c=getchar();
fputs(c,fp);
}while(c!=EOF);
}
3、以下程序的功能是:從鍵盤上輸入若干個學生的成績, 統計並輸出最高成績和最低成績,當輸入負數時結束輸入。請填空。
main()
{ float x,amax,amin;
scanf(「%f」,&x);
amax=x; amin=x;
while( )
{ if(x>amax) amax=x;
if( ) amin=x;
scanf(「%f」,&x); }
printf(「\namax=%f\namin=%f\n」,amax,amin); }
五、編程題
1. 三個整數a、b、c,由鍵盤輸入,輸出其中最大的一個數。
2.輸出1900~2000年中所有的閏年。每輸出3個年號換一行。(判斷閏年的條件為下面二者之一:能被4整除,但不能被100整除。或者能被400整除。)
3.請編一個函數int fun(int a),它的功能是:判斷a是否是素數,若a是素數,返回1;若不是素數,返回0.A的值由主函數從鍵盤讀入。
4.有N個學生,每個學生的信息包括學號、性別、姓名、四門課的成績,從鍵盤上輸入N個學生的信息,要求輸出總平均成績最高的學生信息,包括學號、性別、姓名和平均成績。
參考答案
一、填空題
(1)整型、實型、字元型。
(2)int,2,-32768~ +32767
(3)1111111111011101
(4)- 112
(5)14,『m』
(6)「a」是字元串常量,而『a』是字元常量。
(7)存放地址值的變數或常量,或者答地址。
(8)取運算對象的地址。 取指針變數所指的內容。a=1,b=3,c=2
二、選擇題
1、C 2、C 3、D 4、B 5、D
6、A 7、C 8、C 9、D 10、A
11、C 12、C 13、D 14、C 15、B
16、C 17、D 18、D 19、C 20、B
三、閱讀程序題
(1) 3.141593,3.1416,3.142
(2) 6,8
(3) 4
(4) 22
(5) 19
四、程序填空題
1、scanf(「%f」,&f); sum+=f;
2、fopen(「myfile」,w) fclose(fp);
3、x>=0.0 x<=amin
五、編程題
1、main()
{int a,b,c;
printf(「請輸入三個整數:」);
scanf(「%d,%d,%d」,&a,&b,&c);
if(a
if(b
else printf(「max=%d\n」,b);
else if(a
else printf(「max=%d\n」,a);}
2、#include「stdio.h」
main()
{int I,n;
for(n=0,I=1900;I<=2000;I++)
{if(I%4==0&&I0!=0||I@0==0)
{printf(「%d 」,I);n++;}
if(n%3==0)
printf(「\n」);} } }
3、#include「stdio.h」
int fun(int a)
{int I;
if(a==2) return 1; I=2;
while((a%I)!=0&&I<=sqrt((float)a))
I++;
if(a%I==0)
{printf(「%d is not a prime!」,a);
return 0;}
printf(「%d is a prime!」,a);
return 1; }
main()
{int x;
printf(「\n please enter a number:」);
scanf(「%d」,&x);
printf(「%d\n」,fun(x)); }
4、#include「stdio.h」
#define N 3
struct student
{long stu_num; char sex;
char name[15]; int score[4];
float average; };
main()
{int I,j,index; float sum,max;
struct student stuarr[N];
for(I=0;I
{printf(「please input %d student information:\n」,I+1);
scanf(「%ld,%c,%s」,&stuarr[I].stu_num,&stuarr[I].sex,stuarr[I].name);
for(j=0;j<4;j++)
scanf(「%d」,&stuarr[I].score[j]); }
for(I=0;I
{sum=0.0;
for(j=0;j<4;j++)
sum+=stuarr[I].score[j];
stuarr[I].average=sum/4.0;}
max=stuarr[0].average;
index=0;
for(I=1;I
if(stuarr[I].average>max)
{max=stuarr[I].average;
index=I; }
printf(「總平均成績最高的學生信息是學號=%ld,性別=%c,姓名=%s,平均成績=%4.1f\n」,stuarr[index].stu_num,stuarr[index].sex,stuarr[index].name,stuarr[index].average);
}
⑦ c語言程序設計試題
c語言程序設計試題
闡述編程語言的概念,學習進制轉換以及程序的基本運行原理,讓大家先有一個整體上的認識。下面是我整理的關於c語言程序設計基礎知識,希望大家認真閱讀!
【程序1】
題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?
1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去
掉不滿足條件的排列。
2.程序源代碼:
代碼如下:
#include "stdio.h"
#include "conio.h"
main()
{
int i,j,k;
printf(" ");
for(i=1;i<5;i++) /*以下為三重循環*/
for(j=1;j<5;j++)
for (k=1;k<5;k++)
{
if (i!=k&&i!=j&&j!=k) /*確保i、j、k三位互不相同*/
printf("%d,%d,%d ",i,j,k);
}
getch();
}
【程序2】
題目:企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高
於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可可提
成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於
40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於
100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?
1.程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。
2.程序源代碼:
代碼如下:
#include "stdio.h"
#include "conio.h"
main()
{
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0. 1;
bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;
if(i<=100000)
bonus=i*0.1;
else if(i<=200000)
bonus=bonus1+(i-100000)*0.075;
else if(i<=400000)
bonus=bonus2+(i-200000)*0.05;
else if(i<=600000)
bonus=bonus4+(i-400000)*0.03;
else if(i<=1000000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
printf("bonus=%d",bonus);
getch();
}
【程序3】
題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
1.程序分析:在10萬以內判斷,先將該數加上100後再開方,再將該數加上268後再開方,如果開方後
的結果滿足如下條件,即是結果。請看具體分析:
2.程序源代碼:
代碼如下:
#include "math.h"
#include "stdio.h"
#include "conio.h"
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++)
{
x=sqrt(i+100); /*x為加上100後開方後的結果*/
y=sqrt(i+268); /*y為再加上168後開方後的結果*/
if(x*x==i+100&&y*y==i+268) /*如果一個數的平方根的平方等於該數,這說明此數是完全平方數*/
printf(" %ld ",i);
}
getch();
}
【程序4】
題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
1.程序分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的.第幾天,特殊
情況,閏年且輸入月份大於3時需考慮多加一天。
2.程序源代碼:
代碼如下:
#include "stdio.h"
#include "conio.h"
main()
{
int day,month,year,sum,leap;
printf(" please input year,month,day ");
scanf("%d,%d,%d",&year,&month,&day);
switch(month) /*先計算某月以前月份的總天數*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
sum=sum+day; /*再加上某天的天數*/
if(year%400==0||(year%4==0&&year%100!=0)) /*判斷是不是閏年*/
leap=1;
else
leap=0;
if(leap==1&&month>2) /*如果是閏年且月份大於2,總天數應該加一天*/
sum++;
printf("It is the %dth day.",sum);
getch();
}
【程序5】
題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。
1.程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,
然後再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。
2.程序源代碼:
代碼如下:
#include "stdio.h"
#include "conio.h"
main()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /*交換x,y的值*/
if(x>z)
{t=z;z=x;x=t;} /*交換x,z的值*/
if(y>z)
{t=y;y=z;z=t;} /*交換z,y的值*/
printf("small to big: %d %d %d ",x,y,z);
getch();
}
【程序6】
題目:用*號輸出字母C的圖案。
1.程序分析:可先用'*'號在紙上寫出字母C,再分行輸出。
2.程序源代碼:
代碼如下:
#include "stdio.h"
#include "conio.h"
main()
{
printf("Hello C-world! ");
printf(" **** ");
printf(" * ");
printf(" * ");
printf(" **** ");
getch();
}
【程序7】
題目:輸出特殊圖案,請在c環境中運行,看一看,Very Beautiful!
1.程序分析:字元共有256個。不同字元,圖形不一樣。
2.程序源代碼:
代碼如下:
#include "stdio.h"
#include "conio.h"
main()
{
char a=176,b=219;
printf("%c%c%c%c%c ",b,a,a,a,b);
printf("%c%c%c%c%c ",a,b,a,b,a);
printf("%c%c%c%c%c ",a,a,b,a,a);
printf("%c%c%c%c%c ",a,b,a,b,a);
printf("%c%c%c%c%c ",b,a,a,a,b);
getch();
}
【程序8】
題目:輸出9*9口訣。
1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
2.程序源代碼:
代碼如下:
#include "stdio.h"
#include "conio.h"
main()
{
int i,j,result;
printf(" ");
for (i=1;i<10;i++)
{
for(j=1;j<10;j++)
{
result=i*j;
printf("%d*%d=%-3d",i,j,result); /*-3d表示左對齊,佔3位*/
}
printf(" "); /*每一行後換行*/
}
getch();
}
【程序9】
題目:要求輸出國際象棋棋盤。
1.程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。
2.程序源代碼:
代碼如下:
#include "stdio.h"
#include "conio.h"
main()
{
int i,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
if((i+j)%2==0)
printf("%c%c",219,219);
else
printf(" ");
printf(" ");
}
getch();
}
;⑧ 基礎C語言試題。。。求助。。。
【2】。C
b/a表中"/"表示的是整除(小數點後面的統統去掉不要),所以7/5=1
1/3=0
9/2=4。。。。。
【3】。A
k1=1,則if(!k1)就不執行,執行後面else
中的if(k1)和if(k2)。。。
【4】。C
【5】。D
【6】。C
【7】。D
【8】。C
【9】。A
定義了數組a[10]後,a就表示數組的首地址,也就是a[0]的地址。。。
【10】。A
【8】。C
【9】。B
⑨ c語言入門基礎題!
答:(1) 因為42、43對應的ASCII碼為*、+,所以用%c輸出是:*、+;因為42、43二進制數8位表示為:0010 1010、0010 1011,沒有超過8位可表示的最大正數127,所以用%d輸出是42、43。
(2) 因為242、243對應的擴展ASCII碼為≥、≤,所以用%c輸出是:≥、≤;因為242、243二進制數8位表示為:1111 0010、1111 0011,超過8位可表示的最大正數127,所以用%d輸出時將其視為負數,1111 0010、1111 0011分別為-14、-13,故輸出為:-14、-13。
(3) 當程序中c1,c2的定義改為int c1,c2;時。(1)的情況與原來相同;
(2)輸出對應的擴展ASCII碼仍然為≥、≤;因為242、243都在int類型數據的正數范圍內,所以用%d輸出時就是:242、243。
⑩ C語言的一些試題
1.a
a=7/2(=3)
4.c
看一下scanf的定義
5.c
"222"是字元串
6.a
沒有轉義
8.b
'\0'是字元串結束標志
9.b
試過了,沒想通
10.d
沒有理由
11.c
邏輯與
12.b
y=*&a就是y=a
13.b
++在後面
14.a
++a不影響a的地址(vc下不能編譯)
15.c
先++x,x為6,(++x==y)成立,又++x為7