c語言期末考試題庫
⑴ c語言程序設計期末考試樣題
1、答案:A(單引號括起來的都是字元,而且一對單引號最多對應一個字元,\反斜杠是轉義字元的開始,\72是ASCII碼對應的字母H。也就是把H這個字母存到了變數chara中。就一個字元H。)2、ACDE解析:inta=3,b=4,c=5;,A、a>bB、a<=bC、(a||b)>cD、a<=(b||c)E、!((a<b)&&!c||b)優先順序由大到小:()!&&||A選項,3>4錯誤,邏輯值0。B選項,35,(3||4)"或"邏輯運算符兩邊只要有一個非0的整個值就是1,1>5錯,邏輯值0。D選項,3<=(4||5)錯誤,邏輯值0。E選項,!((3<4)&&!5||4),先(3<4)邏輯值1,!5邏輯值0,1&&0是0,0||4是1,!1是0,所以邏輯值0。3、AC。解析:A可以,B答案b不能被賦值(自左向右,計算||左側就已經是1了右邊就不用再計算了整個表達式無論右邊如何整個邏輯值必定是1,計算機也就不會計算右邊了)C可以(因為&&兩邊都必須計算才能得出最後的邏輯值答案),D不可以a不能被賦值(&&左邊就一個a,構不成賦值,可能存放一個隨機值,右邊可以被賦值)。4、ABCD。外部函數幾乎可以被所有函數調用。只要開頭#include」"引入。
⑵ 20分求c語言編程題答案
我這里有一些程序(dev-c++編譯器),雖然並不是你所想要的完美答案,但是其中的一些代碼,希望對你有所幫助:
No.1 有5個學生,每個學生有3門課的成績,從鍵盤輸入數據(包括學生號,姓名,3門課的成績),計算出平均成績,將原有數據和計算出的平均分數存放在磁碟文件stud中。
程序:
#include<stdio.h>
#include<stdlib.h>
struct student
{
char num[10];
char name[8];
int score[3];
float ave;
}stu[5];
int main()
{
int i,j,sum;
FILE *fp;
for(i=0;i<5;i++)
{
printf("\ninput score of student %d:\n",i+1);
printf("No.:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
sum=0;
for(j=0;j<3;j++)
{
printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
sum+=stu[i].score[j];
}
stu[i].ave=sum/3.0;
}
fp=fopen("stud","w");
for(i=0;i<5;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
fp=fopen("stud","r");
for(i=0;i<5;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
printf("\n%s,%s,%d,%d,%d,%6.2f\n",stu[i].num,stu[i].name,
stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave);
}
system("pause");
return 0;
}
No.2 將運行No.1程序所得到的stud文件中的學生數據按平均分進行排序處理,將已排序的學生數據存入一個新文件stu_sort中。
程序:
#include<stdio.h>
#include<stdlib.h>
#define N 10
struct student
{
char num[10];
char name[8];
int score[3];
float ave;
}st[N],temp;
int main()
{
FILE *fp;
int i,j,n;
if((fp=fopen("stud","r"))==NULL)
{
printf("can not open.");
exit(0);
}
printf("File 'stud':");
for(i=0;fread(&st[i],sizeof(struct student),1,fp)!=0;i++)
{
printf("\n%8s%8s",st[i].num,st[i].name);
for(j=0;j<3;j++)
printf("%8d",st[i].score[j]);
printf("%10.2f",st[i].ave);
}
printf("\n");
fclose(fp);
n=i;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(st[i].ave<st[j].ave)
{
temp=st[i];
st[i]=st[j];
st[j]=temp;
}
printf("\nNow:");
fp=fopen("stu_sort","w");
for(i=0;i<n;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
printf("\n%8s%8s",st[i].num,st[i].name);
for(j=0;j<3;j++)
printf("%8d",st[i].score[j]);
printf("%10.2f",st[i].ave);
}
printf("\n");
fclose(fp);
system("pause");
return 0;
}
No.3 將題No.2已排序的學生成績文件進行插入處理。插入一個學生的3門課程成績,程序先計算新插入學生的平均成績,然後將它按平均成績高低順序插入,插入後建立一個新文件。
程序:
#include<stdio.h>
#include<stdlib.h>
struct student
{
char num[10];
char name[8];
int score[3];
float ave;
}st[10],s;
int main()
{
FILE *fp,*fp1;
int i,j,t,n;
printf("\nNo.:");
scanf("%s",s.num);
printf("name:");
scanf("%s",s.name);
printf("score1,score2,score3:");
scanf("%d,%d,%d",&s.score[0],&s.score[1],&s.score[2]);
s.ave=(s.score[0]+s.score[1]+s.score[2])/3.0;
if((fp=fopen("stu_sort","r"))==NULL)
{
printf("can not open file.");
exit(0);
}
printf("Original data:\n");
for(i=0;fread(&st[i],sizeof(struct student),1,fp)!=0;i++)
{
printf("\n%8s%8s",st[i].num,st[i].name);
for(j=0;j<3;j++)
printf("%8d",st[i].score[j]);
printf("%10.2f",st[i].ave);
}
n=i;
for(t=0;st[t].ave>s.ave&&t<n;t++);
printf("\nNow:\n");
fp1=fopen("sort1.dat","w");
for(i=0;i<t;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp1);
printf("\n%8s%8s",st[i].num,st[i].name);
for(j=0;j<3;j++)
printf("%8d",st[i].score[j]);
printf("%10.2f",st[t].ave);
}
fwrite(&s,sizeof(struct student),1,fp1);
printf("\n%8s%8s%8d%8d%8d%10.2f",s.num,s.name,s.score[0],
s.score[1],s.score[2],s.ave);
for(i=t;i<n;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp1);
printf("\n%8s%8s",st[i].num,st[i].name);
for(j=0;j<3;j++)
printf("%8d",st[i].score[j]);
printf("%10.2f",st[i].ave);
}
printf("\n");
fclose(fp);
fclose(fp1);
system("pause");
return 0;
}
No.4 將No.3的結果仍存入原有的文件而不另建立新文件。
程序:
#include<stdio.h>
#include<stdlib.h>
struct student
{
char num[10];
char name[8];
int score[3];
float ave;
}st[10],s;
int main()
{
FILE *fp;
int i,j,t,n;
printf("\nNo.:");
scanf("%s",s.num);
printf("name:");
scanf("%s",s.name);
printf("score1,score2,score3:");
scanf("%d,%d,%d",&s.score[0],&s.score[1],&s.score[2]);
s.ave=(s.score[0]+s.score[1]+s.score[2])/3.0;
if((fp=fopen("stu_sort","r"))==NULL)
{
printf("can not open file.");
exit(0);
}
printf("Original data:\n");
for(i=0;fread(&st[i],sizeof(struct student),1,fp)!=0;i++)
{
printf("\n%8s%8s",st[i].num,st[i].name);
for(j=0;j<3;j++)
printf("%8d",st[i].score[j]);
printf("%10.2f",st[i].ave);
}
n=i;
for(t=0;st[t].ave>s.ave&&t<n;t++);
printf("\nNow:\n");
fp=fopen("stu_sort","w");
for(i=0;i<t;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
printf("\n%8s%8s",st[i].num,st[i].name);
for(j=0;j<3;j++)
printf("%8d",st[i].score[j]);
printf("%10.2f",st[t].ave);
}
fwrite(&s,sizeof(struct student),1,fp);
printf("\n%8s%8s%8d%8d%8d%10.2f",s.num,s.name,s.score[0],
s.score[1],s.score[2],s.ave);
for(i=t;i<n;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
printf("\n%8s%8s",st[i].num,st[i].name);
for(j=0;j<3;j++)
printf("%8d",st[i].score[j]);
printf("%10.2f",st[i].ave);
}
printf("\n");
fclose(fp);
system("pause");
return 0;
}
對鏈表的綜合操作:
程序:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define LEN sizeof(struct student)
struct student
{
long num;
float score;
struct student *next;
};
int n;
struct student *creat(void)
{
struct student *head;
struct student *p1,*p2;
n=0;
p1=p2=(struct student *)malloc(LEN);
scanf("%ld,%f",&p1->num,&p1->score);
head=NULL;
while(p1->num!=0)
{
n=n+1;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(struct student *)malloc(LEN);
scanf("%ld,%f",&p1->num,&p1->score);
}
p2->next=NULL;
return(head);
}
void print(struct student *head)
{
struct student *p;
printf("\nNow,These %d records are:\n",n);
p=head;
if(head!=NULL)
do
{
printf("%ld %5.1f\n",p->num,p->score);
p=p->next;
}while(p!=NULL);
}
struct student *del(struct student *head,long num)
{
struct student *p1,*p2;
if(head==NULL)
{
printf("\nlist null!\n");
return(head);
}
p1=head;
while(num!=p1->num&&p1->next!=NULL)
{
p2=p1;p1=p1->next;
}
if(num==p1->num)
{
if(p1==head) head=p1->next;
else p2->next=p1->next;
printf("delete:%ld\n",num);
n=n-1;
}
else printf("%ld not been found!\n",num);
return(head);
}
struct student *insert(struct student *head,struct student *stud)
{
struct student *p0,*p1,*p2;
p1=head;
p0=stud;
if(head==NULL)
{
head=p0;
p0->next=NULL;
}
else
{
while((p0->num>p1->num)&&(p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num<=p1->num)
{
if(head==p1) head=p0;
else
{
p2->next=p0;
p0->next=p1;
}
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
n=n+1;
return(head);
}
int main()
{
struct student *head,*stu;
long del_num;
printf("input records:\n");
head=creat();
print(head);
printf("\ninput the deleted number:");
scanf("%ld",&del_num);
while(del_num!=0)
{
head=del(head,del_num);
print(head);
printf("\ninput the deleted number:");
scanf("%ld",&del_num);
}
printf("\ninput the inserted record:");
stu=(struct student *)malloc(LEN);
scanf("%ld,%f",&stu->num,&stu->score);
while(stu->num!=0)
{
head=insert(head,stu);
print(head);
printf("\ninput the inserted record:");
stu=(struct student *)malloc(LEN);
scanf("%ld,%f",&stu->num,&stu->score);
}
system("pause");
return 0;
}
⑶ 大一期末C語言考試的重點是什麼
我上點選擇題
1、以下不正確的描述為【 】。
(A) 調用函數時,實參可以是表達式
(B) 調用函數時,實參與形參可以共用內存單元
(C) 調用函數時,將為形參分配內存單元
(D) 調用函數時,實參與形參的類型必須一致
2、以下正確的敘述是【 】。
(A) C語言的主函數是無參函數
(B) C語言的主函數最多允許有1個形式參數
(C) C語言的主函數最多允許2個形式參數
(D) C語言的主函數可以有2個以上形式參數
3、C語言中函數返回值的類型是由【 】決定的。
(A) return語句中的表達式類型
(B) 調用該函數的主調函數類型
(C) 調用函數時臨時
(D) 定義函數時所指定的函數類型
4、若x為int型變數,則以下函數fun【 】。
fun(int x)
{
printf("%d",x);
}
(A) 返回值為void類型
(B) 無法確定返回值
(C) 返回值為int類型
(D) 沒有返回值
5、以下不正確的描述為【 】。
(A) 不同函數中可以使用相同名字的變數
(B) 形式參數是局部變數
(C) 一個函數內部定義的變數只能在本函數范圍內有效
(D) 在一個函數內部的復合語句中定義的變數可以在本函數范圍內有效
6、C語言規定,調用一個函數時,實參變數和形參變數之間的數據傳遞是【 】。
(A) 地址傳遞
(B) 值傳遞
(C) 由實參傳給形參,並由形參傳回來給實參 十
(D) 由用戶指定傳遞方式
7、若用數組名作為函數調用時的實參,則實際上傳遞給形參的是【 】。
(A) 數組首地址
(B) 數組的第一個元素值
(C) 數組中全部元素的值
(D) 數組元素的個數
8、凡是函數中未指定存儲類別的變數,其隱含的存儲類別為【 】。//應該為局部變數
(A) 自動(auto)
(B) 靜態(static)
(C) 外部(extem)
(D) 寄存器(register)
9、在C語言中,對於存儲類型為【 】的變數,只有在使用它們時才佔用內存單元。
(A) static和auto
(B) register和extern
(C) register和static
(D) auto和register
10、在一個源文件中定義的全局變數的作用域為【 】。
(A)本文件的全部范圍
(B)本程序的全部范圍
(C)本函數的全部范圍
(D)從定義變數的位置開始至文件結束
11、在一個C源程序文件中,若要定義一個只允許本源文件中所有函數使用的全局變數,則該變數需要使用的存儲類別為【 】。
(A)extern
(B)register
(C)auto
(D)static
12、以下不正確的描述為【 】。
(A)在函數之外定義的變數稱為外部變數,外部變數是全局變數
(B)在一個函數中既可以使用本函數中的局部變數,又可以使用全局變數
(C)外部變數定義和外部變數說明的含義不同
(D)若在同一個源文件中,外部變數與局部變數同名,則在局部變數的作用范圍內,外部變數不起作用
13、以下正確的函數定義形式是【 】。
(A)double fun(int x,int y)
(B)double fun(int x; int y)
(C)double fun(int x,int y);
(D)double fun(int x,y);
14、以下說法正確的是【 】。
(A) 實參和與其對應的形參各佔用獨立的存儲單元
(B) 實參和與其對應的形參共佔用一個存儲單元
(C) 只有當實參和與其對應的形參同名時才共用存儲單元
(D) 形參是虛擬的,不佔用存儲單元
15、若調用一個函數,且此函數中沒有return語句,則正確的說法是【 】。
(A) 沒有返回值
(B) 返回若干個系統默認值
(C) 能返回一個用戶所希望的函數值
(D) 返回一個不確定的值
16、以下敘述正確的是【 】。
(A )定義函數時,形參的類型說明可以放在函數體內
(B) return後邊的值不能為表達式
(C) 如果函數的類型與返回值類型不一致,以函數類型為准
(D) 如果形參與實參的類型不一致,以實參類型為准
17、以下程序有語法性錯誤,有關錯誤的原因的正確說法是【 】。
main( )
{int G=5,K;
void Prt_char();
……
K=Prt_char(G);
……
}
(A) 語句void prt_char();有錯,它是函數調用語句,不能用void說明
(B) 變數名不能使用大寫字元
(C) 函數說明和函數調用語句之間有矛盾
(D) 函數名不能使用下劃線
18、以下正確的描述是【 】。
(A) 函數的定義可以嵌套,但函數的調用不可以嵌套
(B) 函數的定義不可以嵌套,但函數的調用可以嵌套
(C) 函數的定義和函數的調用均不可以嵌套
(D) 函數的定義和函數的調用均可以嵌套
19、以下說法正確的是【 】。
如果在一個函數中的復合語句中定義了一個變數,則該變數
(A) 只在該復合語句中有效
(B) 在該函數中有效
(C) 在本程序范圍內均有效
(D) 為非法變數說明
20、以下程序的正確運行結果是【 】。
f(int a)
{int b=0; static int c=3;
b++; c++;
return(a+b+c);
}
main()
{int a=2,i;
for(i=0;i<3;i++) printf("%4d",f(a));
}
(A) 7 7 7 (B) 7 10 13
(C) 7 9 11 (D) 7 8 9
21、請選擇正確的運行結果填入【 】中。
#include <stdio.h>
fun(int x,int y)
{static int m=0,i=2;
i+=m+1;
m=i+x+y;
return(m);
}
main()
{
int j=4,m=1,k;
k=fun(j,m);
printf("%d,",k);
k=fun(j,m);
printf("%d\n",k);
}
(A) 08, 20 (B) 8, 8 (C) 8, 17 (D) 8, 16
22、請選擇正確的運行結果填入【 】中。
#include <stdio.h>
int x,y;
num( )
{
int a=15,b=10;
int x,y;
x=a-b;
y=a+b;
return;
}
main( )
{int a=7,b=5;
x=a+b;
y=a-b;
num( );
printf("%d,%d\n",x,y);
}
(A) 12,2 (B) 5,25 (C) 2,12 (D)不確定
一、填空題
1、一個C語言程序的語句至少應包含一個______。
2、C語言源程序文件的擴展名是______,經過編譯、連接後,生成文件的擴展名是______。
3、結構化程序由順序結構、______和______三種基本結構組成。
4、C語言的執行是從______開始執行的。
5、C源程序的語句分隔符是______。
6、在C語言中,用關鍵字______定義單精度實型變數。
7、表達式S=12應當讀做「______」。
8、C語言源程序的基本單位是______。
9、設int x=9,y=8;表達式x-=y+1的結果是______。
10、若a為整型變數,a=12,則表達式:a * =2+3的值______。
11、調用C語言對輸入輸出處理的庫函數時,在# include命令行中應包含的頭文件是______。
12、表達式9%5的結果是______。
13、若a為整型變數,a=12,則表達式:a+=4的值______。
14、 在C語言中,要求運算數必須是整型的運算符是______。
15、在C語言中,用______表示邏輯「真」值。
16、7、表達式10/3的結果是______。
17、通常一個位元組包含______個二進制位。
18、 假設所有變數均為整型,a=2,b=5,b++則表達式a+b的值是______。
19、在C語言中,最基本的數據類型只有四種,它們分別是:______、______、______和double。
20、一個C程序有且僅有一個______函數。
21、若a為整型變數,a=12,則表達式:a-=2的值______。
22、在C語言中,有三種邏輯運算符,它們分別是:______、______、______。
23、在C語言中,字元輸入函數和字元輸出函數分別是:______和______。
24、C程序開發的四個步驟是______、______、______和執行。
25、C程序的結構分別是:順序結構、______、______。
26、if語句中的表達式可以是關系表達式、______、______。
27、______是C語言中惟一一個三元運算符。
28、C語言提供的預處理命令主要包括如下三種:宏定義、______、______。
⑷ 求大一C語言期末考試題庫
我給你了,ok 記得採納
⑸ C語言期末考試試題(譚浩強版)
C語言期末考試試題
2008年04月12日 星期六 00:22
一 選擇題(24分,每小題2分)
1.已知函數fread的調用形式為fread(buffer,size,count,fp),其中buffer代表的是()。
A 存放讀入數據項的存儲區
B 存放讀入數據的地址或指向此地址的指針
C 一個指向所讀文件的文件指針
D 一個整形變數,代表要讀入的數據項總數
2.以下程序的輸出結果為( )。
main( )
{
int i=010,j=10;
printf("%d,%d\n",i++,j--);
}
A 11,9
B 9,10
C 8,10
D 9,9
3.設a為int型變數,執行下列賦值語句後,a的取值分別是( )。
a=125.534;
a=20.0/3;
a=(int)125.521%4;
a=5<<2;
A 125,6,31,1
B 125,6,1,20
C 125,6.666666,31,20
D 125.534,6.666666,2,20
4.設i和k都是int類型,則for循環語句( )。
for(i=0,k=-1;k=1;i++,k++)
printf("****\n");
A 循環結束的條件不合法
B 循環體一次也不執行
C 循環體只執行一次
D 是無限循環
5.以下程序的輸出結果為( )。
main( )
{
char c;
int i;
for(i=65;i<68;i++)
{
c=i+32;
switch(c)
{
case 'a':
case 'b':
case 'c':printf("%c,",c);break;
default:printf("end");
}
}
}
A a,b,c,end
B a,a,a,end
C a,a,a,
D a,b,c,
6.函數調用語句:fseek(fp,-10L,2);的含義是( )。
A 將文件位置指針從文件末尾處向文件頭的方向移動10個位元組
B 將文件位置指針從當前位置向文件頭的方向移動10個位元組
C 將文件位置指針從當前位置向文件末尾方向移動10個位元組
D 將文件位置指針移到距離文件頭10個位元組處
7.以下程序的輸出結果為( )。
main( )
{
int i=0,j=0;
while(s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];
s1[i]=0;
printf("%s\n",s1);
}
A side
B country
C sidetry
D countryside
8.下列說法不正確的是( )。
A 主函數main中定義的變數在整個文件或程序中有效
B 不同函數中,可以使用相同名字的變數
C 形式參數是局部變數
D 在一個函數內部,可以在復合語句中定義變數,這些變數只在本復合語句中有效
9.在下列程序段中,枚舉變數 c1的值是( )。
enum color { red,yellow,blue=4,green,white}c1;
c1=yellow;
c1=white;
A 1
B 3
C 5
D 6
10.設有說明 int (*ptr)();其中標識符ptr是( )。
A 是一個指向整形變數的指針
B 是一個指針,它指向一個函數值是int的函數
C 是一個函數名
D定義不合法
11.定義由n個指向整形數據的指針組成的數組p,其正確的方式為( )。
A int p;
B int (*p)[n];
C int *p[n];
D int (*p)( );
12.具有相同類型的指針類型變數p與數組a,不能進行的操作是( )。
A p=a;
B *p=a[0];
C p=&a[0];
D p=&a;
二 判斷對錯,對的劃「√」,錯的劃「×」(20分,每小題2分)
1.參加位運算的數據可以是任何類型的數據。 ( )
2.若有定義和語句:
int a;
char c;
float f;
scanf("%d,%c,%f",&a,&c,&f);
若通過鍵盤輸入:10 A 12 5
則a=10,c=『A』,f=12.5。 ( )
3.C語言把文件看作是一個字元(位元組)的序列。 ( )
4.若有宏定義:
#define S(a,b) t=a;a=b;b=t
由於變數t沒定義,所以此宏定義是錯誤的。 ( )
5.在Turbo C中,下面的定義和語句是合法的:
file *fp;
fp=fopen("a.txt","r"); ( )
6.若有定義:
char s[ ]="china";
則Turbo C系統為數組s開辟6個位元組的內存單元。 ( )
7.若有定義和語句:
int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;
for(i=0;i<3;i++)
sum+=a[i][2-i];
則sum=21。 ( )
8.若有定義和語句:
struct student
{
int num;
char name[10];
float score;
}
s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);
輸出結果是1。 ( )
9.在程序中定義了一個結構體類型後,可以多次用它來定義具有該類型的變數。 ( )
10.在Turbo C中,此定義和語句是合法的:
enum aa{ a=5,b,c}bb;
bb=(enum aa)5; ( )
三 寫出下列程序的運行結果(36分,每小題6分)
1.
main( )
{
int i=29,j=6,k=2,s;
s=i+i/j%k-9; //s=i+(i/j)%k-9
printf(「s=%d\n」,s);
}
2.
main( )
{
int x=31,y=2,s=0;
do
{
s-=x*y;
x+=2;y-=3;
}
while(x%3==0); //先執行,後判斷
printf(「x=%d\ty=%d\ts=%d\n」,x,y,s);
}
3.
main( )
{
int a[6]={10,20,30,40,50,60},i;
invert(a,0,5);
for(i=0;i<6;i++)
printf(「%d,」,a[i]);
printf(「\n」);
}
invert(int s[ ],int i,int j) //倒置
{
int t;
if(i<j)
{
invert(s,i+1,j-1); //函數自身的嵌套調用,形成循環
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
4.
#include <stdio.h>
main()
{
char str[ ]="The C program",c;
int i;
for(i=2;(c=str[i])!='\0';i++)
{
switch(c)
{
case 'g': ++i; break; //由於++i,跳過了g後面的1個字母
case 'o': continue;
default: printf(「%c」,c); continue;
}
printf(「*」);
}
printf(「\n」);
}
5.
struct w //結構體
{
char low;
char high;
};
union u //共用體
{
struct w byte;
short word;
}uw;
main( )
{
int result;
uw.word=0x1234;
printf("word value:%04x\n",uw.word);
printf("high byte:%02x\n",uw.byte.high);
printf("low byte:%02x\n",uw.byte.low);
uw.byte.low=0x74;
printf("word value:%04x\n",uw.word);
result=uw.word+0x2a34;
printf("the result:%04x\n",result);
}
6.
main()
{
char *s2="I love China!",**s1=&s2;
char *s3,c,*s4="w";
s3=&c;
*s3='H';
s2=s2+2;
printf("%s\t%c\t%s\t%c\n",s2,*s3,s4,**s1);
}
四 閱讀下列程序,在 處填入適當內容,使程序完整(20分,每個空2分)
1.百馬百擔問題:有100匹馬,馱100擔貨,大馬馱3擔,中馬馱2擔,兩匹小馬馱1擔,問大、中、小馬各多少匹?
main( )
{
int hb,hm,hl,n=0;
for(hb=0;hb<=100;hb+=(1))
for(hm=0;hm<=100-hb;hm+=(2))
{
hl=100-hb- (3) ;
if(hb/3+hm/2+2*(3)==100)
{
n++;
printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,2*hl);
}
}
printf("n=%d\n",n);
}
2.用「起泡法」對輸入的10個字元排序後按從小到大的次序輸出。
#define N 10
char str[N];
void main()
{
int i,flag;
for(flag=1;flag==1;)
{
scanf("%s",str);
flag=0;
printf("\n");
}
sort(___(4)___);
for(i=0;i<N;i++)
{
printf("%c",str[i]);
}
printf("\n");
}
sort(char str[N]) //冒泡排序
{
int i,j;
char t;
for(j=1;j<N;j++)
for(i=0;i<10-j;i++)
if(str[i]>str[i+1])
{
t=str[i];
____(5)____;
____(6)____; //交換位置
}
}
3.以下程序是一個函數,功能是求二階矩陣(m行n列矩陣)的所有靠外側的各元素值之和。(本程序中二階矩陣用一維數組來表示。)
例如,矩陣為:
3 0 0 3
2 5 7 3
1 0 4 2
則所有靠外側的各元素值之和為3+0+0+3+2+3+1+0+4+2=18。
add(int m,int n,int arr[])
{
for(i=0;i<m;i=i+m-1)
for(j=0;j<n;j++)
sum=sum+____(7)____;
for(j=0;j<n;j=j+n-1)
for(i=1;____(8)____;i++)
sum=sum+arr[i*n+j];
return(sum);
}
4.用指針作函數參數,編程序求一維數組中的最大和最小的元素值。
#define N 10
main()
{
void maxmin(int arr[],int *pt1,int *pt2,int n);
int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;
p1=&a;
p2=&b;
maxmin(array,p1,p2,N);
printf("max=%d,min=%d",a,b);
}
void maxmin(int arr[],int *pt1,int *pt2,int n)
{
int i;
*pt1=*pt2=arr[0];
for(i=1;i<n;i++)
{
if(arr[i]>*pt1)
____(9)____ ;
if(arr[i]<*pt2)
____(10)____ ;
}
}
答案
一 選擇題(24分,每小題2分)
1.( B ) 2.( C ) 3.( B )
4.( D ) 5.( D ) 6.( A )
7.( D ) 8.( A ) 9.( D )
10.( B ) 11.( C ) 12.( D )
二 判斷對錯,對的劃「√」,錯的劃「×」(20分,每小題2分)
1.( × ) 2.( √ )
3.( √ ) 4.( × )
5.( × ) 6.( √ )
7.( √ ) 8.( × )
9.( √ ) 10.( √ )
三 寫出下列程序的運行結果(36分,每小題6分)
1.s=20
2.x=35 y=-4 s=-29
3.60,50,40,30,20,10,
4.e C pr*am
5.word value:1234
6.love China! H w l
high byte:12
low byte:34
word value:1274
the result:3ca8
四 閱讀下列程序,在 處填入適當內容,使程序完整(20分,每個空2分)
1.(1) 3 (2) 2 (3)hm hl
2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t
3.(7) arr[i*n+j] (8) i<m-1
4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]
⑹ 河海大學 程序設計基礎(C語言)期末考試試題
自己去大學的主頁登錄,查看題目庫。期末的題目一般在那裡面。或者是改編的
⑺ 跪求C語言高手解答期末作業
void tianjia() //添加信息
{
printf("請輸入要添加的學生信息:\n\n");
printf("請輸入學號\n"); //學號
scanf("%d",&stu[n].id);
printf("請輸入名字\n"); //姓名
scanf("%s",stu[n].name);
printf("請輸入年齡(1-99)\n"); //年齡
scanf("%d",&stu[n].age);
getchar();
printf("請輸入性別(W或者M)\n");//性別
scanf("%s",stu[n].sex);
n++;
}
void xianshi() //顯示所有信息
{
printf("顯示所有學生信息:\n\n");
int j;
printf("\t學號\t姓名\t年齡\t性別\n");
for(j=0;j<n;j++)
printf("\t%d\t%s\t%d\t%s\n",stu[j].id,stu[j].name,stu[j].age,stu[j].sex);
}
void paixu(student stu3[]) //按學號從大到小排序函數
{
printf("對所存學生信息排序情況如下:\n");
int j,k;
int o;
char name[10];int age;char sex[5];
for(j=0;j<n;j++)
for(k=0;k<n-1-j;k++)
if(stu[k].age<stu[k+1].age)
{
{o=stu[k].id;stu[k].id=stu[k+1].id; stu[k+1].id=o;}
{strcpy(name,stu[k].name);strcpy(stu[k].name,stu[k+1].name);strcpy(stu[k+1].name,name);}
{age=stu[k].age;stu[k].age=stu[k+1].age;stu[k+1].age=age;}
{strcpy(sex,stu[k].sex);strcpy(stu[k].sex,stu[k+1].sex);strcpy(stu[k+1].sex,sex);}
}
xianshi();
}
void chazhao() // 查找學生信息
{
int m;
char name[20],b;
do
{
printf("請輸入想查找的學生姓名:\n\n");
fflush(stdin);
gets(name);
for(m=0;m<n;m++)
{
if(strcmp(name,stu[m].name)==0)
{
printf("\n\t已找到您要查找的信息\n",m+1);
break;
}
}
if(m>=20)
printf("\n\n沒有查找到該信息,請確定是否有誤\n");
else
{
printf("\t學號\t姓名\t年齡\t性別\n");
printf("\t%d\t%s\t%d\t%s\t",
stu[m].id,stu[m].name,stu[m].age,stu[m].sex);
}
printf("\n是否查找另一個學生的信息?(y/n)");
fflush(stdin);
b=getchar();
}while(b=='y');
}
void shanchu() // 刪除學生信息
{
char name[20],c;
int a,b;
do
{
printf("請輸入要刪除的學生姓名:\n\n");
fflush(stdin);
gets(name);
for(a=0;a<n;a++)
{
if(strcmp(name,stu[a].name)==0)
break;
}
for(b=a;b<n;b++)
stu[b]=stu[b+1];
if(a>n)
printf("\t沒有找到這個學生!!!\n");
else
{
n--;
xianshi();
}
printf("\n是否繼續刪除另一個學生信息?(y/n) ");
fflush(stdin);
c=getchar();
}while(c=='y');
}
能將以上的演算法思想說一下么,雖然比較簡單,但是本人是新手
問題補充:#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int n=0;
struct student
{
int id; //學號
char name[10]; //名字
int age; //年齡
char sex[5]; //性別
}stu[50];
int menu_1() //定義菜單1
{
int c;
system("cls"); //清屏
printf("\t___________________學生信息管理系統___________________\n");
printf("\t\t\t1: 添加學生信息\n");
printf("\t\t\t2: 顯示所有學生信息\n");
printf("\t\t\t3: 查找學生信息\n");
printf("\t\t\t4: 刪除學生信息\n");
printf("\t\t\t5: 對學生信息排序\n");
printf("\t\t\t6: 退出學生信息\n");
printf("\t======================================================\n");
printf("\t\t\t請輸入您的選擇:");
scanf("%d",&c); //接收定量C
return(c); //返還C
}
⑻ 大一C語言期末考試求題庫啊!
對呀,大多都是不一樣的,
⑼ 大一C語言期末考試求題庫
一、單項選擇題(共10題,每題2分,共20分。在備選答案中選擇一個最佳答案。多選、錯選、不選不得分)
1、不是C語言基本數據類型的是( )。
A、指針類型 B、整型
C、字元型 D、實型
2、設有:int a=3, b= 4, c= 5,x , y; 表達式0 && (x=a)&&(y=b)的值為( )。
A、1 B、0 C、3 D、4
3、設有語句 int a=3 ; 則執行了語句 a+=6;後,變數a 的值為( )。
A、18 B、-3 C、9 D、12
4、執行以下程序段後,輸出的y值為( )
void main()
{ int a[]={2,4,6,8,10};
int y, *p;
p=&a[0];
y=*p; printf(「%d」,y);
}
A、2 B、4 C、6 D、8
5、有定義語句:float a[4];則分配給數組a的內存空間為( )位元組。
A、 20 B、 12 C、 16 C、10
6、以下描述錯誤的是( )。
A、break語句可用於while語句。
B、break語句和continue語句的作用是一樣的。
C、在循環語句中使用break語句是為了跳出循環,提前結束循環。
D、在循環語句中使用continue語句是為了結束本次循環,而不終止整個循環。
7、C語言中規定,if語句的嵌套結構中,else總是( )。
A、與最近的if 配對 B、與第一個if 配對
C、按縮進位置相同的if配對 D、與最近的且尚未配對的if 配對
8、說明語句「int (*p)( ); 」的含義是( ) 。
A、p是一個指向一維數組的指針變數。
B、p是指針變數,指向一個整型數據。
C、p是一個指向函數的指針,該函數返回一個int型數據。
D、以上都不對。
9、以下對二維數組c的正確聲明是 ( ) 。
A、int c[3][ ]; B、int c(3,4);
C、int c(2)(2); D、int c[3][2];
10、下述程序段執行後輸出結果為( )。
int x=100, y=200;
printf ("% d", (x, y));
A、100 B、200 C、100,200 D、編譯出錯
二、填空題(共7題,共10空,每空1分,共10分。將答案填在題中橫線上)
1、C語言提供的三種邏輯運算符是 && 、 || 和!;
2、函數的返回值是通過函數中的 return 語句獲得的。
3、在"int a[ ][3]={{1},{3,2},{4,5,6},{0}};"定義後,a[2][2]的值為_6__ _;
4、對於"int *pa[5];" pa是一個具有5個元素的_數組指針_,每個元素是一個指向int型變數的__指針__;
5、單向鏈表的尾節點next指針應賦值__ NULL___;
6、在語句for(x=1,y=3;x>y;y++)中循環體執行的次數為 0 。
7、int a[5];數組a的首地址為2000,則元素a[1]的地址為 2002 ,元素a[2]的地址為 2004 。
三、程序填空題(共2題,共5空,每空4分,共20分)
1、以下程序完成計算1-1/2+1/3-1/4+1/5+……前n 項和,請填空。
#include <stdio.h>
int main( )
{ int i, n, flag;
float sum;
scanf("%d", &n);
flag= 1 ;
sum=0;
for(i=1;i<=n; i++ )
{ sum+=(float)flag/i;
flag=-flag ;
}
printf("%.3f\n", sum);
}
2、以下程序的功能是從鍵盤輸入n個整數,統計其中正數、0、負數的個數,請填空。
#include <stdio.h>
void main( )
{int a, i, count1,count2,count3;
count1=count2=count3=0 ;
for(i=1;i<=n;i++)
{ scanf(「%d」, &a);
if(a>0) count1++;
else if(a==0) count2++ ;
else count3++;
}
printf(「正數:&d個,零:%d個,負數:%d個\n」, count1,count2,count3 );
}
四、運行程序結果題(共4題,每題6分,共24分)
1、寫出程序運行結果。
void main( )
{ int x=1,y=2,t;
int *p1,*p2;
p1=&x; p2=&y;
t=*p1;*p1=*p2;*p2=t;
printf("x=%d,y=%d\n",x,y);
}
運行結果為:
程序有錯,不能運行!或寫:
x=2,y=1
2、寫出程序運行結果。
#include<stdio.h>
int max(int a,int b)
{ int c;
c=a>b?a:b;
return(c);
}
int min(int a,int b)
{int c;
c=a<b?a:b;
return(c);
}
void main()
{ int a=2,b=6;
printf("max=%d\n",max(a,b));
printf(「min=%d\n」,min(a,b));
}
運行結果為:
程序有錯,不能運行!或寫:
max=6
min=2
3、寫出程序運行結果。
#include <stdio.h>
void main()
{ int a[3][3]={1,2,3,4,5,6,7,8,9};
int i,j,sum=0;
for (i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j) sum=sum+a[i][j];
printf(「sum=%d\n」,sum);
}
運行結果為:
程序有錯,不能運行!或寫:
sum=15
4、寫出程序運行結果。
void main( )
{ int n,f;
n=1;
while(n<=10)
{ f=f*n;
n+=2;
}
printf(「f=%d\n」,&f);
}
運行結果為:
程序有錯,不能運行!或寫:
f=不確定
五、程序設計題(共2題,每題13分,共26分)
1、將一個數組按逆序存放,如元素1、2、3、4、5,按逆序存放後為5、4、3、2、1。
⑽ 大連理工大學c語言期末考試是考題庫里的題嗎
14年考的跟題庫差不多。