一個愛書的人,他必定不致於缺少一個忠實的朋友,一個良好的老師,一個可愛的伴侶,一個溫情的安慰者。以下是小編為大家搜尋整理的C語言測試試題及答案,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!
1.
#include "stdio.h"
main()
{char c;
c=getchar();
while(c!='?') {putchar(c);c=getchar(); }
}
如果從鍵盤輸入abcde?fgh(回車)
執行結果為:abcde
2.
#include
main()
{ char c;
while((c=getchar())!=’$’)
{ if(‘A’<=c&&c<=‘Z’)putchar(c);
else if(‘a’<=c&&c<=‘z’)putchar(c-32);}
}
當輸入為ab*AB%cd#CD$時,執行結果為:ABABCDCD
3.
#include
main()
{ int x, y =0;
for(x=1;x<=10;x++)
{ if(y>=10)
break;
y=y+x;
}
printf(“%d %d”,y,x);
}
執行結果為:10 5
詳見教材p120for語句
詳見教材p126~128break,continue語句
for( 表示式1;表示式2;表示式3)
{
}
(1) 先求解表示式1
(2) 求解表示式2,若其值為真,執行迴圈體,然後執行 (3). 若為假,則結束迴圈,轉到(5)
(3) 求解表示式3
(4) 轉回上面 (2)繼續執行
(5) 迴圈結束,執行for語句下面的一個語句
break ,跳出迴圈體;continue,結束本次迴圈(第i次迴圈),繼續執行下一次迴圈(第i+1次迴圈)
此題 表示式1為x=1,表示式2(迴圈條件)為x<=10,表示式3為x++
初值x為1,y為0,迴圈條件(即表示式2)x<=10成立,進入迴圈體
第1次迴圈
執行if語句。0小於10,if語句的條件表示式不成立,不執行break;
執行y=y+x; y=0+1=1
轉向表示式3,執行x++,x=x+1=1+1=2。迴圈條件x<=10成立,進入第2次迴圈
第2次迴圈
執行if語句。1小於10,if語句的條件表示式不成立,不執行break;
執行y=y+x; y=1+2=3
轉向表示式3,執行x++,x=x+1=2+1=3。迴圈條件x<=10成立,進入第3次迴圈
第3次迴圈
執行if語句。3小於10,if語句的條件表示式不成立,不執行break;
執行y=y+x; y=3+3=6
轉向表示式3,執行x++,x=x+1=3+1=4。迴圈條件x<=10成立,進入第4次迴圈
第4次迴圈
執行if語句。6小於10,if語句的條件表示式不成立,不執行break;
執行y=y+x; y=6+4=10
轉向表示式3,執行x++,x=x+1=4+1=5。迴圈條件x<=10成立,進入第5次迴圈
第5次迴圈
執行if語句。10等於10,if語句的條件表示式成立,執行break,跳出迴圈。
從break跳出至for語句的`下一條語句。執行printf(“%d %d”,y,x);
輸出當前的y與x.結果為10 5
4.
#include
main( )
{char ch;
ch=getchar( );
switch(ch)
{case‘A’ : printf(“%c”,’A’);
case‘B’ : printf(“%c”,’B’); break;
default: printf(“%sn”,”other”);
} }
當從鍵盤輸入字母A時,執行結果為:AB
詳見教材p103,switch語句
switch(表示式)
{ case常量1 :語句1
case常量2 :語句2
┇┇ ┇
case常量n :語句n
default :語句n+1
}
其中表達式,常量1,…,常量n都為整型或字元型
case相當於給出執行程式的入口和起始位置,若找到匹配的常量,則從此處開始往下執行程式,不再匹配常量,直至遇到break或switch結束
本題過程:
首先從鍵盤接收一個字元’A’並將其放在變數ch中。
執行switch語句。Switch後面的條件表示式為ch,因此表示式的值即為字元’A’. 用字元’A’依次與下面的 case中的常量匹配。
與第1個case後的常量匹配,則從其後的語句開始往下執行程式(在執行過程中不再進行匹配。)因此先執行printf(“%c”,’A’),螢幕上輸出A;再往下繼續執行printf(“%c”,’B’),螢幕上輸出B;再繼續執行break, 此時跳出switch語句。
5.
#include
main( )
{ int a=1,b=0;
scanf(“%d”,&a);
switch(a)
{case 1: b=1;break;
case 2: b=2;break;
default : b=10;}
printf("%d ", b);
}
若鍵盤輸入5,執行結果為:10
本題過程:
首先用scanf函式為變數a賦值為5。
執行switch語句。switch後面的條件表示式為a,因此表示式的值即為5. 用5依次與下面 case中的常量匹配。沒有找到匹配的常量,因此兩個case後的語句都不執行。執行default後面的語句b=10;將10賦給變數b。
輸出變數b,結果為10
6.
#include
main()_
{ char grade=’C’;
switch(grade)
{
case ‘A’: printf(“90-100n”);
case ‘B’: printf(“80-90n”);
case ‘C’: printf(“70-80n”);
case ‘D’: printf(“60-70n”); break;
case ‘E’: printf(“<60n”);
default : printf(“error!n”);
}
}
執行結果為:
70-80
60-70
本題過程:
首先從鍵盤接收一個字元’C’並將其放在變數grade中。
執行switch語句。switch後面的條件表示式為grade,因此表示式的值即為字元’C’. 用字元’C’依次與下面的 case中的常量匹配。
與第3個case後的常量匹配,則從其後的語句開始往下執行程式(在執行過程中不再進行匹配。)因此先執行printf(“70-80n”);,螢幕上輸出70-80,並換行;再往下繼續執行printf(“60-70n”),螢幕上輸出60-70,並換行;再繼續執行break, 此時跳出switch語句。
7.
#include
main()
{ int y=9;
for(;y>0;y- -)
if(y%3==0)
{ printf(%d”,- -y);
}
}
執行結果為:
852
詳見教材p53,自增自減符號
此題 表示式1被省略,表示式2(迴圈條件)為y>0,表示式3為y--
初值y為9,迴圈條件(即表示式2)y>0成立,進入迴圈體
第1次迴圈
執行if語句。9%3==0,if語句的條件表示式成立,執行printf(%d”,- -y),即y先自減1變為8,然後在輸出,因此螢幕上輸出8
轉向表示式3,執行y--,y=y-1=8-1=7。迴圈條件y>0成立,進入第2次迴圈
第2次迴圈
執行if語句。7%3不為0,if語句的條件表示式不成立,不執行printf(%d”,- -y)
轉向表示式3,執行y--,y=y-1=7-1=6。迴圈條件y>0成立,進入第3次迴圈
第3次迴圈
執行if語句。6%3==0,if語句的條件表示式成立,執行printf(%d”,- -y),即y先自減1變為5,然後在輸出,因此螢幕上輸出5
轉向表示式3,執行y--,y=y-1=5-1=4。迴圈條件y>0成立,進入第4次迴圈
第4次迴圈
執行if語句。4%3不為0,if語句的條件表示式不成立,不執行printf(%d”,- -y)
轉向表示式3,執行y--,y=4-1=3。迴圈條件y>0成立,進入第5次迴圈
第5次迴圈
執行if語句。3%3==0,if語句的條件表示式成立,執行printf(%d”,- -y),即y先自減1變為2,然後在輸出,因此螢幕上輸出2
轉向表示式3,執行y--,y=y-1=2-1=1。迴圈條件y>0成立,進入第5次迴圈
第6次迴圈
執行if語句。1%3不為0,if語句的條件表示式不成立,不執行printf(%d”,- -y)
轉向表示式3,執行y--,y=1-1=0。迴圈條件y>0不成立,迴圈結束。
8.
#include
main()
{ int i,sum=0;i=1;
do{ sum=sum+i; i++; }while(i<=10);
printf(“%d”,sum);
}
執行結果為: 55
9.
#include
#define N 4
main()
{ int i;
int x1=1,x2=2;
printf("n");
for(i=1;i<=N;i++)
{ printf("%4d%4d",x1,x2);
if(i%2==0)
printf("n");
x1=x1+x2;
x2=x2+x1;
}
}
執行結果為:
1 2 3 5
8 132134
此題 首先為整型變數賦初值x1=1,x2=2
表示式1為i=1,表示式2(迴圈條件)為i<=N即i<=4,表示式3為i++
迴圈變數初值i為1,迴圈條件(即表示式2)i<=4成立,進入第1次迴圈
第1次迴圈
執行printf("%4d%4d",x1,x2);因此螢幕上輸出12
執行if語句。1%2不為0,if語句的條件表示式不成立,不執行printf("n");
執行x1=x1+x2=1+2=3;此時x1中的值已變為3
執行x2=x2+x1=2+3=5。
轉向表示式3,執行i++,i為2。迴圈條件i<=4成立,進入第2次迴圈
第2次迴圈
執行printf("%4d%4d",x1,x2);因此螢幕上輸出35
執行if語句。2%2==0,if語句的條件表示式成立,執行printf("n");換行
執行x1=x1+x2=3+5=8;此時x1中的值已變為8
執行x2=x2+x1=5+8=13。
轉向表示式3,執行i++,i為3。迴圈條件i<=4成立,進入第3次迴圈
第3次迴圈
執行printf("%4d%4d",x1,x2);因此螢幕上輸出813
執行if語句。3%2不為0,if語句的條件表示式不成立,不執行printf("n");
執行x1=x1+x2=8+13=21;此時x1中的值已變為21
執行x2=x2+x1=21+13=34。
轉向表示式3,執行i++,i為4。迴圈條件i<=4成立,進入第4次迴圈
第2次迴圈
執行printf("%4d%4d",x1,x2);因此螢幕上輸出2134
執行if語句。4%2==0,if語句的條件表示式成立,執行printf("n");換行
執行x1=x1+x2=21+34=55;此時x1中的值已變為55
執行x2=x2+x1=34+55=89。
轉向表示式3,執行i++,i為5。迴圈條件i<=4不成立,結束迴圈
10
#include
main( )
{intx, y;
for(x=30, y=0; x>=10, y<10; x--, y++)
x/=2, y+=2;
printf(“x=%d,y=%dn”,x,y);
}
執行結果為:
x=0,y=12 11.
#include
#define N 4
main( )
{ inti,j;
for(i=1;i<=N;i++)
{ for(j=1;j printf(" ");
printf("*");
printf("n");
}}
執行結果為:
*
*
*
*
詳見教材P41符號常量
用巨集處理指令定義符號常量N為4,在編譯過程中,遇到N即視為整數4。
外層for迴圈,表示式1為i=1,表示式2(迴圈條件)為i<=N,表示式3為 i++
內層for迴圈,表示式1為j=1,表示式2(迴圈條件)為j 首先計算外層迴圈的表示式1,i為1,使得迴圈條件i<=4成立,進入外層for迴圈體
外層for迴圈第1次此時i為1
內層迴圈j=1,使得迴圈條件j 執行printf("*");
執行printf("n");換行
至此外層迴圈體執行完,計算外層迴圈的表示式3,i++,此時i為2. 使得迴圈條件i<=4
成立,再次進入外層for迴圈體
外層for迴圈第2次 此時i為2
內層迴圈j=1,使得迴圈條件j 第1次執行內層迴圈體printf(" ");
執行內層迴圈表示式3,j++為2,j 執行printf("*");
執行printf("n");換行
至此外層迴圈體執行完,計算外層迴圈的表示式3,i++,此時i為3. 使得迴圈條件i<=4
成立,進入外層for迴圈體
外層for迴圈第3次 此時i為3
內層迴圈j=1,使得迴圈條件j 第1次執行內層迴圈體printf(" ");
執行內層迴圈表示式3,j++為2,j 第2次執行內層迴圈體printf(" ");
執行內層迴圈表示式3,j++為3,j 執行printf("*");
執行printf("n");換行
至此外層迴圈體執行完,計算外層迴圈的表示式3,i++,此時i為4. 使得迴圈條件i<=4
成立,進入外層for迴圈體
外層for迴圈第4次 此時i為4
內層迴圈j=1,使得迴圈條件j 第1次執行內層迴圈體printf(" ");
執行內層迴圈表示式3,j++為2,j 第2次執行內層迴圈體printf(" ");
執行內層迴圈表示式3,j++為3,j 第3次執行內層迴圈體printf(" ");
執行內層迴圈表示式3,j++為4,j 執行printf("*");
執行printf("n");換行
至此外層迴圈體執行完,計算外層迴圈的表示式3,i++,此時i為5. 使得迴圈條件i<=4
不成立,跳出外層for迴圈體