中國石油大學c語言上機答案
❶ 跪求《c語言程序設計》課本習題答案!!!
習題1參考答案
一、選擇題 1. A 2. D
二、填空題
1. BASIC、FORTRAN、AL_GOL60和COBOL 2. 8
3. 關鍵字
4. 編輯、編譯、鏈接和運行
三、簡答題 1.答:
(1)C語言具有結構化的控制語句。C語言提供了結構化程序所必需的基本控制語句,實現了對邏輯流的有效控制。
(2)C語言具有豐富的數據結構類型。C語言除提供整型、實型、字元型等基本數據類型外,還提供了用基本數據類型構造出的各種復雜的數據結構,如數組、結構、聯合等。C語言還提供了與地址密切相關的指針類型。此外,用戶還可以根據需要自定義數據類型。 (3)C語言具有豐富的運算符。C語言提供了多達34種運算符,豐富的數據類型與豐富的運算符相結合,使C語言的表達力更具靈活性,同時也提高了執行效率。
(4)C語言簡潔、緊湊,使用方便、靈活,程序書寫自由,有9種控制語句。
(5)C語言既具有高級語言的功能,又具有低級語言的許多功能,通常被稱為中級計算機語言。它既是成功的系統描述語言,又是通用的程序設計語言。 (6)C語言與匯編語言相比,可移植性好。
(7)功能強大。C語言具有低級語言的一些功能,所以,生成目標代碼質量高,程序執行效率高。現在許多系統軟體都用C語言來描述,可以大大提高了編程效率。
2.答:運行一個C語言程序,一般需要經過如下幾個步驟:①上機輸入並編輯源程序;②編譯源程序;③與庫函數連接;④生成可執行目標程序;⑤運行目標程序。 3.答:
(1)操作系統的設計與實現。C語言是一種應用非常廣泛的結構化高級程序設計語言,既適合編寫應用軟體,又適合編寫系統軟體。
❷ c語言課後題答案
第一題
#include<stdio.h>
void main()
{ int i;
int count=1;
printf("請輸入數據:");
scanf("%d",&i);
printf("逆序輸出結果為:");
while(i/10)
{printf("%d ",i%10);
count++;
i=i/10; }
printf("%d\n",i%10);
printf("它是%d位數\n",count);
}
第二題
#include<stdio.h>
int fact(int n)
{
int i;
int f=1;
for(i=1;i<=n;i++)
f*=i;
return f;
}
float sum(int n)
{
float sum1=0;
int i;
for(i=1;i<=n;i++)
sum1+=1.0/fact(i);
return sum1;
}
void main()
{ int i;
float total;
printf("請輸入數據:");
scanf("%d",&i);
total=sum(i);
printf("結果為:");
printf("%.5f ",total);
}
上面兩個程序已經上機通過了。。。
❸ 9月計算機二級《C語言》上機試題及答案
(1)一個棧的初始狀態為空。現將元素1、2、3、4、5、A、B、c、D、E依次入棧,然後再依次出棧,則元素出棱的順序是( )。
A.12345ABCDE
B.EDCBA54321
C.ABCDEl2345
D.54321EDCBA
(2)下列敘述中正確的是( )。
A.循環隊列有隊頭和隊尾兩個指針,因此,循環隊列是非線性結構
B.在循環隊列中,只需要隊頭指針就能反映隊列中元素的動態變化情況
C.在循環隊列中,只需要隊尾指針就能反映隊列中元素的動態變化情況
D.循環隊列中元素的個數是由隊頭指針和隊尾指針共同決定的
(3)在長度為n的有序線性表中進行二分查找,最壞情況下需要比較的次數是( )。
A.0(n)
B.D(n2)
C.O(1092n)
D.0(nl092n)
(4)下列敘述中正確的是( )。
A.順序存儲結構的存儲一定是連續的,鏈式存儲結構的存儲空間不一定是連續的
B.順序存儲結構只針對線性結構,鏈式存儲結構只針對非線性結構
C.順序存儲結構能存儲有序表,鏈式存儲結構不能存儲有序表
D.鏈式存儲結構比順序存儲結構節省存儲空間
(5)數據流圖中帶有箭頭的線段表示的是( )。
A.控制流
B.事件驅動
C.模塊調用
D.數據流
(6)在軟體開發中,需求分析階段可以使用的工具是( )。
A.N—s圖
B.DFD圖
C.PAD圖
D.程序流程圖
(7)在面向對象方法中,不屬於“對象”基本特點的是( )。
A.一致性
B.分類性
C.多態性
D.標識唯一性
(8)一間宿舍可住多個學生,則實體宿舍和學生之間的聯系是( )。
A.一對一
B.一對多
C.多對一
D.多對多
(9)在數據管理技術發展的三個階段中,數據共享最好的是( )。
A.人工管理階段
B.文件系統階段
C.資料庫系統階段
D.三個階段相同
(10)有三個關系R、S和T如下:
由關系R和S通過運算得到關系T,則所使用的運算為( )。
A.笛卡爾積
B.交
C.並
D.自然連接
(11)下列敘述中錯誤的是( )。
A.C程序可以由多個程序文件組成
B.一個c語言程序只能實現一種演算法
C.c程序可以由一個或多個函數組成,
D.一個C函數可以單獨作為一個C程序文件存在(12)以下選項中,能用作數據常量的是( )。
A.115L
B.0118
C.1.5el.5
D.0115
(13)按照c語言規定的用戶標識符命名規則,不能出現在標識符中的是( )。
A.大寫字母
B.下劃線
C.數字字元
D.連接符
(14)設變數已正確定義並賦值,以下正確的表達式是( )。
A.X=Y+z+5,++Y
B.int(15.8%5)
C.X=Y*5=X+Z
D.X=25%5.0
(15)設有定義:int X=2;,以下表達式中,值不為6的是( )。
A.2*x.x+=2
B.x++,2*x
C.x*=(1+x)
D.x*!x+1
(16)有以下程序:
程序運行後的輸出結果是( )。
A.2,3,3
B.2,3,2
C.2,3,1
D.2,2,1
(17)有以下程序:
已知字母A的ASCIl碼為65,程序運行後的輸出結果是( )。
A)E.68B.
B)D,69
C.E,D
D.輸出無定值
(18)若有定義int x,y;並已正確給變數賦值,則以下選項中與表達式(x—y)?(x++):(y++)中的條件表達式(x—Y)等價的是( )。
A.(x—Y<01Ix—Y>O)
B.(x—y<0)
C.(x—Y>0)
D.(x—Y==0)
(19)有以下程序:
程序運行後的輸出結果是( )。
A.3
B.2
C.1
D.0
(20)若有定義:float x=1.5;int a=1,b=3,c=2;則正確的switch語句是( )。
❹ 求c++與數據結構基礎簡明教程 天津大學版 第八章編程答案
你在網上搜~C語言 中國石油大學(華東)c語言上機題_網路文庫~可能是一樣的,可以去看看
❺ c語言程序設計
這個用到了函數和數組銷困,你先寫出數組完成第二個功能,之後再main函數上面加入find函數。這個程序應該挺麻煩的,樓主慢慢思考,注裂頌意前後語句的邏輯應該就能寫出來虧源念,你可以進這個網站http://program.upc.e.cn/中國石油大學(華東),有一個C語言平台,以遊客的身份看看。
❻ c語言習題求代碼
//返粗搭希望我的回漏拿答對你的學習有幫助
#include
int main()
{
int T, WaterTemperature, TeaQuality, len;
char a[10];
scanf("%d", &T);
while (T--)
{
WaterTemperature = 0;
len = 0;
for (int i = 0; i < 10; i++) a[i] = 0;
scanf("%s %d", a, &TeaQuality);
for (int i = 0; a[i]; i++) len++;
for (int i = len - 1; i >= 0; i--)
{
int j, k = 1;
for (j = len - i; j > 1; j--) k *= 2;
WaterTemperature += (a[i] - '0') * k;
}
printf("%d\n"凳姿, WaterTemperature * TeaQuality);
}
return 0;
}
❼ 9月計算機二級《C語言》上機考題及答案
1、以下選項中屬於C語言的數據類型是()。
A. 復合型
B. 雙精度型
C. 邏輯型
D. 集合型
2、以下說法中正確的是()。
A. C語言程序總是從第一個的函數開始執行
B. 在C語言程序中,要調用的函數必須在main()函數中定義
C. C語言程序總是從main()函數開始執行
D. C語言程序中的main()函數必須放在程序的開始部分
3、選出下列標識符中不是合法的標識符的是()。
A. hot_do
B. cat1
C. _pri
D. 2ab
4、下列描述中不正確的是()。
A、字元型數組中可能存放字元串。
B、可以對字元型數組進行整體輸入、輸出。
C、可以對整型數組進行整體輸入、輸出。
D、 不能在賦值語句中通過賦值運算符“=”對字元型數組進行整體賦值。
5、若已定義:int a[9], *p=a;並在以後的語句中未改變p的值,不能表示a[1]地址的表達式為()。
A. p+1
B. a+1
C. a++
D. ++p
6、設有如下定義: int x=10,y=3,z; 則語句printf("%d ",z=(x%y,x/y)); 的輸出結果是()。
A. 1
B. 0
C. 4
D. 3
7、定義如下變數和數組: int i, 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
8、讀出以下語句的輸出結果是()。
int x=10,y=10;
printf(“%d %d ”,x--,--y);
A. 10 10
B. 9 9
C. 9 10
D. 10 9
9、兩次運行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結果是()。
if(x++>5) printf("%d",x);
else printf("%d ",x - -);
A. 7和5
B. 6和3
C. 7和4
D. 6和4
10、設有如下定義:char *aa[2]={"abcd","ABCD"};則以下說法中正確的是()。
A)aa數組成元素的值分別是"abcd"和ABCD"
B)aa是指針變數,它指向含有兩個數組元素的字元型一維數組
C)aa數組的兩個元素分別存放的是含有4個字元的一維字元數組的`首地址
D)aa數組的兩個元素中各自存放了字元’a’和’A’的地址
11、以下語句的輸出結果是()。
int a=-1,b=4,k;
k=(+ +a<0)&&!(b - -<=0);
printf("%d,%d,%d ",k,a,b);
A. 1,0,4
B. 1,0,3
C. 0,0,3
D. 0,0,4
12、下列程序的輸出結果是()。
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
13、執行下面的程序後,a的值是()。
#define SQR(X) X*X
main()
{ int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d ",a); }
A. 10
B. 1
C. 9
D. 0
14、設A為存放(短)整型的一維數組,如果A的首地址為P,那麼A中第i 個元素的地址為()。
A.P+i*2
B. P+(i-1)*2
C. P+(i-1)
D. P+i
15、下列程序執行後輸出的結果是()。
int d=1;
fun (int p)
{ int d=5;
d + =p + +;
printf("%d,",d); }
main()
{ int a=3;
fun(a);
d + = a + +;
printf("%d ",d); }
A. 8, 4
B. 9, 6
C. 9, 4
D. 8, 5
16、表達式:10!=9的值是()。
A. true
B. 非零值
C. 0
D. 1
17、若有說明: int i,j=7, *p=&i;, 則與i=j; 等價的語句是()。
A. i= *p;
B. *p=*&j;
C. i=&j;
D. i=* *p;
18、不能把字元串: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!";
19、在C程序中有如下語句:char *func(int x,int y); 它是()。
A. 對函數func的定義。
B. 對函數func的調用。
C.對函數func的原型說明。
D. 不合法的。
20、以下程序的輸出結果是()。
char str[15]=”hello!”;
printf(“%d ”,strlen(str));
A. 15
B. 14
C. 7
D. 6
參考答案:
1、B 2、C 3、D 4、C 5、C 6、D 7、C 8、D 9、C 10、D
11、D 12、D 13、B 14、B 15、A 16、D 17、B 18、B 19、C 20、D
❽ C語言試題及答案(2)
main()
{ int k, a[10]={1,2,3,4,5};
for(k=1; k<3; k++) fun(a);
for(k=0; k<5; 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 ",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(x<0.0) y=0.0
else if((x<5.0)&&(x!=2.0))
y=1.0/(x+2.0);
else if (x<10.0) y=1.0/x;
else y=10.0;
printf("%f ",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 ",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; i<3; 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 ",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 ",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 ",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 ",*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盤,當前目錄為XY,A盤上的一個文件QR.C在當前目錄下的子目錄W中。現已將A盤的當前目錄改為DXY,當前盤改為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(’ ’);
}
(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 ", c, d);
}
(9) 請讀程序:
#include
main( int argc, char *argv[])
{ int i;
printf( ’%d ", argc);
for( i=0; i<=argc+1; i++) printf( "%s ", argv[i]);
printf(" ");
}
若上面的程序編譯、連接後生成可執行文件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 ", 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]=’