本文目錄一覽:
- 1、C語言試題及答案(2)
- 2、2道C語言填空題,求幫助,急
- 3、2個C語言填空
- 4、C語言二級填空題求解
- 5、C語言填空題 求正確答案 感謝
- 6、C語言填空題第二題
C語言試題及答案(2)
main()
{ int k, a[10]={1,2,3,4,5};
for(k=1; k3; k++) fun(a);
for(k=0; k5; k++) printf(“%d”, a[k]);
}
上面程序的輸出結果是
A.34756
B.23445
C.35743
D.12345
(40) 請讀程序:
#include
#define SUB(X,Y) (X)*Y
main()
{ int a=3, b=4;
printf(“%d”, SUB(a++, b++));
}
上面程序的輸出結果是
A.12
B.15
C.16
D.20(41) 請讀程序:
#include
main()
{ int mun=0;
while(num=2)
{ num++; printf(“%d\n”,num);}
}
上面程序的輸出結果是
A.1
B.1
C.1
D.1
2 2 2
3 3
4
(42) 請讀程序:
#include
main()
{ float x,y;
scan(“%f”,x);
if(x0.0) y=0.0
else if((x5.0)(x!=2.0))
y=1.0/(x+2.0);
else if (x10.0) y=1.0/x;
else y=10.0;
printf(“%f\n”,y);
}
若運行時從鍵盤上輸入2.0(表示回車),則上面程序的輸出結果是
A.0.000000
B.0.250000
C.0.500000
D.1.000000
(43) 請讀程序:
#include
main()
{ int x=1, y=0, a=0, b=0;
switch(x)
{ case 1:
switch(y)
{ case 0: a++;break;
case 1: b++;break;
}
case 2:
a++; b++; break;
}
printf(“a=%d, b=%d\n”,a,
B.;
}
上面程序的輸出結果是
A.a=2, b=1
B.a=1, b=1
C.a=1, b=0
D.a=2, b=2
(44) 若有下面的程序片段:
int a[12]={0}, *p[3], **pp, i;
for(i=0; i3; i++)
p[i]=a[i*4];
pp=p;
則對數組元素的錯誤引用是
A.pp[0][1]
B.a[10]
C.p[3][1]
D.*(*(p+2)+2)
(45) 請讀程序:
#include
#include
main()
{ float x,y,z;
scan(“%f%f”,x,y);
z=x/y;
while(1)
{ if(fabs(z)1.0)
{ x=y; y=z; z=x/y;
}
else break
}
printf(“%f\n”,y);
}
若運行時從鍵盤上輸入3.6 2.4(表示回車),則輸出的結果是
A.1.500000
B.1.600000
C.2.000000
D.2.400000
(46) 請讀程序:
#include
f(in b[], int n)
{ int i, r;
r=1;
for(i=0; i=n; i++) r=r*b[i];
return r;
}
main()
{ int x, a[]={ 2,3,4,5,6,7,8,9};
x=f(a, 3);
printf(“%d\n”,x);
}
上面程序的輸出結果是
A.720
B.120
C.24
D.6
(47) 請讀程序:
#include
#include
void fun( char *s)
{ char a[10];
strcpy( a, “STRING”);
s=a;
}
main()
{ char *p;
fun(p);
x=f(a, 3);
printf(“%s\n”,p);
}
上面程序的輸出結果是(└┘表示空格)
A.STRING└┘└┘└┘└┘
B.STRING
C.STRING└┘└┘└┘
D.不確定的值
(48) 若已建立下面的鏈表結構,指針p、s分別指向圖中所示的結點,則不能將s所指的結點插入到鏈表末尾的語句組是
A.s-next=NULL; p=p-next; p-next=s;
B.p=p-next; s-next=p-next; p-next=s;
C.p=p-next; s-next=p; p-next=s;
D.p=(*p).next; (*s).next=(*p).next; (*p).next=s;
(49) 請讀程序:
#include
void fun(float *pl, float *p2, float *s)
{ s=( float * )calloc( 1, sizeof(float));
*s=*p1+ *(p2++);
}
main()
{ float a[2]={1.1, 2.2}, b[2]={10.0, 20.0}, *s=a;
fun(a, b, s)
printf(“%f\n”,*s);
}
上面程序的輸出結果是
A.11.100000
B.12.100000
C.21.100000
D.1.100000
(50) 請讀程序:
#include
#include
void fun( char *w, int m)
{ char s, *p1, *p2;
p1=w; p2=w+m-1;
while (p1{ s=*p1++; *p1=*p2–; *p2=s;}
}
main()
{ char a[]=”ABCDEFG”;
fun( a, strlen(a));
puts(a);
}
上面程序的輸出結果是
A.GFEDCBA
B.AGADAGA
C.AGAAGAG
D.GAGGAGA
二、填空題(每空2分,共40分)
請將每空的正確答案寫在答題卡上【1】-【20】序號後的橫線上,答在試卷上不得分。
(1) DOS命令分為內部命令與外部命令,XCOPY命令是 【1】 命令
(2) 為了列出當前盤當前目錄中所有第三個字符為C的文件名的有關信息,應該用命令 【2】 。
(3) 設當前盤為A盤,當前目錄為\X\Y,A盤上的一個文件QR.C在當前目錄下的子目錄W中。現已將A盤的當前目錄改為\D\XY,當前盤改為C盤,如需指定A盤上該文件應寫成 【3】 。
(4) 用十六進制給存儲器中的位元組地址進行編號,其地址編號是從0000到FFFF,則該存儲器的容量是【4】KB。
(5) 設有兩個八位二進制數00010101與01000111相加,其結果的十進制表示為 【5】 。
(6) 數學式子 寫成C語言表達式是 【6】 。
(7) 下面程序的輸出結果是 【7】 。
#include
main()
{ static char b[]=”Goodbye”;
char *chp=b[7];
while( –chp =b[0]) putchar( *chp);
putchar(』\n』);
}
(8) 下面程序的輸出結果是 【8】 。
#include
void as( int x, int y, int *cp, int *dp)
{ *cp=x+y;
*dp=x-y;
}
main()
{ int a=4, b=3, c, d;
as( a, b, c, d);
printf( 』%d %d\n”, c, d);
}
(9) 請讀程序:
#include
main( int argc, char *argv[])
{ int i;
printf( 』%d\n”, argc);
for( i=0; i=argc+1; i++) printf( “%s “, argv[i]);
printf(“\n”);
}
若上面的程序編譯、連接後生成可執行文件ABC.EXE,則輸入以下命令行
abc file1 file2(表示回車)
程序執行後的輸出結果是 【9】 。
(10) 條件「20(11) 設二進制數a是00101101,若想通過異或運算a^b使a的高4位取反,低4位不變,則二進制數b應是 【11】 。
(12) 若有以下說明和定義語句,則變量w在內存中所佔的位元組數是 【12】 。
union aa
{ float x, y;
char c[6];
};
struct st { union aa v; float w[5]; double ave; } w;
(13) 下面程序的輸出結果是 【13】 。
#include
#define N 5
fun( char *s, char a, int n)
{ int j;
*s=a; j=n;
while( ereturn j;
}
main()
{ char s[N+1];
int k, p;
for( k=1; k=N; k++)
s[k]=』A』+k+1;
printf( “%d\n”, fun(s, 』E』, N));
}(14) 下面程序的輸出結果是 【14】 。
#include
void fun( char *a1, char *a2, int n)
{ int k;
for( k=0; ka2[k]=( a1[k]-』A』-3+26)+』A』;
a2[n]=』\0』;
}
main()
{ char s1[5]=”ABCD”, s2[5];
fun( s1, s2, 4);
puts( s2);
}
(15) 下面的findmax函數返回數組s中最大元素的下標,數組中元素的個數由t傳入,請填空。
findmax( int s[], int t)
{ int k, p;
for( p=0, k=p; pif( s[p]s[k]) 【15】 。
return k;
}
(16) 下面程序的輸出結果是 【16】 。
#include
fun( int x)
{ int p;
if( x==0||x==1) return(3);
p=x-fun( x-2);
return p;
}
main()
{ printf( “%d\n”, fun(9));}
(17) 下面程序的輸出結果是 【17】 。
#include
funa( int a, int b)
{ return a+b;}
funb( int a, int b)
{ return a-b;}
sub( int (*t)(), int x, int y)
{ return((*t)( x,y));}
main()
{ int x, (*p)();
p=funa;
x=sub(p,9,3);
x+=sub(funb, 8, 3);
printf(“%d\n”, x);
}
(18) 下面程序的輸出結果是 【18】 。
#include
main()
{ char *p[]={ “BOOL”, “OPK”, “H”, “SP”};
int i;
for(i=3; i=0; i–,i–) printf( “%c”, *p[i]);
printf(“\n”);
}
(19) 為了建立如圖所示的存儲結構(即每個結點含兩個域,data是數據域,next是向結點的指針域),請填空。
data next
struct link { char data; 【19】 } node;
(20) 下面的程序用來統計文件中字符的個數,請填空。
#include
main()
{ FILE *fp;
long num=0;
if(( fp=fopen(“fname.dat”,”r”))==NULL)
{ printf( “Can』t open file! \n”); exit(0);}
while 【20】
{ fgetc(fp); num++;}
printf(“num=%d\n”, num);
fclose(fp);
}
參考答案
一`選擇題((1)~(40)題每題1分,(41)~(50)題每題2分,共60分)
(1)C (2)A (3)B (4)D (5)D (6)A (7)C (8)B (9)D (10)C
(11)B (12)D (13)A (14)C (15)B (16)A (17)B (18)A (19)C (20)C
(21)D (22)B (23)B (24)A (25)C (26)D (27)D (28)B (29)C (30)A
(31)B (32)B (33)D (34)C (35)A (36)C (37)A (38)B (39)C (40)A
(41)C (42)C (43)A (44)C (45)B (46)B (47)D (48)C (49)D (50)C
二` 填空題(每空2分,共40分)
(第(2)`(3)空允許小寫或大小寫混合使用,其它空均須與答案一樣)
(1) 外部
(2) DIR ?? C*.*
(3) A:\X\Y\W\QR.C
(4) 64
(5) 92
(6) pow(sin(x),2) * (a+b)/(a-b) 或 sit(x) * sit(x) * (a+b)/(a-b)
(7) eybdooG
(8) 7 1
(9) 3 abc.exe file1 file2 (注:兩個答案,每個1分)
(10) ((20 (11) 11110000
(12) 34
(13) 3
(14) XYZA
(15) k=p
(16) 7
(17) 17
(18) SO
(19) struct link *next
(20) (!feof(fp))或(feof(fp)==0)
2道C語言填空題,求幫助,急
1.
#includestdio.h
int move(int *arr,int n,int m)
{
int *p,array_end;
array_end=*(arr+n-1);
for(p=arr+n-1;parr;p–)
*p=*(p-1);
*arr=array_end;
m–;
if(m0) move(arr,n,m);
return *arr;
}
int main()
{
int number[20],n,m,i;
printf(“the total numbers is:\n”);
scanf(“%d”,n);
printf(“back m:\n”);
scanf(“%d”,m);
for(i=0;in-1;i++)
scanf(“%d,”,number[i]);
scanf(“%d”,number[n-1]);
move(number,n,m);
for(i=0;in-1;i++)
printf(“%d,”,number[i]);
printf(“%d”,number[n-1]);
}
—
2.
#include stdio.h
#include stdlib.h
int main()
{
int a,b,*p1,*p2;
p1=(int *)malloc(sizeof(int));
p2=(int*)malloc(sizeof(int));
scanf(“%d%d”,p1,p2);
if(*p2*p1) *p1=*p2;
free(p2);
printf(“max=%d\n”,*p1);
return 0;
}
2個C語言填空
1、正確答案D
原題中swap函數的兩個參數分別是int p和int q,實際在主程序調用swap時,swap內部的賦值改變的只是參數值的副本,返回後主程序內部的a、b變量並沒有因其副本內容的改變而變化,所以必須改寫swap函數,將要交互的變量地址作為指針型的參數傳給swap,才能在swap中直接修改main中的變量。
修改後的swap函數可以是:
swap( int *p, int *q )
{int t;
t=*p; *p=*q; *q=t;
}
因此原題中答案A明顯錯誤。答案B雖然能去掉編譯過程中的參數類型不匹配的警告,但運行結果是錯誤的(原因見上)。答案C錯在不僅要改變形參中p、q的類型(int改為int*),還要相應改變swap函數內部的賦值語句。所以D是正確的。
2、正確答案A
malloc分配了一塊20位元組的內存、並通過賦值語句將指針p指向該內存區域,之後馬上將q也指向這裡,這就是說q和p指向的是同一塊內存區域。
scanf會將輸入的abc def按空白字符分解為abc和def兩個部分,先將abc放入p指向的地方,然後再將def放入q指向的地方。然而p與q指向的是同一塊內存區域,因此def會將之前的abc覆蓋掉,導致輸出了兩次def,即def def。即選項A。
C語言二級填空題求解
#include stdio.h
#include string.h
#define N 5
#define M 8
void fun(char (*ss)[M])
{ char *ps[N],*tp; int i,j,k;
for(i=0; iN; i++) ps[i]=ss[i]; //改為指針操作
for(i=0; iN-1; i++) {
/**********found**********/
k= __1__ ;
for(j=i+1; jN; j++)
/**********found**********/
if(strlen(ps[k]) strlen(__2__) ) k=j;
//這裡對比兩個字符串的長度,看整個程序的算法設計是
//從第一個字符串開始,用這個字符串和後面的字符串相比較,
//如果這個字符串的長度比後面的小,則交換
//否則再取後面一個字符串比較
//所以這裡的答案是: ps[j]
//而前面一個空中的答案是 i;
//這裡可以對比一下後面第三空的內容
//試着想像一下有兩個字符串的字符串數組的操作
//稍微複雜點的是三個字符串
//這個程序的設計有點問題,參數有冗餘
/**********found**********/
tp=ps[i]; ps[i]=ps[k]; ps[k]= __3__ ; // ps[k]=tp;
//這裡用一個臨時變量,用於交換ps[i]指向的字符串和ps[k]指向的字符串
//和int a,b;的聲明中,交換a、b的數值相同,採用臨時變量先保存a,
//然後a賦值為b,結果a的值得到了交換。b的值而後賦值為原來的a,
//也就是那個臨時變量。
}
printf(“\nThe string after sorting by length:\n\n”);
for(i=0; iN; i++) puts(ps[i]);
}
main()
{ char ch[N][M]={“red”,”green”,”blue”,”yellow”,”black”};
int i;
printf(“\nThe original string\n\n”);
for(i=0;iN;i++)puts(ch[i]); printf(“\n”);
fun(ch);
}
C語言填空題 求正確答案 感謝
1 #include stdio.h
2 typedef char * STR;
3
4 int main(void)
5 {
6 STR s=”helloworld!”;
7 printf(“%s\n”, s);
8 printf(“%d%d%d\n”, -10-110, -10-10, -1010);
9 int a[3][6];
10 printf(“sizeof(int):%d, sizeof(a[0]):%ld\n”,sizeof(int), sizeof(a[0]));
11 return 0;
12 }
13
運行結果如下:
zh@zh-CW65S:~/work$ gcc test.c
test.c: In function 『main』:
test.c:10:2: warning: format 『%d』 expects argument of type 『int』, but argument 2 has type 『long unsigned int』 [-Wformat=]
printf(“sizeof(int):%d, sizeof(a[0]):%ld\n”,sizeof(int), sizeof(a[0]));
^
zh@zh-CW65S:~/work$ ./a.out
helloworld!
000
sizeof(int):4, sizeof(a[0]):24
C語言填空題第二題
10 二進制00001010
1 00010100
1 00000001
101^1 00010101
八進制值是25
原創文章,作者:EDFD,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/146716.html