c語言訓練題
#include<stdio.h>
#include<string.h>
voiddele(char*str,charc);
intmain()
{
charstr[50]={0},c;
gets(str);
scanf("%c",&c);
dele(str,c);
printf("%s
",str);
return0;
}
voiddele(char*str,charc)
{
intlen=strlen(str),i,j;
for(i=0;i<len;i++)
{
if(str[i]==c)
{
for(j=i;j<len-1;j++)
{
str[j]=str[j+1];
}
str[len-1]=0;
len--;
i--;
}
}
}
Ⅱ 幾道簡單的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語言考試題目,一共20道,不難,求解答。
第1題:B
第2題:D
第3題:B
第4題:C
第5題:A//實際上a、b無聲明,編譯都過不了
第6題://p=str錯誤,編譯都過不了
第7題:B
第8題://p=a錯誤,過不了編譯
第9題://y=x3/2錯誤,過不了編譯
第10題:D
第11題:16
第12題:5
第13題:9
第14題:4 3 1
第15題:<><>#
第16題:6 5 6 5 3 4 5
第17題:2
第18題:6
第19題:6
第20題:0
Ⅳ c語言編程題及答案
【4.1】已知銀行整存整取存款不同期限的月息利率分別為:
0.315% 期限一年
0.330% 期限二年
月息利率 = 0.345% 期限三年
0.375% 期限五年
0.420% 期限八年
要求輸入存錢的本金和期限,求到期時能從銀行得到的利息與本金的合計。
【4.2】輸入年份year和月month,求該月有多少天。判斷是否為閏年,可用如下C語言表達式:year%4==0 && year0!=0 || year@0==0。若表達式成立(即表達式值為1),則year為閏年;否則,表達式不成立(即值為0),year為平年。
【4.3】編寫一個簡單計算器程序,輸入格式為:data1 op data2。其中data1和data2是參加運算的兩個數,op為運算符,它的取值只能是+、-、*、/。
【4.4】輸入n值,輸出如圖所示矩形。
【4.5】輸入n值,輸出如圖所示平行四邊形。
【4.6】輸入n值,輸出如圖所示高為n的等腰三角形。
【4.7】輸入n值,輸出如圖所示高為n的等腰三角形。
【4.8】輸入n值,輸出如圖所示高和上底均為n的等腰梯形。
【4.9】輸入n值,輸出如圖所示高和上底均為n的等腰空心梯形。
【4.10】輸入n值,輸出如圖所示邊長為n的空心正六邊型。
Ⅳ 求c語言試題及答案!急啊!
c語言考試題(一)
一、 單項選擇題(每題2分,共20分)
1、以下選項中屬於C語言的數據類型是( )
A.復數型 B.邏輯型 C.集合型 D.雙精度型
2、一個C程序的執行是從( )
A.main()函數開始,直到main()函數結束 B.第一個函數開始,直到最後一個函數結束
C.第一個語句開始,直到最後一個語句結束 D.main()函數開始,直到最後一個函數結束
3、設有語句int a=3;則執行語句a+=a-=a*a;後,變數a的值是( )
A.3 B.0C.-12D.9
4、若有 char c[5]={'c','d','\0','e','\0'};則執行語句printf("%s",c);結果是( )。
A.cd\0e B.'c''d' C.cd D.cd e
5、已知:int a[2][3]={1,2,3,4,5,6}, (*p)[3]=a;則下列表達式不是4的是 ( )。
A.*(*p+3) B.*p+3 C.*(*(p+0)+3) D.a[0][3]
6、以下有宏替換不正確的敘述( ).
A.宏替換不佔用運行時間 B.宏名無類型
C.宏替換只是字元串替換 D.宏名必須用大寫字母表示
7、執行char str[10]=」Ch\nina」; strlen(str)的值是( )
A.5 B.6 C.7 D.9
8、下面程序的輸出結果是:( )
#define POWER(x) (x*x)
main()
{int i=4; printf("%d",POWER(i-2)); }
A. -9 B. -7 C. 5 D. -6
9、在定義int a[3][4][2];後,第10個元素是( )
A.a[2][1][2] B.a[1][0][1] C.a[2][0][1] D.a[2][2][1]
10、下面程序的輸出結果是:( )
typedef struct
{long x[2];<br>short y[4];<br>char z[8];<br>}MYTYPE;
MYTYPE a;
main()
{ printf("%d\n",sizeof(a));}
A. 2 B. 8 C. 14 D. 24
二、 填空題(每空1分,共11分)
1、字元串"A"在內存中佔用的位元組數為 。
2、C語言中的標識符只能由字母、下劃線和 組成。
3、若有定義語句「 int a=25,b=14,c=19;",以下語句的執行結果是
if(a++<=25&&b--<=2&&c++) printf("***a=%d,b=%d,c=%d\n",a,b,c);
else printf("###a=%d,b=%d,c=%d\n",a,b,c);
4、有如下定義a[]="B\172\\\'a%%";則執行語句printf("%d",strlen(a));的結果為 。
5、若有定義:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i<4;i++) p[i]=&a[i*3];則*(*(p+1)+2)的值為 ,*p[2]的值為 。若數組的首地址為2000,則p[1]指向的地址為 。
6、設a=2,b=3,x=3.5,y=2.5,則表達式(float)(a+b)/2+(int)x%(int)y 的結果是 。
7、設x、y都是int型變數,初值都為1,則執行表達式:--x&&y++後,y的值為 。
8、語句for(i=1;i==10;i++)continue;循環的次數是 。
9、以下程序輸出 。
main()
{enum em {em1=3,em2=1,em3};
char *aa[]={"AA","BB","CC","DD"}; printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}
三、 寫程序結果(每題5分,共35分)
1、#include
main()
{int x,y,z;<br>x=1,y=2,z=3; x+=y+=z;<br>printf("1:%d\n",z+=x>y?x++:y++);<br>x=0x02ff;y=0xff00;<br>printf("2:%d\n",(x&y)>>4|0x005f);<br>x=y=z=-1; ++x||++y&&++z;<br>printf("3:%d,%d,%d\n",x,y,z);<br>}
2、#define f(x) x*x
main()
{int a=6,b=2,c;<br>c=f(a+b)/f(b);<br>printf(「%d\n」,c);<br>}
3、fun(int k)
{ printf("%d",k);
if(k>0)
fun(k-1);
}
main( )
{ int w=5; fun(w); printf("\n"); }
4、#include
main()
{int x=1,y=0;<br>switch(x)<br>{ case 1:<br>switch(y)<br>{ case 0:printf(「first\n」);break;<br>case 1:printf(「second\n」);break;<br>}
case 2:printf(「third\n」);
}
}
5、#include
main()
{ int k=4;
func(k); func(k);
}
func(int a)
{ static int m=0;
m+=a;
printf("%d",m);
}
6、struct st
{ int x;
int *y;
}*p;
int s[]={30,20};
struct st a[]={1,&s[0],2,&s[1]};
main()
{ p=a; printf("%d,",p->x);
printf("%d\n",++(*(++p)->y));
}
7、假定在當前盤目錄下有2個文本文件,其名稱和內容如下:
文件名: a1.txt a2.txt
內容: ABCDEF# abcdef#
#include "stdio.h"
main()
{FILE *fp;<br>void fc();<br>if((fp=fopen("a1.txt","r"))==NULL)<br>{printf("Can not open file!\n"); exit(1);}
else{fc(fp);fclose(fp);}
if((fp=fopen("a2.txt","r"))==NULL)
{printf("Can not open file!\n"); exit(1);}
else{fc(fp);fclose(fp);}
}
void fc(fp1)
FILE *fp1;
{char c;<br>while((c=fgetc(fp1))!='#')putchar(c);<br>}
四、 程序填空(每空2分,共14分)
1、下面程序求矩陣a的主對角線元素之和,請填空。
main()
{ int a[3][3]={2,4,6,8,10,12,14,16,18};
int sum=0,i,j;
for(i=0;i<3; ① )
for(j=0; ② ;j++)
if(i= =j) sum=sum+ ③ ;
printf("sum=%d\n",sum);
}
2、下列函數coy把字元數組S2中的全部字元復制到字元數組S1中, 復制時』\0』也要復制過去,』\0』後面的字元不用。
coy(char s1[],char s2[])
{ int i;
for(i=0;s2[i]!= ① ;i++)
s1[i]=s2[i];
② ;
}
3、下面程序的功能是將字元串a中的下標為奇數的元素由小到大排序,其他元素不變,請填空。
main()
{ char a[]="students",t; int i,j;
for(i=1;i<7;i+=2)
for(j=i+2;j<8; ① )
if( ② )
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);
}
c語言考試題(二)
一. 填空題(每題2分,共20分)
1. C語言基本數據類型有:_______________________________;
構造類型有:_____________________________________。 P.13
2. C語言源程序注注釋符號是:________________________________,
為表明層次結構,C語言源程序通常採用_____________________格式編寫。P.4
3. 源程序TEST.C經編譯產生的目標文件是:________________________;
經連接處理後,產生的可執行文件是:__________________________。
4. strlen(「1234 \ 0xy)的值為:_____________________________;
sizeof(float)的值為:____________________________
5. 二維數組a[10] [50]最後一行的首地址為:_________________________;
最後一個元素的首地址為:____________________________________。
6. C標准庫函數中,數學函數的原型在:________________頭文件中,自定義頭文件D :\ MYC \ MY . H應如何包含到源程序文件中:_________________________。P.130
7. 已知函數定義為:int stat(inta,float *p)
{……………}
則此函數的兩個參數類型分別是_______________ 、 _____________________。
8. 設int x,y,z=4;
x=y=++z;
x=(y>z)?x+2;x++;則x的值是:_________;
設int a=0,b=0,c=0;c=++a | | b++; ,則a、b、c值分別是:_____________。
9. 與if (x=0) 等價的寫法是if ( ! x );
判斷兩個(float)變數x,z是否相等一般:if ( fabc(x-z)<1e-6 )。
10.已知賦值語句zhang.year=1985;可判斷zhang是_______________類型的變數;
定義文件指針的C語句是:_________________________________。
二. 單項選擇題 (每題1分,共10分)
1. 組成C程序的基本單位是____________________________。
A.函數 B.標識符 C.表達式 D.語句
2. 設int類型的數據長度為2位元組,則該類型數據的取值范圍是__________________。
A.0至65536 B.0至65535
C.-32767至32768 D.-32768至32767
3. 在C語言中,邏輯值「真」是用_____________________表示的。
A.預定義為真值的宏 B.非零數
C.正數 D.非零整數
4. C語言對於嵌套if語句規定else總是與_____________________匹配。
A.與最外層的if B.與之前最近的if
C.與之前最近的不帶else的if D.與最近的{ }之前的if
5. 數組定義char a[10]={`a`,`b`,`c`}:包括了幾個元素____________________。
A.3 B.9 C.4 D.10
6. 數組名作為實參傳給被調用的函數時,形參獲得的是_____________________。
A.該數組第一個元素的值 B.該數組所有元素的值
C.該數組第一個元素的首地址 D.該數組所有元素的首地址
7. 為表示關系x ≥ y ≥z,正確的C語言表達式為_________________________。
A.(x>=>y>=z) B.(x>=y)AND(y>=z)
C.(x>=y)&&(y>=z) D.(x>y)&(y>=z)
8. 根據定義int a[ ]={1,2,3},i,*p=a; 從語法分析_________________是不正確的。
A. a[p-a] B.*(&a) C.p D.*(*(a+i))
9. 若有語句scanf(「%d%d」,&a,&b);要使變數a,b分別得到12和34;正確的輸入形式為____________________________。
A.12 34 B.12,34 C.1234 D.12:34
10.union uex {int i;float f;char c;}ex;則sizeof(ex)的值是____________________。
A.4 B.5 C.6 D.7
三. 分析程序,寫出運行結果。(每題4分,共20分)
1. 源程序如下,運行時假定鍵盤輸入字元串為``2004``
#include
void main(void)
{
int n=0;
char c;
while( (c=getchar( )) ! =`\n` ) /*字元型數字*/
{
if (c>=`0`&&c<=`9` )
n = n*10 + c- `0` ; /*數字*/
}
printf(「value=%d|n」 ,n);
}
結果為: value=2004 。
2. 源程序如下:
#include
void main(void)
{
int num[9]={399,398,397,396,395,299,290,311,301};
int score[9]={81,85,59,77,90,66,89,93,73};
int iMax,iPos,i;
iPos=0;
iMax=score[iPos];
for(i=1;i<9;i++)
if(score>iMax)
{
iPos=i;
iMax=score[iPox];
}
printf(「num=%d,score=%d」,num[iPos];score[iPos]);
結果為: num=311, score=93 。
3. 源程序如下,運行時假定鍵盤輸入數據為:1 2 3 4 5 6 7 8 9 10
#include
void main(void)
{
int i,a[10];
int *p;
p=a;
for(i=0;i<10;i++)
scanf(「%d「,p++);
for(p=a;p< SPAN>;p++)
if (*p%2)printf(「%3d」,*p);
}
結果為: 1 3 5 7 9 。
4. 源程序如下,兩次運行,分別輸入數據13和21
#include
#include
void main(void)
{
int n,s;
scant (「%d」,&n);
s=panan( n);
if(s==1)printf(「yes\n」);
else printf(「no\n);
}
int panan(int n)
{
int k,j;
k=(int)sqrt((double)n);
for(j=2;j<=k,j++)
{
if(n%j==0) break;
}
if(j>k) retum(1);
else retum(0);
}
結果為 yes
no
5.源程序如下,運行時假定鍵盤輸入字元為:AxByCz
#include
#include
void main(void)
{
char str[80];
int i;
gets(str);
for(i=0;str!=`\0`;i++)
if(str>=`a`&&str<=`z`) str-=32;
else if (str>=`A`&&str<=`Z`) str+=32;
puts(str);
}
結果為: aXbYcZ 。
四. 下列程序中每個劃線處有一個錯誤,改正劃線 中的錯誤,使其實現題目要求。(每體4分,共20分)
1. 求 s=1+2+3+、、、、、、、+100
include 改正為_________________________。
void sum (void) 改正為_________________________。
{
int s,i;
for (s=0,i=1;i<=100;i++)
{
s=s+ i ++; 改正為__________________________。
}
printf (「s=%f」,s) 改正為__________________________。
}
2. 源程序實現求x
#include
double pow(float . int) 改正為_________________________。
void main(void)
{
int i, n;
float x;
scanf (「%f,%d」,&x,&n);
for (i=1; i<9;i++)
printf(「%d,%e\n」, i, pow(i,x);
} 改正為______________________。
double v v pow(float x, int n)
{
int i;
double p=0; 改正為______________________。
for (i=1; i< i++)>改正為_______________________。
p*=x;
retum(p);
}
3. 源程序實現排升序。
#include
void main(void)
{
int i, j, iMin, a[10]={4,3,5,1,10,12,2,6,7,9}, iTemp;
for (i=0; i<9; i++)
{
iMin=0; 改正為_______________________。
for (j=i+1; j<10;j++)
if(a[iMin]< iMin="j;">改正為_______________________。
if (iMin==i) 改正為_________________________。
{ iTemp=a;
a[iMin]=a; 改正為_________________________。
a[iMin]=iTemp;
}
}
for(i=0; i<10; i++)
printf(「%4d」, a):
}
4. 源程序為求平均值。
#include
void main(void)
{
int i, sum; 改正為____________________。
float avg;
int sc[10], *p=sc;
for (i=0, i<10; i++) 改正為____________________。
{
scanf(「%d」, p++);
sum+= *p; 改正為____________________。
}
avg = sum/ 10; 改正為___________________。
printf(「avg=%f」, avg);
}
5. 源程序求 eX=1+x+x2/2!+……+xn/n!前n+1項之和
#include
void main(void>
{
float exp , x , t;
int i, n;
scanf(「%f, %d」,&x, &n);
t=0; 改正為___________________。
exp=1.0;
for(i=1 ; i<=n; i++)
{
if(t<1e-6) loop; 改正為__________________。
t+=x/i; 改正為___________________。
exp*=t; 改正為___________________。
}
printf(「\n%15.6f」, exp);
}
五. 編程題 (每題6分,共30分)
1. 根據以下程序框架,編寫子函數,實現交換兩個整型變數x和y的值。
#include
void swap (int *, int *);
void main (void)
{
int x, y;
scanf(「%d, %d」, &x, &y);
swap( &x, &y);
printf(「%d, %d」, x, y);
}
void swap( )
{
}
2. 設某班人數36人,參加C語言考試,用一維數組score[36]存放考試成績,已給出一部分程序,完善以下程序,使其實現統計並輸出不及格人數及百分比。
#include
void main (void)
{ int i;
float scoer[36], precent;
int count=0;
for (i=0; i<36; i++)
{
scanf(「%f」, &score);
}
3. 完善以下程序使其實現由鍵盤任意輸入一串字元,統計其中大寫字母個數iA、小寫字母個數ia、其他字元個數iother。
#include
#include
void main (void)
{
char str [80];
int i, iA=0, ia=0, iother=0;
}
4. 完善以下程序使其實現求方陣主和輔對角線元素之和及其轉置矩陣,設方陣用二維數組a表示,轉置矩陣用t表示,sl和s2表示主和輔對角線元素之和。
#include
void main(void)
{
int a[3] [3]={1,3,5,7,9,11,13,15,11};
int i, j, s1, s2;
int t[3] [3];
printf(「%d, %d,\n」,s1, s2);
for(i=0; i<3; i++)
for(j=0; j<3; j++)
printf(「%3d」, t [j]);
}
5. 已知字元數組str[80],編寫返回指針的子函數,實現在其中查找字元ch首次出現的位置。
#include
#include
#include
char *lstrchar(char*, char);
void main(void)
{
char c, *p, str[80];
gets (str);
scanf(「%c」, &c);
p=lstrchar(str,c);
if(p==NULL) printf(「char %c not found\n」c);
else printf(「The position is %d」, p-str);
char 「lstrchar( )
{ }
歷年全國計算機二級考試c語言真題及答案
http://jsj.lsxy.com/UploadFiles/20064222324839.rar
Ⅵ C語言編程題目
下面是一些C編程題目:1. 編寫程序,從鍵盤輸入兩個整數,輸出它們的和、差、積、商、余數。2. 編寫程序,從鍵盤輸入三角形的三條邊長,判斷它們是否可以構成三角形,並輸出三角形的類型(等邊、等腰、一般)。3. 編寫程序,從鍵盤輸入字元串,統櫻派計其中的大寫字母、小寫字母、數字和其他字元的個數,並輸出脊鉛賀結果。4. 編寫程序,從鍵盤輸入整數n,列印出n個斐波那契數列的數(斐波那契數列:1 1 2 3 5 8 13...,後數是前兩個數之和)。5. 編寫程序,從鍵盤輸入字元串,判斷它是否為迴文字元串(即正著讀和倒激信著讀都一樣),並輸出結果。6. 編寫程序,從鍵盤輸入整數n,列印出從1到n的所有素數(素數是只能被1和本身整除的數,如2、3、5、7、11等)。7. 編寫程序,從鍵盤輸入一組數據(1~100之間的整數),將它們存入數組中,並按從小到大的順序輸出。8. 編寫程序,從鍵盤輸入整數n,列印出n行的楊輝三角形。9. 編寫程序,實現冒泡排序(以升序為例)。10. 編寫程序,實現二分查找演算法(在有序數組中查找指定元素)。