C程序设计2022学习通超星期末考试答案章节答案2024年_第1页
C程序设计2022学习通超星期末考试答案章节答案2024年_第2页
C程序设计2022学习通超星期末考试答案章节答案2024年_第3页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C程序设计2022学习通超星期末考试章节答案2024年编写程序,按如下格式输出整数,小数,字符串。(□表示空格)整数:12输出格式:12□□□,□□□12小数:3.1415926输出格式:□□3.142,3.142□□字符串:CHINA输出格式:□□□CH,CHI□□输入格式:输出格式:“%md”

“%m.nf”

“%m.ns”输入样例:输出样例:12□□□,□□□12□□3.142,3.142□□□□□CH,CHI□□

答案:#includevoidmain(){

inta=12;

floatb=3.1415926;

printf("%-5d,%5d\n",a,a);

printf("%7.3f,%-7.3f\n",b,b);

printf("%5.2s,%-5.3s","CHINA","CHINA");}通过库函数sizeof()获得int、short、long、float和double数据类型所占内存的字节数。输入格式:输出格式:“int占%d个字节\n”“short占%d个字节\n”“long占%d个字节\n”“float占%d个字节\n”“double占%d个字节\n”输入样例:输出样例:int占4个字节short占2个字节long占4个字节float占4个字节double占8个字节

答案:#includevoidmain(){

printf(“int占%d个字节\n”,sizeof(int));

printf(“short占%d个字节\n”,sizeof(short));

printf(“long占%d个字节\n”,sizeof(long));

printf(“float占%d个字节\n”,sizeof(float));

printf(“double占%d个字节\n”,sizeof(double));}编写程序,利用switch语句实现从键盘输入一个正整数,输出对应为一周中的星期几。输入格式:"%d"输出格式:"一周中的第%d天为星期一\n""一周中的第%d天为星期二\n""一周中的第%d天为星期三\n""一周中的第%d天为星期四\n""一周中的第%d天为星期五\n""一周中的第%d天为星期六\n""一周中的第%d天为星期日\n"输入样例:3输出样例:一周中的第3天为星期三

答案:#includevoidmain(){

intday=0;

scanf("%d",&day);

switch(day)

{

case1:

printf("一周中的第%d天为星期一\n",day);

break;

case2:

printf("一周中的第%d天为星期二\n",day);

break;

case3:

printf("一周中的第%d天为星期三\n",day);

break;

case4:

printf("一周中的第%d天为星期四\n",day);

break;

case5:

printf("一周中的第%d天为星期五\n",day);

break;

case6:

printf("一周中的第%d天为星期六\n",day);

break;

case7:

printf("一周中的第%d天为星期日\n",day);

break;

}}编写程序,利用if-else语句实现从键盘输入一个正整数,判断其奇偶性,并输出判断结果。输入格式:"%d"输出格式:"%d是偶数\n""%d是奇数\n"输入样例:请输入一个正整数:5输出样例:5是奇数

答案:#includevoidmain(){

intn;

printf("请输入一个正整数:");

scanf("%d",&n);

if(n%2==0)

printf("%d是偶数\n",n);

else

printf("%d是奇数\n",n);}编写程序,利用if语句实现从键盘输入三个实数,判断其中的最大值,将结果输出。输入格式:"%f%f%f"输出格式:"max=%f\n"输入样例:1.22.34输出样例:max=4.000000

答案:#includeintmain(){

floata,b,c,max;

scanf("%f%f%f",&a,&b,&c);

max=a;

if(max设计程序,利用while/do…while/for语句(任选一种)求Π值。使用如下公式Π/4=1-1/3+1/5-1/7+…+1/(4n-3)-1/(4n-1)+…

(n=10000).输入格式:输出格式:"PI=%f\n"输入样例:输出样例:PI=3.141384

答案:***********while语句***********#includevoidmain(){

intn=1;

floatm,sum=0;

while(n<=10000)

{

m=1.0/(4*n-3)-1.0/(4*n-1);

sum=sum+m;

n++;

}

printf("PI=%f\n",4*sum);}***********do…while语句***********#includevoidmain(){

intn=1;

floatm,sum=0;

do

{

m=1.0/(4*n-3)-1.0/(4*n-1);

sum=sum+m;

n++;

}while(n<=10000);

printf("PI=%f\n",4*sum);}***********for语句***********#includevoidmain(){

intn=1;

floatm,sum=0;

for(n=1;n<=10000;n++)

{

m=1.0/(4*n-3)-1.0/(4*n-1);

sum=sum+m;

}

printf("PI=%f\n",4*sum);}有一张纸厚0.5mm,假如它足够大,将它不断对折,问对折多少次后厚度可以达到珠穆朗玛峰的高度(8848m)。设计程序,求解并输出对折次数n。(提示:利用break或continue语句)输入格式:输出格式:"n=%d.\n"输入样例:输出样例:n=25.

答案:***********break语句***********#includeintmain(){

intn=0;

floath=0.5;

while(1)

{

n++;

h=h*2;

if(h>=8848000)

break;

}

printf("n=%d.\n",n);}***********comtinue语句***********#includevoidmain(){

intn=0;

floath=0.5;

while(1)

{

n++;

h=h*2;

if(h<8848000)

continue;

printf("n=%d.\n",n);

break;

}}为使电文保密,往往按照一定规律将其转换成密码,设计程序,将输入的字母按照以下规律转换。(考虑多个字母的情况)ABCD……WXYZABCD……WXYZABCD……abcd……wxyzabcd……wxyzabcd……例如输入abwxyz输出将其转化为efabcd,即每个字母变成其后的第四个字母。输入格式:

getchar输出格式:"%c"输入样例:

China!输出样例:Glmre!

答案:#includevoidmain(){

charc;

while((c=getchar())!='\n')

{

if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))

{

c=c+4;

if(c>'Z'&&c<='Z'+4||c>'z')

c=c-26;

}

printf("%c",c);

}

printf("\n");}设计程序,先将10个整数从大到小排序,然后把一个整数按大小插入到已排序的数组中。a[11]={127,3,6,28,54,68,87,105,162,18}

将29插入数组中。输入格式:

“%d”输出格式:"%4d"输入样例:29输出样例:

162127105

87

68

54

28

18

6

3

inputnumber:

29

162127105

87

68

54

29

28

18

6

3

答案:#includeintmain(){

inti,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};

for(i=0;i<10;i++)

{

p=i;

q=a[i];

for(j=i+1;j<10;j++)

if(qa[i])

{

for(s=9;s>=i;s--)

a[s+1]=a[s];

break;

}

a[i]=n;

for(i=0;i<=10;i++)

printf("%4d",a[i]);

printf("\n");}编写程序输出杨辉三角形。输入格式:输出格式:"%5d"输入样例:输出样例:

1

1

1

1

2

1

1

3

3

1

1

4

6

4

1

1

5

10

10

5

1

1

6

15

20

15

6

1

1

7

21

35

35

21

7

1

1

8

28

56

70

56

28

8

1

1

9

36

84

126

126

84

36

9

1

答案:#includeinta[10][10];intmain(){

inti=0,j=0;

for(i=0;i<10;i++)

{

for(j=0;j输入五个国家的名字并按字母顺序排出。(国家的名字不超过20个字符)输入格式:输出格式:输入样例:ChinaJapanCanadaAmericaEngland输出样例:AmericaCanadaChinaEnglandJapan

答案:#include

intmain(){

charst[20],cs[5][20];

inti,j,p;

printf("inputcountry'sname:\n");

for(i=0;i<5;i++)

gets(cs[i]);

printf("\n");

for(i=0;i<5;i++)

{

p=i;

strcpy(st,cs[i]);

for(j=i+1;j<5;j++)

if(strcmp(cs[j],st)<0)

{

p=j;

strcpy(st,cs[j]);

}

if(p!=i)

{

strcpy(st,cs[i]);

strcpy(cs[i],cs[p]);

strcpy(cs[p],st);

}

puts(cs[i]);

}

printf("\n");}输入一个字符串,判断是否为回文串。注:回文是指数或者字符串具有首尾回环性质,从后向前按位颠倒后与原文一样。首尾回环的数字就是回文数,如:121,12321;首尾回环的字符串就是回文串,如:madam。输入格式:输出格式:

printf("Itisapalindrome\n");

printf("Itisnotapalindrome\n");输入样例:ILoveevoLI输出样例:

Itisapalindrome

答案:#include#include

intmain(){

intcount,i;

charstr[80];

printf("Enterastring:");

i=0;

while((str[i]=getchar())!='\n')

i++;

str[i]='\0';

for(i=0,count=strlen(str)-1;i<count;i++,count--)

if(str[i]!=str[count])

break;

if(i>=count)

printf("Itisapalindrome\n");

else

printf("Itisnotapalindrome\n");

return0;}有两个数组a和b,各有6个元素,将它们对应逐个比较(即a[i]与b[i]比较)。如果a[i]大于b[i]的次数多于a[i]小于b[i]的次数,那么认为数组a大于数组b,如果a[i]小于b[i]的次数多于a[i]大于b[i]的次数,认为数组a小于数组b,否则数组a与数组b相等。编写程序,统计出a[i]大于b[i]、a[i]小于b[i]、a[i]等于b[i]的次数,并判断哪个数组大。(数组中的元素作为函数实参,例如:large(a[i],b[i]))输入格式:

“%d”输出格式:"%d"输入样例:147258123951输出样例:a[i]>b[i]3timesa[i]=b[i]2timesa[i]答案:#includevoidmain(){

intlarge(intx,inty);

inta[6],b[6],i,n=0,m=0,k=0;

printf("enterarraya:\n");

for(i=0;i<6;i++)

scanf("%d",&a[i]);

printf("enterarrayb:\n");

for(i=0;i<6;i++)

scanf("%d",&b[i]);

for(i=0;i<6;i++)

{

if(large(a[i],b[i])==1)

n=n+1;

else

if(large(a[i],b[i])==0)

m=m+1;

else

k=k+1;

}

printf("a[i]>b[i]%dtimes\na[i]=b[i]%dtimes\na[i]k)

printf("arrayaislargerthanarrayb\n");

else

if(ny)

flag=1;

else

if(x有一个一维数组,内放10个学生成绩,写一个函数,求出平均分,最高分和最低分。要求:由于要调用函数得到三个结果值,除了可以从函数得到一个函数的返回值,可以用全局变量。本题要求使用全局变量的方法。输入格式:scanf(“%f”,&score[i]);输出格式:printf(“max=%6.2f\nmin=%6.2f\naverage=%6.2f\n”,Max,Min,ave);输入样例:

9945789710067.589926643输出样例:Max=100.00Min=43.00Average=77.65

答案:#includefloatMax=0,Min=0;voidmain(){

floataverage(floatarray[],intn);

floatave,score[10];

inti;

for(i=0;i<10;i++)

scanf("%f",&score[i]);

ave=average(score,10);

printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",Max,Min,ave);}

floataverage(floatarray[],intn){

inti;

floataver,sum=array[0];

Max=Min=array[0];

for(i=1;i<n;i++)

{

if(array[i]>Max)

Max=array[i];

elseif(array[i]<Min)

Min=array[i];

sum=sum+array[i];

}

aver=sum/n;

return(aver);}输入一个正整数n,输出1!~n!的值。要求:定义并调用含有静态变量的函数fact(n)计算n!。输入格式:

“%d”输出格式:

“%3d!=%4ld\n”输入样例:

Entern:6输出样例:

1!=

1

2!=

2

3!=

6

4!=

24

5!=120

6!=720

答案:#includelongfact(intn);intmain(){

intn,i;

printf("Entern:");

scanf("%d",&n);

for(i=1;i<=n;i++)

printf("%3d!=%4ld\n",i,fact(i));

return0;}longfact(intn){

staticlongf=1;

f=f*n;

returnf;}计算s=(2^2)!+(3^2)!要求:该题要求使用函数的嵌套调用。编写两个函数:函数fun1用来计算平方值,fun2用来计算阶乘值。主函数先调用fun1计算出平方值,再在fun1中以平方值为实参,调用fun2计算其阶乘值,然后返回到fun1,再返回主函数,在循环程序中计算累加和。输入格式:输出格式:printf(“\ns=%ld\n”,s)输入样例:输出样例:

s=362904

答案:#include

longfun1(intp){

intk;longr;

longfun2(int);

k=p*p;

r=fun2(k);

returnr;}

longfun2(intq){

longc=1;inti;

for(i=1;i<=q;i++)

c=c*i;

returnc;}

voidmain(){

inti;longs=0;

for(i=2;i<=3;i++)

s=s+fun1(i);

printf("\ns=%ld\n",s);}编写一个子函数,在主函数中定义的字符串中找到第一个大写字母,并向主函数返回这个字母的地址,然后从这个被找到的大写字母开始输出这个字符串。要求:用返回指针的函数来解决问题。输入格式:

printf("inputastring:");

gets(str);输出格式:

puts("NoCapitalLetter");

puts(pos);输入样例:inputastring:findCapitalNumber输出样例:CapitalNumber

答案:#includechar*findfirstletter(char*s){

for(;*s!='\0';s++)

if(*s>='A'&&*s<='Z')

break;

returns;}intmain(){

charstr[81];

char*pos;

printf("inputastring:");

gets(str);

pos=findfirstletter(str);

if(*pos=='\0')

puts("NoCapitalLetter");

else

puts(pos);

return0;}有一个班,三个学生,各学四门课,计算总平均分数以及第n个学生的成绩。要求:用3*4的二维数组存取三个学生四门课的成绩,输入格式如下所示(成绩情况如输入样例所示),并采用指针的办法解决问题。输入格式:

floatscore[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};输出格式:

printf("average=%5.2f\n",aver);

printf("%5.2f",*(*(p+n)+i));输入样例:

floatscore[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};输出样例:average=82.25thescoreofNo.2are:90.0099.00100.0098.00

答案:#includevoidmain(){

voidaverage(float*p,intn);

voidsearch(float(*p)[4],intn);

floatscore[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};

average(*score,12);

search(score,2);}

voidaverage(float*p,intn){

float*p_end;

floatsum=0,aver;

p_end=p+n-1;

for(;p<=p_end;p++)

sum=sum+(*p);

aver=sum/n;

printf("average=%5.2f\n",aver);}

voidsearch(float(*p)[4],intn){

inti;

printf("thescoreofNo.%dare:",n);

for(i=0;i<4;i++)

{

printf("%5.2f",*(*(p+n)+i));

printf("\n");

}}利用指针变量做函数参数求字符串中空格与逗号的个数。输入格式:直接定义或者从键盘输入都可char*str="thisis,atest";输出格式:

printf("iSpaceNumber=%d,iCommaNumber=%d",iSpaceNumber,iCommaNumber);输入样例:输出样例:iSpaceNumber=4,iCommaNumber=1

答案:#includevoidGetNumber(char*str,int*pSpaceNumber,int*pCommaNumber){

inti=0;

*pSpaceNumber=0;

*pCommaNumber=0;

while(str[i])

{

if(str[i]=='')

(*pSpaceNumber)++;

elseif(str[i]==',')

(*pCommaNumber)++;

i++;

}}intmain(intargc,char*argv[]){

char*str="thisis,atest";

intiSpaceNumber,iCommaNumber;

GetNumber(str,&iSpaceNumber,&iCommaNumber);

printf("iSpaceNumber=%d,iCommaNumber=%d",iSpaceNumber,iCommaNumber);

return0;}设有一个教师与学生通用的表格,教师数据有姓名、年龄、身份、教研室四项。学生数据有姓名、年龄、身份、班级四项,编程输入人员数据,再以表格输出。要求使用结构体和共用体结构编写。输入格式:

t表示教师,s表示学生输出格式:输入样例:inputname,age,jobanddepartmentWANG30tofficeZHAO20s33输出样例:name

age

jobClass/officeWANG

30

t

officeZHAO

20

s

33

答案:#includevoidmain(){

struct

{

charname[10];

intage;

charjob;

union

{

intClass;

charoffice[10];

}depa;

}body[2];

inti;

printf("inputname,age,jobanddepartment\n");

for(i=0;i<2;i++)

{

scanf("%s%d%c",body[i].name,&body[i].age,&body[i].job);

if(body[i].job=='s')

scanf("%d",&body[i].depa.Class);

elsescanf("%s",body[i].depa.office);

}

printf("name\tagejobClass/office\n");

for(i=0;i<2;i++)

{

if(body[i].job=='s')

printf("%s\t%3d%3c%5d\n",body[i].name,body[i].age,body[i].job,body[i].depa.Class);

elseprintf("%s\t%3d%3c%10s\n",body[i].name,body[i].age,body[i].job,body[i].depa.office);

}}计算一组学生的平均成绩和不及格人数。要求使用结构体指针变量做函数参数编程。输入格式:输出格式:printf("average=%f\ncount=%d\n",avers,c);输入样例:{{101,"Liping",'M',45},{102,"Zhangping",'M',62.5},{103,"Hefang",'F',92.5},{104,"Chenling",'F',87}}输出样例:average=71.750000count=1

答案:#includestructstudent{

intnum;

charname[20];

charsex;

floatscore;}stu[]={{101,"Liping",'M',45},{102,"Zhangping",'M',62.5},{103,"Hefang",'F',92.5},{104,"Chenling",'F',87}};voidmain(){

structstudent*ps;

voidaver(structstudent*ps);

ps=stu;

aver(ps);}voidaver(structstudent*ps){

intc=0,i;

floatavers,total=0;

for(i=0;i<4;i++,ps++)

{

total+=ps->score;

if(ps->score<60)

c+=1;

}

avers=total/4;

printf("average=%f\ncount=%d\n",avers,c);}从练习一创建的文件中读取学生信息,统计文件中的学生数,计算学生的平均成绩,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论