上海交通大学python语言程序设计实践教程答案_《C语言程序设计实践教程》实验题源程序...

#include main()

{

printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");

printf("欢迎光临C语言世界\n");

printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");

}0

#include main()

{

printf("表达式1的值:%f\n",99.7*0.26+4.25);

printf("表达式2的值:%d\n",1/2+1/3+1/4+1/5);

printf("表达式3的值:%f\n",3.5/(6.1+2.0*(2.9-1.4*2.7)));

}1

#include main()

{

printf("表达式结果:%d\n",23+(16*16-15)/(9+14));

}2

#include main()

{

printf("A\n");

printf("AAA\n");

printf("AAAAA\n");

printf("AAAAAAA\n");

printf("VVVVVVV\n");

printf("VVVVV\n");

printf("VVV\n");

printf("V\n");

}3

#include main()

{

printf("结果为:%d\n",16*16*16%93);

}4

#include main()

{

printf("和是%f",16.8+27.5);

printf("差是%f \n",16.8-27.5);

printf("积是%f",16.8*27.5);

printf("商是%f \n",16.8/27.5);

}5

#include main()

{

printf("星期%d\n",(2+160)%7);

}6

#include main()

{

printf("一月:%f万\n",26.43);

printf("二月:%f万\n",26.43*1.12);

printf("三月:%f万\n",26.43*1.12-1.62);

printf("总共:%f万\n",26.43+26.43*1.12+26.43*1.12-1.62);

}7

#include main()

{

printf("%d点%d分\n",8+3+(50+25)/60, (50+25)%60);

}8

#include main( )

{int a[5],place,i; /*在a中找23,得到其下标place*/printf("输入数组元素:");for(i=0;i<5;i++)

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

place=-1;for(i=0;i<=4;i++)if(a[i]==23){place=i;break;}

printf("23的位置是 %d\n",place);

}9

#include main( )

{int a[8],i,minf,temp;for(i=0;i<8;i++) scanf("%d",&a[i]);

minf=0;for(i=0;i<8;i++)

{if(a[minf]>a[i]) minf=i;}

temp=a[7]; a[7]=a[minf]; a[minf]=temp; /*交换*/

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

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

}10

#include main( )

{int x[10]={24,19,28,15,17,20,14,23,21,22},i,minf,maxf,temp;

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

{if(x[minf]>x[i]) minf=i;if(x[maxf]

}

temp=x[maxf]; x[maxf]=x[minf]; x[minf]=temp; /*交换*/

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

printf("%d",x[i]);

}11

#include main( )

{int x[10]={24,19,28,15,17,20,14,23,21,22},i;intp;

p=-1;for(i=9;i>=0;i--)

{if(x[i]<20)

{

p=i;break;

}

}

x[p]=x[p]+10;for(i=0;i<10;i++)

printf("%d",x[i]);

}12

#include main( )

{int x[10]={27,9,28,15,17,20,14,23,21,4},i;intp;intcount;

p=-1;for(i=0;i<10;i++)

{if(x[i]%2==0)

{

p=i;break;

}

}/*计算第一个偶数的位置*/count=0;for(i=p+1;i<10;i++) /*从p+1开始统计*/

if(x[i]%2!=0) count++;

printf("第一个偶数后面有%d个奇数\n",count);

}13

#include main( )

{int x[5]={8,16,13,19,10}, y[6]={24,19,28,15,17,20}, i,j,k;intn,t;

n=5;for(i=0; i<=n-2; i++) /*选择法排序*/{/*找i~n-1元素中的最小元素与x[i]互换*/k=i;for(j=i+1; j<=n-1; j++)if(x[j]

if(k!=i){t=x[k]; x[k]=x[i]; x[i]=t;} /*最小元素如果不是第一个元素则它们交换位置*/}

n=6;for(i=0; i<=n-2; i++) /*选择法排序*/{/*找i~n-1元素中的最小元素与y[i]互换*/k=i;for(j=i+1; j<=n-1; j++)if(y[j]

if(k!=i){t=y[k]; y[k]=y[i]; y[i]=t;} /*最小元素如果不是第一个元素则它们交换位置*/}

printf("x排序后:");for(i=0;i<5;i++)printf("%d",x[i]);

printf("\ny排序后:");for(i=0;i<6;i++)printf("%d",y[i]);

}14

#include main( )

{int x[10]={3,6,8,4,5,66,80,72,69,70}, i,j;intt;for(i=0,j=9; i

{

t=x[j]; x[j]=x[i]; x[i]=t;

}

printf("逆置后:");for(i=0;i<10;i++)printf("%d",x[i]);

}15

#include main( )

{int a[6],b[4], i,j;intp;for(i=0;i<6;i++)scanf("%d",&a[i]);for(i=0;i<4;i++)scanf("%d",&b[i]);

printf("输出:");for(i=0;i<6;i++) /*逐个判断a中的元素*/{/*在b中查找a[i]*/p=-1;for(j=0;j<4;j++)if(b[j]==a[i]){p=j; break;}if(p==-1)printf("%d",a[i]); /*在b中找不到,则输出a[i]*/}

printf("\n");

}16

#include main( )

{int a[11]={11,12,13,14,15,16,17,18,19,20},i;intp;for(i=9;i>=0;i--)a[i+1]=a[i];

a[0]=a[10];

printf("输出:");for(i=0;i<10;i++)printf("%d",a[i]);

printf("\n");

}17

#include main( )

{int a[3][4],i,j;intsum1, sum2, sum3;for(i=0;i<3;i++)for(j=0;j<4;j++)

scanf("%d",&a[i][j]);/*所有元素求和*/sum1=0;for(i=0;i<3;i++)for(j=0;j<4;j++)

sum1=sum1+a[i][j];/*第1行的元素之和*/sum2=0;for(i=0;i<4;i++)

sum2=sum2+a[0][i];/*第3列的元素之和。*/sum3=0;for(i=0;i<3;i++)

sum3=sum3+a[i][2];

printf("三个和分别是:%d, %d, %d\n",sum1, sum2, sum3);

}18

#include main( )

{int a[4][4],i,j;intcount;

printf("输入元素:\n");for(i=0;i<4;i++)for(j=0;j<4;j++)

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

count=0;for(i=0;i<4;i++)for(j=0;j<4;j++)if(a[i][j]%2==0)count++;

printf("偶数有%d个\n",count);

printf("小于5的数:");for(i=0;i<4;i++)for(j=0;j<4;j++)if(a[i][j]<5)printf("%d",a[i][j]);

printf("\n");

}19

#include main( )

{int a[4][4]={{14,26,18,17},{24,37,21,8},{19,31,22,16},{7,19,14,26}},i,j;intmax2,min3;/*第2行的最大值*/max2=a[1][0];for(i=1;i<4;i++)if(a[1][i]>max2)max2=a[1][i];/*第3列的最小值*/min3=a[0][2];for(i=1;i<4;i++)if(a[i][2]

printf("结果:%d,%d\n",max2,min3);

}20

#include main( )

{int a[4][4]={{14,26,18,17},{24,37,21,8},{19,31,22,16},{7,19,14,26}},i,j;inthang,lie;/*第三行的所有元素都减去5*/

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

a[2][i]=a[2][i]-5;/*最小元素的行下标与列下标*/hang=lie=0;for(i=0;i<4;i++)for( j=0;j<4; j++)if(a[i][j]

printf("最小元素的行下标与列下标:%d,%d\n",hang, lie);

}21

#include main( )

{int a[4][4]={{14,26,18,17},{24,37,21,8},{19,31,22,16},{7,19,14,26}},i,j;intsum;

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

sum=sum+a[i][i];

printf("主对角元素的和:%d\n",sum);

}22

#include main( )

{int a[4][4]={{14,26,18,17},{24,8,21,37},{19,31,22,16},{7,8,11,9}},i,j;inthang,lie,t;for(i=0;i<4;i++)

{

t=a[i][i];for( j=0;j<4; j++)

a[i][j]=a[i][j]+t;

}/*最大元素的行下标与列下标*/hang=lie=0;for(i=0;i<4;i++)for( j=0;j<4; j++)if(a[i][j]>a[hang][lie]){hang=i; lie=j;}

printf("最大元素的行下标与列下标:%d,%d\n",hang, lie);

}23

#include main( )

{int a[4][4]={{14,26,18,17},{24,8,21,37},{19,31,22,16},{7,8,11,9}}, b[4],i,j;for(i=0;i<4;i++)

{

b[i]=a[i][0];for( j=1;j<4; j++)if(a[i][j]>b[i]){b[i]=a[i][j];}

printf("%d",b[i]);

}

printf("\n");

}24

#include main( )

{int a[4][4]={{14,26,18,17},{24,8,21,37},{19,31,22,16},{7,8,11,9}},i,j,t;

printf("原数组:\n");for(i=0;i<4;i++)

{for( j=0;j<4; j++)

printf("%d\t",a[i][j]);

printf("\n");

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

{for( j=0;j

{ t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t; }

}

printf("行列互换后:\n");for(i=0;i<4;i++)

{for( j=0;j<4; j++)

printf("%d\t",a[i][j]);

printf("\n");

}

}25

#include #includemain( )

{char s1[30], s2[30],s3[30]; /*如果输入字符串较长,则长度30还要更大些*/gets(s1);

gets(s2);if(strcmp(s1,s2)>0)strcpy(s3,s1);elsestrcpy(s3,s2);

printf("s3: %s\n", s3);

}26

#include #includemain( )

{char s1[30];inti;

printf("输入:");

scanf("%s",s1);for(i=0;s1[i]!='\0';i++)if(s1[i]=='a')s1[i]='b';

printf("输出:%s\n",s1);

}27

#include #includemain( )

{char s1[30];inti,sum;

printf("输入:");

scanf("%s",s1);

sum=0;for(i=0;s1[i]!='\0';i++)if(s1[i]>='0' && s1[i]<='9')sum=sum+s1[i]-'0';

printf("输出:%d\n",sum);

}28

#include #includemain( )

{char s1[30],s2[30],s3[30];inti;

printf("输入:");

scanf("%s %s",s1,s2);for(i=0;i<=4;i++)

s3[i]=s1[i];for(i=0;i<=4;i++)

s3[i+5]=s2[i];

s3[10]='\0';

printf("输出:%s\n",s3);

}29

#include #includemain( )

{char s1[30];inti;

printf("输入:");

scanf("%s",s1);for(i=0;s1[i]!='\0';i++)

s1[i]=s1[i+1];

printf("输出:%s\n",s1);

}30

#include #includemain( )

{char s1[30], s2[30],s3[30];

gets(s1);

gets(s2);if(strlen(s1)>strlen(s2))strcat(s1,"8899");else strcat(s2,"8899");

printf("s1:%s s2:%s\n", s1,s2);

}31

#include #includemain( )

{char s1[30];inti;

printf("输入:");

scanf("%s",s1);

printf("输出:");for(i=0;s1[i]!='\0';i++)if(s1[i]>='A' && s1[i]<='Z')putchar(s1[i]);

printf("\n");

}32

#include #includemain( )

{char s1[30],lastch; /*分别代表字符串、最后字符*/

int len,count,i; /*len代表字符串长度,count代表个数*/printf("输入1个字符串:");

scanf("%s",s1);

len=strlen(s1);

lastch=s1[len-1];

count=0;for(i=0;s1[i]!='\0';i++)if(s1[i]!=lastch && s1[i]>='a' && s1[i]<='z')count++;

printf("与最后一个字符不相同的小写字母有%d个\n",count);

}33

#include #includemain( )

{char s1[30];intcount,i;

printf("输入:");

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

{

scanf("%s",s1);if(strcmp(s1,"abcd")==0)count++;

}

printf("结果:有%d个\n",count);

}34

#include #includemain( )

{char s1[30];

printf("输入:");

scanf("%s",s1);

s1[strlen(s1)-1]='9';

printf("输出:%s\n",s1);

}35

#include #includemain( )

{char s1[30],ch;inti,f;

printf("输入字符和字符串:");

scanf("%c %s",&ch,s1);

f=-1;for(i=0;s1[i]!='\0';i++)if(s1[i]==ch){f=i; break; }if(f==-1)

printf("字符不存在\n");elseprintf("字符存在\n");

}36

#include #includemain( )

{char s1[30];inti;

printf("输入:");

scanf("%s",s1);

printf("输出:");for(i=strlen(s1)-1;i>=0;i--)

putchar(s1[i]);

printf("\n");

}37

#include #includemain( )

{char s1[30];inti;

printf("输入:");

scanf("%s",s1);

s1[5]='\0';

printf("输出:%s\n",s1);

}38

#include "stdio.h"

int jiecheng(intn)

{inti, jc;

jc=1;for(i=1;i<=n;i++)jc=jc*i;returnjc;

}

main()

{intresult;

result=jiecheng(5)-jiecheng(2)+jiecheng(4); /*函数使用*/printf("结果是 %d\n",result);

}39

#include"stdio.h"

float shouru(floatxiaoshou)

{float x; /*收入*/

if(xiaoshou<11000)x=xiaoshou*0.06;else x=11000*0.06+(xiaoshou-11000)*0.09;returnx;

}

main()

{float xs[6],sr[6],psr;inti;for(i=0;i<=5;i++)

{

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

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

{

sr[i]=shouru(xs[i]);

}

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

{

psr=psr+sr[i];

}

psr=psr/6;

printf("平均收入:%f\n",psr);

}40

#include

int issxh(intn)

{intf;intd1,d10,d100;if(n>999 || n<100)

f=0;else{

d1=n%10;

d10=n/10%10;

d100=n/100;if(d1*d1*d1+d10*d10*d10+d100*d100*d100==n)

f=1;elsef=0;

}returnf;

}

main()

{inti;for(i=100;i<=999;i++)

{if(issxh(i)==1)printf("%d",i);

}

printf("\n");

}41

#include "stdio.h"

int isleap(int year) /*判断类函数,类型用int*/{/*如year是闰年返回1,否则返回0*/

int f; /*用f表示判断结果*/

if(year%400==0 || (year%4==0 && year%100!=0))f=1;else f=0;return f; /*将判断结果返回*/}

main()

{int y; /*年份*/

for(y=1990;y<=2010;y++)if(isleap(y)==1)printf("%d",y); /*函数使用,isleap(y)的值是1就表示y是闰年*/printf("\n");

}42

#include"stdio.h"

void output(char c, int n) /*操作类函数,类型用void*/{/*已知字符c和整数n,将字符c输出n次*/

inti;for(i=1;i<=n;i++)putchar(c);

}

main()

{intn;charc;

scanf("%c %d",&c,&n);

output(c,n);

}43

#include"stdio.h"

float zongping(float pingshi, floatqimo)

{intx;if(qimo>=60)x=qimo;else x=qimo* 0.6+ pingshi*0.4;returnx;

}

main()

{

printf("小王的总评成绩:%f\n",zongping(67,73));

printf("小李的总评成绩:%f\n",zongping(65,53));

}44

#include"stdio.h"

int is4d(intn)

{intf;if(n>=1000 && n<=9999)f=1;else f=0;returnf;

}

main()

{intx;

printf("输入:");

scanf("%d",&x);if(is4d(x)==1)printf("是四位数\n");else printf("不是四位数\n");

}45

#include"stdio.h"

int jifen(int q1, intq2)

{int x; /*本队积分*/

if(q1>q2)x=3;else if(q1==q2)x=1;else x=0;returnx;

}

main()

{intzjf;

zjf=jifen(1,2)+jifen(1,0)+jifen(3,2)+jifen(2,2)+jifen(0,0);

printf("球队的积分:%d\n",zjf);

}46

#include"stdio.h"

float shouru(floatxiaoshou)

{float x; /*收入*/

if(xiaoshou<11000)x=xiaoshou*0.06;else x=11000*0.06+(xiaoshou-11000)*0.09;returnx;

}

main()

{float xs,zsr; /*代表月销售业绩和总收入*/

inti;

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

{

scanf("%f",&xs);

zsr=zsr+shouru(xs);

}

printf("5个月的总收入:%f\n",zsr);

}47

#include"stdio.h"

int isleap(int year) /*判断类函数,类型用int*/{/*如year是闰年返回1,否则返回0*/

int f; /*用f表示判断结果*/

if(year%400==0 || (year%4==0 && year%100!=0))f=1;else f=0;return f; /*将判断结果返回*/}int is4d(intn)

{intf;if(n>=1000 && n<=9999)f=1;else f=0;returnf;

}

main()

{intn;inti;for(i=1;i<=6;i++)

{

scanf("%d",&n);if(is4d(n)==1 && isleap(n)==1) printf("%d",n);

}

printf("\n");

}48

#include"stdio.h"

int issc(char c1, charc2)

{intf;if(c1>='a' && c1<='z')c1=c1-32;if(c2>='a' && c2<='z')c2=c2-32; /*变为大写*/

if(c1==c2)f=1;else f=0;returnf;

}

main()

{int count=0;inti;char str[30];

scanf("%s",str);for(i=0; str[i]!='\0'; i++)

{if(issc(str[0],str[i])==1)count++;

}

printf("有%d个\n",count);

}49

#include

int jg(float kecheng[],intlen)

{inti;int n=0;for (i=0;i=60)n++;return(n);

}

main( )

{float wuli[5],shuxue[7];int i,n1=0,n2=0;

printf("请输入5个学生的物理成绩:");for(i=0;i<5;i++) scanf("%f",&wuli[i]);

printf("请输入7个学生的数学成绩:");for(i=0;i<7;i++) scanf("%f",&shuxue[i]);

n1=jg(wuli,5); /*函数调用*/n2=jg(shuxue,7); /*函数调用*/printf("物理及格人数为%d,数学及格人数为%d\n",n1,n2);

}50

#include "stdio.h"

void huhuan1(int x[],int n) /*数组作为参数时还应提供长度*/{inti, imin, t;

imin=0;for(i=1;i<=n-1;i++)if(x[i]

t=x[imin];

x[imin]=x[n-1];

x[n-1]=t;

}

main()

{int x[6],i ;for(i=0;i<6;i++)scanf("%d",&x[i]);

huhuan1(x,6);for(i=0;i<6;i++)printf("%d",x[i]);

}51

#include

int nu(charstr[])

{int i,n=0;for(i=0;str[i]!='\0'; i++)if(str[i]>='A' && str[i]<='Z')n++;return(n);

}

main()

{char str1[80],str2[80] ;intn1,n2;

gets(str1);

gets(str2);

n1=nu(str1);

n2=nu(str2);

printf("两个字符串中大写字母的个数分别是:%d %d\n",n1,n2);

}52

#include "stdio.h"

void sbg(int x[],int n) /*数组作为参数时还应提供长度*/{inti, imax, t;

imax=0;for(i=1;i<=n-1;i++)if(x[i]>x[imax])imax=i;

x[imax]=0;

}

main()

{int x[7]={26,15,18,37,20,29,11},i ;

sbg(x,7);

sbg(x,7);

sbg(x,7);for(i=0;i<7;i++)printf("%d",x[i]);

}53

#include

void hh(charstr[])

{int i,n=0;charc;for(i=0;str[i]!='\0'; i++); /*求字符串长度*/c=str[0]; str[0]=str[i-1]; str[i-1]=c; /*互换*/}

main()

{char str1[80],str2[80] ;intn1,n2;

gets(str1);

gets(str2);

hh(str1);

hh(str2);

printf("处理后的字符串:%s %s\n",str1,str2);

}54

#include

int sss(int x[], intn)

{int i,num=0;for(i=1;i

}

main()

{int data[8],i;for(i=0;i<8;i++)

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

printf("与第一个元素不相同的元素有%d个\n",sss(data,8));

}55

#include

int xt(charstr[])

{inti;intf;for(i=0;str[i]!='\0'; i++); /*求字符串长度*/

if(str[i-1]==str[0])f=1;else f=0;returnf;

}

main()

{char s[80] ;int i,num=0;for(i=1;i<=5;i++)

{

scanf("%s",s);if(xt(s)==1)num++;

}

printf("首尾字符相同的字符串有%d个\n",num);

}56

#include

int sumd(chars1[])

{inti,sum;

sum=0;for(i=0;s1[i]!='\0';i++)if(s1[i]>='0' && s1[i]<='9')sum=sum+s1[i]-'0';returnsum;

}int xt(charstr[])

{inti;intf;for(i=0;str[i]!='\0'; i++); /*求字符串长度*/

if(str[i-1]==str[0])f=1;else f=0;returnf;

}

main()

{char s[80] ;int i,num1=0,num2=0;for(i=1;i<=5;i++)

{

scanf("%s",s);if(sumd(s)>10)num1++;if(xt(s)==1)num2++;

}

printf("数字之和超过10的字符串有%d个\n",num1);

printf("首尾字符相同的字符串有%d个\n",num2);

}57

#include

int isemail(charstr[])

{inti;intf;intnum;/*统计字符串中@的个数*/num=0;for(i=0;str[i]!='\0'; i++)if(str[i]=='@')num++;/*这时的i的值刚好是字符串的长度*/

if(str[0]!='@' && str[i-1]!='@' && num==1)f=1;else f=0;returnf;

}

main()

{char s[80] ;inti;for(i=1;i<=6;i++)

{

scanf("%s",s);if(isemail(s)==1)printf("%s",s);

}

printf("\n");

}58

#include main( )

{int *a,x,y,z;

a=&x;*a=10;

a=&y;*a=20;

a=&z;*a=30;

printf("x y z分别是%d %d %d\n",x,y,z);

}59

#include main()

{char x[30], *pl, *p, num=0;

gets(x);for(pl=x; *pl!='\0'; pl++); /*移动指针,最后指向\0*/pl--; /*退回一个位置,指向最后字符*/

for(p=x; *p!='\0'; p++) if(*p==*pl)num++;

printf("%d个\n",num);

}60

#include main()

{int a[10]={5, 6, 2, 5, 89, 4, 6, 21, 46, 16}, *p, *pmax, temp;

pmax=a;for(p=a+1; p

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值