版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《C語(yǔ)言程序設(shè)計(jì)》第2版
第I章程序設(shè)計(jì)與c語(yǔ)言概述
一、填空題
1.算法是指為解決某個(gè)特定問(wèn)題而采取的方法和步驟
2.函數(shù)主main()
3..c.obj.exe
4.(}
5.采用模塊化方法,自上而下,逐步細(xì)化
6.有窮性確定性可行性有零個(gè)或多個(gè)輸入有一個(gè)或多個(gè)輸
出
二、選擇題
l.D2.D3.B4.B5.D6.A7.B8.D9.C
三、簡(jiǎn)答題
1.程序是指存儲(chǔ)在計(jì)算機(jī)內(nèi)部存儲(chǔ)器中,可以連續(xù)執(zhí)行的一條條指
令的集合。程序設(shè)計(jì)是指對(duì)提出的問(wèn)題進(jìn)行分析、確定數(shù)據(jù)模型、設(shè)
計(jì)算法、編寫(xiě)源代碼、調(diào)試并運(yùn)行的方法和過(guò)程。
2.結(jié)構(gòu)化程序設(shè)計(jì)是采用模塊化結(jié)構(gòu),自上而下,逐步細(xì)化的基本
思想來(lái)進(jìn)行程序設(shè)計(jì)的一種方法。
用結(jié)構(gòu)化程序設(shè)計(jì)方法得到的程序不僅清晰易讀易寫(xiě)、而且易維護(hù)、
易排錯(cuò)、易驗(yàn)證正確性,所以提倡采用此方法。
3.(1)C語(yǔ)言簡(jiǎn)潔、緊湊、使用方便。(2)運(yùn)算功能豐富。(3)數(shù)
據(jù)結(jié)構(gòu)豐富。(4)C語(yǔ)言具有結(jié)構(gòu)化的特點(diǎn)。(5)語(yǔ)法規(guī)則相對(duì)寬松,
程序設(shè)計(jì)自由度大。(6)生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。(7)
C語(yǔ)言允許直接訪問(wèn)物理地址,能進(jìn)行位操作,具有匯編語(yǔ)言的大部
分功能。(8)可移植性好。
四、編寫(xiě)程序題
#include<stdio.h>
voidmain()
(
printf("*&*&*&*&*&*&*\n*);
printf("*Youarewelcome!*\n,?);
printf("*&*&*&*&*&*&*\n*);
)
第2章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式
一、選擇題
l.B2.B3.A4.C5.C6.A7.D8.A9.D10.C
ll.C12.A13.B14.B15.C16.B
二、填空題
1、intfloatchar
2、1
3、366.0
4、24612
5、3840
6、換行,將當(dāng)前位置移到下一行的開(kāi)頭橫向跳格到下一個(gè)制表
位
7、(int)(b*c)
三、程序分析題
1、477
2、5555-4-5
3、b
b
4、M
5、30
第3章C程序設(shè)計(jì)的三種基本結(jié)構(gòu)
一、選擇題
1-56-1011-1516-2021-24
DBDAABCBBACDCCCCAAABABDA
二、填空題
1.順序結(jié)構(gòu)選擇結(jié)構(gòu)(分支結(jié)構(gòu))循環(huán)結(jié)構(gòu)
2.字符輸入函數(shù)從終端輸入一個(gè)字符字符輸出函數(shù)從終
端輸出一個(gè)字符#include<stdio.h>
3.原樣輸出
4.一對(duì)花括號(hào)
5.exp(x*x+y*y)/abs(x-y)
6.1
7.x>12&&x<60llx<0
8.printf("a=%d,b=%d",a,b);
9.12,345
10.6,5,A,B
11.123.460000
12.855
13.yes
14.-2
15.passwarn
16.3,2,-1
17.31
18.7
19.a<10b%4!=0
20.2*x+4*y==100
21.p*10
22.j>0i
23.10
三、程序分析題
1.(1)-100200
(2)i=-100,j=200
(3)i=-100
(4)j=200
2.100,101
d,e
D,E
3.2,20.000000
4.1,5,5,6
5.求出隨機(jī)輸入的3個(gè)數(shù)的最大數(shù)和最小數(shù)
6.6
7.$$$$$
8.7
9.54321
10.3,2,-1
11.32
四、編寫(xiě)程序題
1.輸入一個(gè)3位正整數(shù),以倒序形式輸出它的各位數(shù)。(如輸入123,
輸出321)
#include<stdio.h>
voidmain()
inta,bl,b2,b3;
scanf("%d",&a);
bl=a%10;
b2=a/10%10;
b3=a/100%10;
printf("%d%d%d",bl,b2,b3);
)
2.輸入一個(gè)華氏溫度,要求輸出對(duì)應(yīng)的攝氏溫度。(保留兩位小數(shù))
#include<stdio.h>
voidmain()
(
floatc,f;
printf("請(qǐng)輸入一個(gè)華氏溫度
scanf("%f",&f);
c=(5.0/9.0)*(f-32);
printf("它的攝氏溫度為:%.2f\n",c);
)
3.編寫(xiě)程序,求解一元二次方程ax2+bx+c=0的根。(假設(shè)b2-4acN0)
#include<stdio.h>
#include<math.h>
voidmain()
floata,b,c,disc,xl,x2,p,q;
scanf("%f%f%f",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/(2*a);
xl=p+q;
x2=p-q;
printf("x1=%5,2f,x2=%5,2^n",xl,x2);
)
4.編寫(xiě)一個(gè)計(jì)算售票收款數(shù)目的小程序。要求:每張票零售價(jià)格為
20元,團(tuán)體票價(jià)格為15元,一次購(gòu)票數(shù)目為20張以上時(shí)按團(tuán)體票
出售。對(duì)輸入的購(gòu)票數(shù)目計(jì)算并輸出相應(yīng)的購(gòu)票款的數(shù)額。
#include<stdio.h>
main()
(
intsum,number;
printf("Pleaseinputthenumber:");
scanf("%d",&number);
if(number>=20)sum=number*15;
elsesum=number*20;
printf("sum=%d\n",sum);
)
5.輸入一個(gè)正整數(shù),計(jì)算并輸出這個(gè)正整數(shù)的各位數(shù)字之和。(如輸
入179,則各位數(shù)字之和為1+7+9=17)
#include"stdio.h"
#include"math.h"
voidmain()
(
longinta,b,i,n=0;
intsum=0;
printf("Inputthenumber:");
scanf("%ld",&a);
for(i=0;i<a;i++)
if(a/pow(10,i)>=l)
n++;
for(i=n-l;i>=0;i—)
(
b=a/pow(10,i);
a=a-b*pow(10,i);
sum+=b;
)
printf("%d\n",sum);
getch();
)
6.隨機(jī)輸入4個(gè)數(shù),編寫(xiě)程序?qū)?個(gè)數(shù)按從大到小的順序輸出。
#include<stdio.h>
main()
(
intt,a,b,c,d;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(a<b){t=a;a=b;b=t;}
if(a<c){t=a;a=c;c=t;}
if(a<d){t=a;a=d;d=t;}
if(b<c){t=b;b=c;c=t;}
if(b<d){t=b;b=d;d=t;}
if(c<d){t=c;c=d;d=t;}
printf("%d%d%d%d\n",a,b,c,d);
)
7.編寫(xiě)程序,輸出1990年?2006年之間所有的閏年年份。
#include<stdio.h>
main()
(
intyear;
for(year=1990;year<=2006;year++)
if(year%4==0&&year%100!=0llyear%400==0)
printf("%d\t",year);
8.編寫(xiě)程序,求解1!+2!+……+10!o
#include<stdio.h>
voidmain()
(
inti;
longn=l,p=0;
for(i=l;i<=10;i++)
(
n*=i;
p+=n;
)
printf("l!+2!+...+10!=%ld\n",p);
)
9.編寫(xiě)程序,輸出所有“水仙花數(shù)”。
#include"stdio.h"
main()
(
inti,j,k,n;
for(n=100;n<1000;n++)
(
i=n/100;
j=n/10%10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%-5d",n);
)
)
10.編寫(xiě)程序,判斷n是否為素?cái)?shù)。
#include"stdio.h"
#include"math.h"
voidmain()
(
inti,m,k;
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>k)printf("%disaprimenumber.\n",m);
elseprintf("%disnotaprimenumber.\n",m);
)
11.編寫(xiě)程序,從鍵盤(pán)上連續(xù)輸入若干個(gè)字符,直到輸入回車(chē)符為止。
統(tǒng)計(jì)并輸出所輸入的空格、大寫(xiě)字母、小寫(xiě)字母及其它字符的個(gè)數(shù)。
#include<stdio.h>
voidmain()
charch;
intal=0,a2=0,a3=0,a4=0;
while((ch=getchar())!='\n')
(
if(ch>='A'&&ch<='Z')al++;
elseif(ch>='a'&&ch<='z')a2++;
elseif(ch=='')a3++;
elsea4++;
)
printf("%d,%d,%d,%d\n",al,a2,a3,a4);
)
12.每個(gè)桃子0.5元,第一天買(mǎi)2個(gè)桃子,從第二天開(kāi)始,每天買(mǎi)前
一天的2倍,直到購(gòu)買(mǎi)的桃子數(shù)不超過(guò)100。編寫(xiě)程序求每天平均花
多少元錢(qián)。
#include<stdio.h>
voidmain()
(
intbuy=2,day=0;
doublesum=0;
while(buy<=100)
sum+=0.5*buy;
day++;
buy*=2;
)
printf("%.lf\n",sum/day);
)
第4章數(shù)組
一、選擇題
l.D2.C3.D4.C5.B6.B7.C8.C9.C10.Cll.B12.D
13.C
二、填空題
1、0,5
2、地址
3、按行存放
4、#include<string.h>或#include“string.h"
5、2
6、1B
7、&num[i]i%4==0printf("\n");
三、程序分析題
1、輸入10個(gè)整數(shù),對(duì)輸入的10個(gè)整數(shù)從大到小進(jìn)行排序。
2、程序運(yùn)行結(jié)果:
Abcbcc
3、程序運(yùn)行結(jié)果:
92
四、編寫(xiě)程序題
1.運(yùn)用數(shù)組求出100之內(nèi)能被5整除的數(shù)。
#include<stdio.h>
voidmain()
(
int
inta[50];
for(i=l,j=0;i<=100;i++)
{if(i%5==0)
{a[j]=i;
j++;
)
m=j;
}
for(j=0;j<m;j++)
printf("%5d",a|j]);
}
2.有10個(gè)數(shù)已按由小到大的順序排列好。要求輸入一個(gè)數(shù),把它插
入到原有數(shù)列中,而且仍然保持原有的順序,并輸出新的數(shù)組。
#include<stdio.h>
voidmain()
(
inti,j,m,tag=0;
inta[ll]={2,4,6,8,10,12,14,16,18,20);
scanf("%d",&m);
for(i=0;i<10;i++)
{if(m<a[i])
{for(j=9;j>=i;j-)
aU+U=a|j];
a[i]=m;
tag=l;
break;
)
)
if(tag==O)
a[10]=m;
for(i=0;i<ll;i++)
printf("%5d",a[i]);
}
3.已知一維數(shù)組a中存放了10個(gè)互不相同的整數(shù),從鍵盤(pán)任意
輸入一個(gè)整數(shù)x,從數(shù)組a中刪除與x相同的元素,然后輸出數(shù)組a。
#include<stdio.h>
voidmain()
(
inti,j,m;
inta[10]={2,4,6,8,10,12,14,16,18,20);
scanf("%d",&m);
for(i=0;i<10;i++)
{if(m==a[i])
{for(j=i;j<10;j++)
aUMU+1];
)
)
for(i=0;i<9;i++)
printf("%5d",a[i]);
)
4.求一個(gè)3x3矩陣對(duì)角線(xiàn)元素之積。
#include<stdio.h>
voidmain()
(
int
inta[3][3]={1,2,34,5,6,7,8,9);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{if(i==j)
if(i+j==2&&i!=j)
m=m*a[i]「];
)
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%3d",a[i][j]);
printf("\n");
}
printf("%d",m);
)
5.求出數(shù)組周邊元素的平均值。
#include<stdio.h>
voidmain()
(
inti,j,m=0,num=0;
floatavg;
inta[3][3]={0,l,2,3,4,5,6,7,8);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==0llj==0lli==2llj==2)
{m=m+a[i][j];
num++;
)
avg=(float)m/num;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%3d",a[i][j]);
printf("\n");
)
printf("%.3f',avg);
}
6.打印“魔方陣”。魔方陣是指每一行、每一列和對(duì)角線(xiàn)之和均相等
的方陣。
#defineMAX15
#include<stdio.h>
main()
{intn;
intm=1;
inti,j;
inta[MAX][MAX];
scanf("%d",&n);
i=0,j=(n+l)/2-l;
while(m<=n*n)
a[i][j]=m;
m++,i--,j++;
if((m-l)%n==O&&m>l)
i=i+2,j=j-l;
if(i<0)
i=i+n;
ifG>(n-D)
j=j-n;
)
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
{if(a[i][j]/10==0)
printf("%5d",a[i][j]);
elseprintf("%5d",a[i][j]);
)
printf("\n");
)
7.任意輸入一字符串,求該字符串的長(zhǎng)度(不用strlen函數(shù))。
#include<stdio.h>
#include<string.h>
main()
(
charstr[100];
inti,len=O;
gets(str);
for(i=0;str[i]!='\0';i++)
len++;
puts(str);
printf("Thelengthis:%d",len);
)
8.編寫(xiě)程序,在一個(gè)字符數(shù)組中查找一個(gè)指定的字符,若數(shù)組中含
有該字符,則輸出該字符在數(shù)組中第一次出現(xiàn)的位置(下標(biāo)值),否
則輸出-1。
#include<stdio.h>
#include<string.h>
main()
(
charstr[100],c;
inti,flag=O,m;
gets(str);
c=getchar();
for(i=0;str[i]!='\0';i++)
if(c==str[i])
{flag=l;
m=i;
break;
)
if(flag=l)
printf("thelocationisstr[%d]",m);
else
printf("-l");
)
9.輸入兩個(gè)字符串a(chǎn)和b。兩個(gè)字符串對(duì)應(yīng)位置中的字符,把ASCH
碼值大的或相等的字符依次存放到c數(shù)組中,形成一個(gè)新的字符串。
#include<stdio.h>
#include<string.h>
main()
(
chara[100],b[100],c[100];
inti,flag=0,m;
gets(a);
gets(b);
for(i=0;a[i]!='\0'&&b[i]!='\0';i++)
if(a[i]>=b[i])
c[i]=a[i];
else
c[i]=b[i];
puts(a);
puts(b);
puts(c);
第5章函數(shù)
一、選擇題
1-567-1011-1516-18
CABDB無(wú)DACBCDBDBDBA
說(shuō)明:第6小題應(yīng)該為:floatmax(inta,intb)
二、填空題
1.實(shí)參形參
2.return
3.void
4.數(shù)組的首地址數(shù)值
5.作用域
6.外部變量
7.靜態(tài)局部變量(static)
8.任意的
9.age(n-l)+lage(a)
三、程序分析題
1.44
2.j=5,k=6,x=6
j=l,k=5,x=3
3.810
4.12
5.010111212
四、編寫(xiě)程序題
1.編寫(xiě)函數(shù),求解1?6的立方值。
#include<stdio.h>
voidfun(inta)
(
intn=a*a*a;
printf("%d\t",n);
)
voidmain()
(
inti;
for(i=l;i<=6;i++)
fun(i);
2.輸入n個(gè)學(xué)生的英語(yǔ)成績(jī),編寫(xiě)函數(shù)求出英語(yǔ)成績(jī)高于英語(yǔ)平均
成績(jī)的人數(shù)。
#include<stdio.h>
fun(inta[],intn)
(
inti,count=0;
floatsum=0.0,ave;
for(i=l;i<=n;i++)
sum+=a[i];
ave=sum/n;
for(i=l;i<=n;i++)
if(a[i]>ave)
count++;
printf("%d",count);
)
voidmain()
(
intn,i,a[100];
scanf("%d",&n);
for(i=l;i<=n;i++)
scanf("%d",&a[i]);
fun(a,n);
)
3.編寫(xiě)函數(shù),求出一個(gè)給定整數(shù)的所有因子。如:72=2*2*2*2*3*3。
#include<stdio.h>
#include<math.h>
voidfun(intn)
(
inti=0;
while(n!=i)
(
for(i=2;i<n;i++)
(
if(n%i==0)
(
printf("%d*",i);
n=n/i;
break;
)
)
)
printf("%d\n",n);
voidmain()
intn;
printf("Inputn:");
scanf("%d",&n);
printf("%d=",n);
fun(n);
)
4.已知方程ax2+bx+c=0,編寫(xiě)函數(shù)分別求解并輸出當(dāng)b2-4ac>0和
b2-4ac=0的根。
#include<stdio.h>
#include<math.h>
voidfun1(floata,floatb,floatc,floatdisc)
{floatxl,x2,p,q;
p=-b/(2*a);
q=sqrt(disc)/(2*a);
xl=p+q;
x2=p-q;
printf("xl=%5.2f,x2=%5.2f\n",xl,x2);
)
voidfun2(floata,floatb,floatc,floatdisc)
floatxl,x2,p,q;
p=-b/(2*a);
printf("xl=x2=%5.2f\n",p);
)
voidmain()
(
floata,b,c,disc;
scanf("%f%f%f",&a,&b,&c);
disc=b*b-4*a*c;
if(disc>0)
funl(a,b,c,disc);
if(disc==0)
fun2(a,b,c,disc);
)
5.在主函數(shù)中輸入一串字符,編寫(xiě)函數(shù)將該字符串中的元音字母復(fù)
制到另一字符串中去,并分別輸出兩個(gè)字符串。
#include<stdio.h>
voidmain()
(
voidcpy(chars[],charc[]);
chars[80],c[80];
printf("\ninputstring:");
gets(s);
puts(s);
cpy(s,c);
printf("%s\n",c);
)
voidcpy(chars[],charc[])
(
inti,j;
i=0;
j=0;
while(s[i]!='\0')
(
if(s[i]==,a,lls[i]=='A,lls[i]==,e,lls[i]=='E'lls[i]=='i,lls[i]==Tlls[i]=='o'
||s[i]=='O,lls[i]==,u'lls[i]=='U')
(
cU]=s[i];
j++;
)
i++;}
c[j]='\O';
6.用定義的函數(shù)將一個(gè)實(shí)數(shù)精確到小數(shù)點(diǎn)后第1位,可使用公式
(x*10+0.5)/10完成。要求主函數(shù)接收返回的函數(shù)值,并將該值輸出。
#include<stdio.h>
floatfun(floatx)
(
floatb;
b=(x*10+0.5)/10;
returnb;
)
voidmain()
(
floata,b;
scanf("%f",&a);
printf("inputnumber:%f\n",a);
b=fun(a);
printf("%.lf\n",b);
)
7.按照下面的要求,完成程序的編寫(xiě)。
(1)在主函數(shù)中輸入10個(gè)無(wú)序的整數(shù)。
(2)定義函數(shù),在函數(shù)中用起泡方法對(duì)數(shù)據(jù)按由小到大的順序排序。
(3)定義函數(shù),在函數(shù)中輸入一個(gè)整數(shù),用折半查找法查找該數(shù)是
否存在于已排序的數(shù)組中,若存在,在主函數(shù)中輸出其所處的位置。
#include<stdio.h>
intfun2(inta[])
(
intl,w,t,p;
scanf("%d",&t);
1=0;
w=9;
while(l<=w)
(
p=(l+w)/2;
if(a[p]==t)
(
returnp;
break;
)
if(t>a[p])l=p+l;
elsew=p-l;
)
)
intfun1(inta[])
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+l])
{t=a[i];a[i]=a[i+l];a[i+l]=t;}
printf("thesortednumbers:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
m=fun2(a);
returnm;
)
voidmain()
(
inta[10],i,n;
printf("input10numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
n=funl(a);
printf("Itiselement%dofthearray.\n",n);
)
8.在主函數(shù)中輸入一串字符,編寫(xiě)一個(gè)函數(shù),要求將該字符串中最
長(zhǎng)的單詞輸出。
#include<stdio.h>
#include<string.h>
voidfunction(charstr[]);
voidmain()
(
charstr[100];
printf("Inputstring:");
gets(str);
str[strlen(str)]='#';
function(str);
)
voidfunction(charstr[])
(
inti=O,j=O,k=O;
charstrl[30][30],str2[100];
intstate=0;
for(i=0;str[i]!='\0';i++)
(
if((str[i]>='a'&&str[i]<='z')II(str[i]>='A'&&str[i]<='Z'))
(
strl|j][k]=str[i];
k++;
strl[j][k]='\0';
state=1;
else
(
if(state==1)
j++;
state=O;
k=0;
)
)
strcpy(str2,strl[0]);
for(i=0;i<j;i++)
if(strlen(strl[i])>strlen(str2))
strcpy(str2,strl[i]);
printf("Itis:%s\n",str2);
)
9.定義函數(shù),完成將兩個(gè)字符串連接起來(lái)的功能。
#include<stdio.h>
voidmain()
(
voidcon(charstingl[],charsting2[],charsting3[]);
charsl[20],s2[20],s3[40];
printf("Inputsting1:");
scanf("%s",sl);
printf("Inputsting2:");
scanf("%s",s2);
con(sl,s2,s3);
printf("%s\n",s3);
)
voidcon(charsting1[],charsting2[],charsting3[])
(
inti,j;
for(i=0;stingl[i]!='\0';i++)
sting3[i]=stingl[i];
for(j=0;sting2[j]!='\0';j++)
sting3[i+j]=sting2[j];
sting3[i+j]=>\O';
)
10.設(shè)計(jì)一個(gè)遞歸調(diào)用函數(shù),計(jì)算n個(gè)自然數(shù)之和。
#include"stdio.h"
intadd(int);
intn;
main()
intnum=l,sn;
scanf("%d",&n);
sn=add(num);
printf("%d\n",sn);
getch();
)
intadd(intnum)
(
staticintsn;
sn+=num;
if(num==n)
returnsn;
add(++num);
)
第6章指針
一、選擇題
1-56-1011-1516-2021-24
CDDCACDDACBACACACCCDBDCC
二、填充題
1.地址地址
2.存儲(chǔ)地址
3.q是指針型變量
4.下標(biāo)法指針?lè)?/p>
5.*(p++)是選取*p的值,然后使p加1;*(++p)是先使p加1,再取
*p的值
6.p=n;
7.指針數(shù)組p行指針變量p
8.46
9.*(p+2)*(a+2)p[2]
10.語(yǔ)句*p=16;是錯(cuò)誤的
三、程序分析題
1、10,12,70
10,12,70
2、13579n
1357911
3、求10個(gè)數(shù)中的最大數(shù)和最小數(shù)
4.IlikeCprogram.
5、131014182213151719
6、GOOE
7、345
四、編寫(xiě)程序題
1.編寫(xiě)程序,將一個(gè)字符串連接到另一字符串之后。要求使用指針
變量完成。
#include<stdio.h>
#include<string.h>
voidmain()
(
charsl[80],s2[20];
char*s3=s2;
inti=0;
puts("enterthestringofsi:");
scanf("%s",sl);
puts("enterthestringofs2:");
scanf("%s",s2);
while(sl[i]!='\O')
i++;
while(*s3!=!\0')
{
sl[i]=*s3;
s3++;
i++;
)
sl[i]='\0';
printf("\ntheafterstringis%s\n",sl);
)
2.編寫(xiě)一個(gè)指針型函數(shù)sum,該函數(shù)的功能是求解兩個(gè)數(shù)之和,并
把所求和的地址返回主函數(shù)。
#include<stdio.h>
int*fun()
(
int*p,n,m,s;
scanf("%d%d",&n,&m);
s=n+m;
p=&s;
returnp;
)
main()
(
int*w;
w=fun();
printf("%d\n",*w);
)
3.編寫(xiě)程序,統(tǒng)計(jì)出一個(gè)字符串中的大小寫(xiě)字母?jìng)€(gè)數(shù)。要求使用指
向字符串的指針變量完成。
#include<stdio.h>
main()
chara[80],*s=a;
intsl=0,s2=0;
scanf("%s",a);
while(*s!='\O')
(
if(*s>='A'&&*s<=Z)
sl++;
if(*s>='a'&&*s<='z')
s2++;
s++;
)
printf("A-Z:%d,a-z:%d\n",sl,s2);
)
4.用指向數(shù)組的指針變量實(shí)現(xiàn)一維數(shù)組由小到大的冒泡排序。要求
編寫(xiě)一個(gè)函數(shù),完成數(shù)據(jù)的排序。
#include<stdio.h>
voidfun1(int*p)
(
inti,j,t;
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(p[i]>p[i+l])
{t=p[i];p[i]=p[i+l];p[i+l]=t;}
printf("thesortednumbers:\n");
for(i=0;i<10;i++)
printf("%d\t",p[i]);
)
(
inta[10],i,n;
printf("input10numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
fun1(a);
)
5.編寫(xiě)一個(gè)函數(shù),要求在一給定的字符串中查找子字符串的位置,
并將該位置在主函數(shù)中輸出。
#include<stdio.h>
#include<string.h>
intfun(charsr[],char*p2)
(
inti,a;
for(i=0;sr[i]!='\0';i++)
if(sr[i]==*p2)
a=i;
while(sr[i]==*p2&&*p2!='\0')
i++;
p2++;
)
if(*p2=='\0')
returna;
)
else
i++;
)
voidmain()
(
charstrl[20],str2[20];
intpl;
printf("pleaseinputtwostrings\n");
scanf("%s%s",strl,str2);
pl=fun(strl,str2);
printf("Itisstrl[%d]",pl);
)
6.編寫(xiě)程序,實(shí)現(xiàn)在字符串si中的指定位置插入字符串s2。
#include<stdio.h>
#defineN100
intlen(charch[])
(
inti=0;
while(ch[i]!='\0')
i++;
returni;
)
intchlns(charch[],charchl[],intk)
(
inti;
intlen_ch=len(ch);
intlen_chl=len(chl);
if(k>len_ch)
(
printf("exit!");
return-1;
)
else
(
for(i=len_ch+len_ch1-1;i>=k+len_chl;i—)
ch[i]=ch[i-len_chl];
for(i=0;i<len_ch1;i++)
ch[k+i]=chl[i];
ch[len_ch+len_chl]='\0';
return1;
)
)
voidmain()
(
chara[N],b[N];
intk,ins;
scanf("%s",a);
scanf("%s",b);
scanf("%d",&k);
ins=chlns(a,b,k);
if(ins==l)
printf("%s",a);
)
7.編寫(xiě)程序,要求用指針數(shù)組完成:輸入月份號(hào),輸出該月份的英
文名。例如:輸入“5”,則輸出“May”。
#include<stdio.h>
voidmain()
char*month[]={"Illegalmonth","January","February","March",
"April","May","June","July","Augest","September","October","Novem
ber","December");
inti;
printf("Inputnumber:");
scanf("%d",&i);
if(i>=l&&i<=12)
printf("%dmouthname:%s\n",i,month[i]);
else
printf("%dM%s\n",month[0]);
)
8.運(yùn)用指針變量完成:輸入10個(gè)數(shù),將其中最小的數(shù)與第1個(gè)數(shù)交
換,將最大數(shù)和最后一個(gè)數(shù)交換。
#include<stdio.h>
voidmain()
(
inta[10],i,*p,*max,*min,t;
max=min=a;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(p=a;p<a+10;p++)
if(*max<*p)max=p;
elseif(*min>*p)min=p;
t=*min;*min=a[O];a[O]=t;
t=*max;*max=a[9];a[9]=t;
for(p=a;p<a+9;p++)
printf("%d,",*p);
printf("%d",a[9]);
)
9.使用指針有關(guān)知識(shí)完成:輸入一行字符,找出其中大寫(xiě)字母、小
寫(xiě)字母、空格、數(shù)字以及其他字符各有多少。
#include"stdio.h"
voidmain()
(
intcle=0,sle=0,di=0,wsp=0,ot=0,i;
char*p,s[20];
printf("enteraline:");
for(i=0;i<20;i++)
s[i]=0;
i=0;
while((s[i]=getchar())!='\n')
i++;
p=&s[0];
while(*p!='\n')
if((*p>='A')&&(*p<=Z))
++cle;
elseif((*p>='a')&&(*p<='z,))
++sle;
elseif(*p=='')
++wsp;
elseif((*p<='9')&&(*p>=,0'))
++di;
else
++ot;
P++;
)
printf("cle=%d,sle=%d,wsp=%d,di=%d,ot=%d",cle,sle,wsp,di,ot);
)
第7章結(jié)構(gòu)體與共用體
一、選擇題
l.C2.A3.D4.C5.D6.C7.D8.B9.B10.C11.D
12.C
二、填空題
1、所有成員所占內(nèi)存之和
2、work.num,p->num,(*p).num
3、20.80.6,liu
20.80.6,liu
三、程序分析題
1、51
2、20041,703
3、Penghua20045537
4、13431
四、編寫(xiě)程序題
1.用結(jié)構(gòu)體編制一個(gè)程序,有5個(gè)學(xué)生,每個(gè)學(xué)生包括學(xué)號(hào)、成績(jī)、
姓名等信息,找出成績(jī)最高者的姓名和成績(jī)。
#include<stdio.h>
main()
{structstu
{intnum;
charname[20];
floatscore;
}student[5]={{1001,"liuyi",90.5},{10012,"wang",80},{10013,"li",50
},{10014,"zhou",96.5},{10015,"zheng",75}};
inti,aa;
floatmax;
max=student[0].score;
for(i=l;i<5;i++)
if(max<student[i].score)
{max=student[i].score;
aa=i;
)
printf("%d,%s,%.lf',student[aa].num,student[aa].name,student[aa].
score);
)
2.定義一個(gè)結(jié)構(gòu)體變量(包括年、月、日),計(jì)算某日在本年中是第
兒天。
#include<stdio.h>
structdate
(
intyear;
intmonth;
intday;
);
intleap_year(inta);
intcal_day(structdatea);
intleap_year(inta)
(
if(a%400==0ll(a%4==0&&a%100!=0))
return1;
else
return0;
)
intcal_day(structdatea)
(
intsum=0,b[]={31,28,31,30,31,30,31,31,30,31,30,31);
inti;
for(i=0;i<a.month-1;i++)
sum+=b[i];
if(a.month>2)
sum=sum+a.day+leap_year(a.year);
else
sum=sum+a.day;
returnsum;
)
voidmain()
(
structdatea;
intn;
printf("\nPleaseinputthedate(yearmonthdat)\n");
scanf("%d%d%d",&a.year,&a.month,&a.day);
n=cal_day(a);
printf("%d\n",n);
3.有10個(gè)學(xué)生,每個(gè)學(xué)生的數(shù)據(jù)包括學(xué)號(hào)、姓名、2門(mén)課的成績(jī)。
從鍵盤(pán)輸入10個(gè)學(xué)生的信息,要求打印每位學(xué)生2門(mén)課的平均成績(jī),
以及最高分的學(xué)生的信息。
#include<stdio.h>
voidmain()
(
structstu
{intnum;
charname[20];
intscore[2];
}student[10];
intave[10];
inti,j,max,aa;
for(i=0;i<2;i++)
(
scanf("%d,%d,%d",&student[i].num,&student[i].score[0],&student[i
].score[l]);
gets(student[i].name);
)
for(i=0;i<2;i++)
ave[i]=(student[i].score[0]+student[i].score[l])/2;
for(i=0;i<2;i++)
printf("%d,%s,%d,%d,%d\n",student[i].num,student[i].name,student
[i].score[0],student[i].score[l],ave[i]);
max=ave[O];
for(i=l;i<2;i++)
if(max<ave[i])
(
max=ave[i];
aa=i;
)
printf("themaxis%d,%s,%d,%d,%d",student[aa].num,
student[aa].name,student[aa],score[0],student[aa].score[l],ave[aa]);
)
4.有兩個(gè)鏈表al,a2,每個(gè)鏈表中的結(jié)點(diǎn)的數(shù)據(jù)域包括學(xué)號(hào)、成績(jī)。
將鏈表a2連接在鏈表al之后。
#include<stdio.h>
#include"malloc.h"
#defineN3
#defineNULL0
#defineLENsizeof(structstudent)
structstudent
intno;
intscore;
structstudent*next;
);
structstudent*creat(void)
(
structstudent*head,*pl,*p2,*p;
intn;
pl=p2=(structstudent*)malloc(LEN);
scanf("%d,%d",&pl->no,&pl->score);
head=p1;
n=l;
while(n<N)
(
pl=(structstudent*)malloc(LEN);
scanf("%d,%d",&pl->no,&pl->score);
p2->next=p1;
p2=pl;
n++;
p2->next=NULL;
return(head);
)
voidprint(structstudent*head)
(
structstudent*p;
p=head;
while(p!=NULL)
(
printf("%d,%d\n",p->no,p->score);
p=p->next;
)
)
structstudent*connect(structstudent*head_a,structstudent
*head_b)
(
structstudent*p,*q;
p=head_a;
while(p!=NULL)
{q=p;
p=p->next;
q->next=head_b;
return(head_a);
)
voidmain()
(
structstudent*head_a,*head_b;
printf("inputa:");
head_a=creat();
printf("inputb:");
head_b=creat();
print(head_a);
print(head_b);
connect(head_a,head_b);
printf("Finish:");
print(head_a);
)
5.建立一個(gè)鏈表,每個(gè)結(jié)點(diǎn)的數(shù)據(jù)域包括:學(xué)號(hào)、姓名、年
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年一線(xiàn)班組員工安全培訓(xùn)題庫(kù)
- 2025年攤鋪機(jī)租賃與施工材料保障合同范本3篇
- 除薄冰機(jī)課程設(shè)計(jì)
- 年度多媒體集成競(jìng)爭(zhēng)策略分析報(bào)告
- 二零二五年度模板木枋行業(yè)信息化平臺(tái)建設(shè)合同4篇
- 水溝勾縫施工方案
- 文明施工方案范本
- 二零二五年度環(huán)保型門(mén)衛(wèi)室建設(shè)合同4篇
- 2025年度個(gè)人股權(quán)無(wú)償轉(zhuǎn)讓及公司資產(chǎn)評(píng)估協(xié)議2篇
- 隔聲罩課程設(shè)計(jì)模板
- 寒假作業(yè)一年級(jí)上冊(cè)《數(shù)學(xué)每日一練》30次打卡
- 2024-2025學(xué)年九年級(jí)化學(xué)上冊(cè) 第二單元 單元測(cè)試卷(人教版)
- 2024年公共衛(wèi)生基本知識(shí)考試題庫(kù)(附含答案)
- 2024多級(jí)AO工藝污水處理技術(shù)規(guī)程
- 2024年江蘇省鹽城市中考數(shù)學(xué)試卷真題(含答案)
- DZ∕T 0287-2015 礦山地質(zhì)環(huán)境監(jiān)測(cè)技術(shù)規(guī)程(正式版)
- 2024年合肥市廬陽(yáng)區(qū)中考二模英語(yǔ)試題含答案
- 質(zhì)檢中心制度匯編討論版樣本
- 藥娘激素方案
- 提高靜脈留置使用率品管圈課件
- GB/T 10739-2023紙、紙板和紙漿試樣處理和試驗(yàn)的標(biāo)準(zhǔn)大氣條件
評(píng)論
0/150
提交評(píng)論