=0&&xprintf("%ciscontrollchar.",x);elseif(x>=48&&xprintf("" />
搜档网
当前位置:搜档网 › C语言课后实验教程习题答案

C语言课后实验教程习题答案

C语言课后实验教程习题答案
C语言课后实验教程习题答案

第五章答案

-1-

1. 【答案】:

(1) m=1 n=2

(2) m=2 n=3

(3) a>0 并且a

2. 【答案】:

(2)for (i=0;i<10;i++) {……}

3. 【答案】:32

4. 【答案】:

main()

{

char x ;

int y;

printf("please input :");

scanf("%c",&x);

if(x>=0 && x<=31)

printf("%c is controll char.",x);

else if(x>=48 && x<=57)

printf("%c is number.",x);

else if(x>='a' && x<='z')

printf("%c is min letter.",x);

else if(x>='A' && x<='Z')

printf("%c is max letter.",x);

else if((x>=8 &&

x<=13)||(x=92)||(x=39)||(x=34))

printf("%c is transferred meaning char:"); else

printf("%c is other char.") ;

}

5. 【答案】:

main()

{

float x;

printf("please input x:");

scanf("%f",&x);

if(x>10)

x=x*x+0.5;

else if(x>0 && x<=10)

x=x*x*x-1;

-2-

else if(x<=0)

x=x*x+4*x; printf("%f",x);

}

6. 【答案】:

#include

main( )

{

double m,i=0.0;

int t;

printf("输入存入的本金:");

scanf("%lf",&m);

printf("\n 输入存钱的期限(整年数):"); scanf("%d",&t);

switch(t)

{

case 1:i=m*0.00225;break;

case 2:i=m*0.00276;break;

case 3:i=m*0.00316;break;

case 4:i=m*0.00395;break;

case 5:i=m*0.00470;break;

}

printf("到期时的利息为%lf,利息与本金的合计为%lf",i,m+i);

}

7. 【答案】:

main()

{

int x;

int z,z1,z2;

printf("please input a number x(0=

if(x>=100)

{

z1=x/100;

x=x-z1*100;

z2=x/10;

x=x-z2*10;

-3-

z=z1+z2+x;

}

else if(x>=10)

{

z1=x/10;

x=x-z1*10;

z=z1+x;

}

else

z=x;

printf("%d",z);

}

8. 【答案】

#include

main()

{

char c;

char s;

printf("\nprintf input a letter:");

/*scanf("%c",&c); */

c=getchar();

if (c=='m'||c=='M')

printf("%c replace Monday.",c);

if(c=='t'||c=='T')

{

printf("\nplease input next letter:"); getchar();

s=getchar();

if(s=='u'||s=='U')

printf("%c%c replace Tuesday,",c,s); else

if(s=='h'||s=='H')

printf("%c%c replace Thursday.",c,s); else

printf("%c not replace.",c);

}

-4-

if(c=='w'||c=='W')

printf("%c replace Wednesday.",c); if(c=='f'||c=='F')

printf("%c replace Friday.",c);

if(c=='s'||c=='S')

{

printf("please input next letter:"); getchar();

s=getchar();

if(s=='a'||s=='A')

printf("%c%c is Saturday.",c,s);

else

if(s=='u'||s=='U')

printf("is sunday."); else

printf("err");

}

}

9. 【答案】:

main()

{

int year;

int month;

printf("please input year:");

scanf("%d",&year);

printf("please input month:");

scanf("%d",&month);

switch(month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12: printf("%d year %d month have 31 days.",year,month);break;

case 4:

case 6:

-5-

case 9:

case 11:printf("%d year %d month have 30 days.",year,month);break;

}

if((year%4==0 &&

year%100==0)||(year%400==0)&&(month==2))

printf("%d year %d month have 29 days.",year,month); else if(month==2)

printf("%d year %d month have 28 days.",year,month) ; }

10. 【答案】:

include

main()

{

int i,m=1,n=2,k,t,sum=0;

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

{

k=n/m;

t=m;

m=n;

n=t+n;

sum+=k;

}

printf("前10 项之和为:%d\n",sum); }

11. 【答案】:

main()

{

int i;

int j;

int x=0;

long y=1;

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

{

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

x=x+j;

y=y*x;

x=0;

}

-6-

printf("\nvalue is %d",y);

}

12. 【答案】:

#include

main()

{

int i,j,n;

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

{

n=0;

for(j=1;j

{

if(i%j==0)

n+=j;

}

if(n==i)

printf("%d\n",i);

}

}

第六章答案

1.请找出下面定义语句中的错误。1)int char string[20];修改为char string[20];

2)float data[1,100]; 修改为float data[1][100];

3)int int_data(10); 修改为int data[10];

4)int data[5]={1.0,2.0,3.0,4.0,5.0,6.0};修改为float data[5]={1.0,2.0,3.0,4.0,5.0,6.0};

5)int string[8]={“hello”};修改为char

string[8]={“hello”};

6)float data[3]={’a’,’b’,010,}; 修改为char

dat a[3]={’a’,’b’,’2’};

2.分析下面程序的执行过程并给出结果。

#include

main( )

{

int n[3][3], i, j;

/*数组n 中的每个元素的值等于其行下标和列下标之和*/

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

for(j=0;j<3;j++ )

n[i][j]=i+j;

/*求出原来数组n 中元素的和值*/

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

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

n[i+1][j+1]+=n[i][j];

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

}

结果为6

3.下面程序的功能是在一个字符数组中查找一个指定的字符,若数组中含有该字符则输出

该字符在数组中第一次出现的位置(下标值);否则输出-1。

#include

#include

main()

{ char c='a', t[50];

int n, k, j;

gets(t);

n= strlen(t) ;

for (k=0; k

if ( t[k]= =c )

{ j=k; break; }

else j=-1;

printf("%d", j);

}

4.输入一个4*5 的矩阵,求其中最大元素所在的行号

和列号。 答案:

#include main() { int a[4][5]; int i,j;

int max,mmax,nmax; for(i=0;i<4;i++) for(j=0;j<5;j++) scanf("%d",&a[i][j]); max=a[0][0]; for(i=0;i<4;i++) for(j=0;j<5;j++) {

if(a[i][j]>max) {

max=a[i][j]; mmax=i+1; nmax=j+1; }

}

printf("\n 该矩阵最大元素所在行为第:%d 行,所在列为第:%d 列",mmax,nmax); } 5.输入n 个整数(n<=20),存放在一个一维数组中。然后在第m 个整数后插入一个输入的 整数(后续数组元素后移一位),输出最终的数组。 #include main() {

int n,m,i,q;

int a[21];

printf("请输入整数n(注意n 小于等于20):"); scanf("%d",&n);

printf("请输入元素个数为n 的初始数组:"); for(i=0;i

scanf("%d",&a[i]); printf("请输入在数组的第几位后进行数据插入(注意m 小于n):");

scanf("%d",&m);

printf("请输入插入的数据:"); scanf("%d",&q); for(i=n;i>=m;i--)

{

a[i]=a[i-1]; }

a[m]=q;

printf("新的数组为:"); for(i=0;i<=n;i++) printf("%d",a[i]);

}

6.从键盘输入一个六位数,实现对数据的加密,加密原则为:每位数字都加上5,然后用

和除以9 的余数代替该数字;再将数据的各位数字折半交换得到加密结果。 #include main() {

int a[6];

int i;

printf("请输入6 位整数(注意以数组的输入方式):");/*将6 位的整数看做一个一维数组*/ for(i=0;i<6;i++)

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

/*每位数字上加5,求得的和除以9 取余数 */ for(i=0;i<6;i++) { a[i]+=5; a[i]=a[i]%9; }

printf("输出加密后的结果:"); for(i=5;i>0;i--) printf("%d",a[i]);

}

7.已知有a[10]、b[5]两个数组,其中a 为升序数组,编写程序将b 数组中的各个元素插入 a 数组,并保证a 仍为升序数组。 (通用解如下) #include main()

{

int a[10],b[5],c[15]; int i,j,k,l,max;

printf("请输入数组a :"); /*注意数组a 为1 个升序数组,含有10 个元素*/ for(i=0;i<10;i++) scanf("%d",&a[i]);

printf("请输入数组b:");

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

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

for(i=0,k=0;i<10;i++,k++) /*数组a 和数组b 存入一个数组c 中*/

c[k]=a[i];

for(k=10,j=0;j<5;j++,k++)

c[k]=b[j];

printf("新数组为:");

for(k=0;k<15;k++)

printf("%d ",c[k]);

printf("\n");

for(l=0;l<14;l++)

for(k=0;k<14-l;k++)

if(c[k]>c[k+1])

{

max=c[k];

c[k]=c[k+1];

c[k+1]=max;

}

printf("插入后的数组为:");

for(k=0;k<15;k++)

printf("%d ",c[k]);

}

8.从键盘输入两个整型数组a[N]和b[N]的元素,用数组a 和b 构造数组c[N],使得:1)

当a[i]>b[i]时,c[i]=a[i]-b[i];2)当a[i]<=b[i]时,

c[i]=b[i]-a[i]。

#include

main()

{

int a[5],b[5],c[5];

int i,j,k;

printf("请输入数组a:");

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

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

printf("请输入数组b:");

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

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

/*构建数组c*/

for(i=0,j=0,k=0;i<5;i++,j++,k++)

{

if(a[i]>b[j])

c[k]=a[i]-b[j]; else

c[k]=b[j]-a[i];

}

printf("那么构造出的数组c 为:");

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

printf("%d",c[k]);

}

9.用循环语句编程将二维数组a[3][4]的第一列和第三列对调,并输出数组。

#include

main()

{

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

int i,j,m;

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

{

m=a[i][0];

a[i][0]=a[i][2];

a[i][2]=m;

}

printf("交换后的数组为:");

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

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

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

}

10.输入一行字符,统计其中单词的个数(单词之间可能有多个空格)。

#include

main()

{

char str[100];

int i;

int m=0;

gets(str);

printf("输入的字符串为:");

puts(str);

for(i=0;str[i]!='\0';i++) /*字符第一位和最后一位不是空格*/

{

if(str[i]==' '&&str[i-1]!=' ')

m++;

}

printf("该字符串中单词的个数为:");

printf("%d",m+1);

} 11.编程实现strupr 的功能,即输入一个字符串,经过处理后将该字符串里的所有字符变成 大写字符(不能使用字符处理函数)。 #include main() {

char str[100]; int i;

printf("输入字符串:"); gets(str);

printf("原字符串为:"); puts(str);

for(i=0;str[i]!='\0';i++) {

if(str[i]>='a'&&str[i]<='z') str[i]=str[i]-32; }

printf("处理后字符串为:"); puts(str);

} 12.输入两个字符串str1 和str2,计算str2 在str1 中出现的位置(从位置0 开始计算)。输 出位置结果。例如输入str1 为"howareyou",str2 为"are",那么位置结果应该是3。 #include #include

main() { char str1[100],str2[100]; /*str2 在str1 中最多只出现一次*/ int i,j,m,n=0,k=0;

printf("请输入字符串1:"); gets(str1);

printf("请输入字符串2:"); gets(str2);

for(i=0;str1[i]!='\0';i++) {

if(str1[i]==str2[0]) { k=i+1;

m=i;

for(j=1;str2[j]!='\0';j++) {

if(str1[k]==str2[j]) k++; else { n=1; break; } } } }

if(n==1||k==0)

printf("字符串str1 中并不包含字符串str2"); else

printf("字符串str2 在字符串str1 中的位置为:第%d 位",m);

} 13.从键盘输入10 个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成 绩对应关系保持不变)。 #include

main() { int mark[10][2]; int i,j,k; int temp0,temp1,min; printf("please input the name and mark :"); /*姓名用整数替代*/

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

scanf("%d",&mark[i][j]); for(i=0;i<10;i++) {

min=i;

for(k=i+1;k<10;k++) {

if(mark[k][1]

if(min!=i) {

temp0=mark[i][0]; temp1=mark[i][1];

mark[i][0]=mark[min][0]; mark[i][1]=mark[min][1];

mark[min][0]=temp0; mark[min][1]=temp1; } }

printf("the result is :"); for(i=0;i<10;i++) for(j=0;j<2;j++)

printf("%d ",mark[i][j]);

}

14.下图是一个5×5 的螺旋方阵,编写程序,可以打印输出n ×n 的螺旋方阵(顺时针)。 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 #include #define N 7 main() {

int i,j,n=1,a[N][N]; for(i=0;i<=N/2;i++) {

for(j=i;ji;j--) a[N-i-1][j]=n++; for(j=N-i-1;j>i;j--) a[j][i]=n++; }

for(i=0;i

第七章答案

1. 判断下面说法是否正确。

1)对于用户自定义的函数,在使用前必须说明。 2)说明函数必须指明其参数类型以及返回值。 3)实参可以使常量、变量和表达式。形参也可以使常量、变量和表达式。

4)函数调用可以出现一个表达式中,也可以出现在另一个函数的形参中。

5)若一个函数中没有return 语句,则该函数没有返回值。

6)若只在主函数中对函数fun 进行声明,则只能在主函数中调用fun 函数。

7)若函数fun 在主函数前进行声明,则主函数以及其后的所有函数都能够调用fun 函数。 8)一个static 类型的变量的生存期贯穿整个程序运行期间,但其作用域只在其定义的函 数内有效。

9)全局变量的作用域一定大于局部变量的作用域。 答案:

1)错 2)对 3)错 4)错 5)错 6)错 7)对 8)对 9)错

2. 分析下面程序执行过程。

main( ) { int m=1, n; for (n=0; n<3; n++) printf("%4d", fun(m)); } fun(int c)

{ static int a=3, b=0; b++; a++;

return(a+b+c); }

答案:

循环进行三次(n=0,n=1 和n=2 时),每次输出一个结果。由于函数fun(int c)中变量a 和b

都是静态变量,所以,每次值的修改都会保存下来。 n=0 时,调用fun(m),a=4,b=1,c=m=1,返回结果a+b+c 为6;

n=1 时,调用fun(m),a=5,b=2,c=m=1,返回结果a+b+c 为8;

n=2 时,调用fun(m),a=6,b=3,c=m=1,返回结果a+b+c 为10;

每个输出占四位,最终输出结果为(︼表示空格): ︼︼︼6︼︼︼8︼︼10

3. 下面程序的功能是计算 S= k! 请在 填写适当的

语句程序。(题目有问题) k=0

long fun(int n)

{ int i ; long s ;

for(i=1;i ① ;i++) s*=i ; return( ② ); } main() { int k,n ; long s ;

scanf("%d",&n); s= ③ ;

for(k=0;k<=n ;k++) s+= ④ ; printf("%ld\n",s); }

答案: ①

④ fun(k) 4. 设在主函数中有以下定义以及函数的调用语句,且 func 函数为void 型,请写出func 含 函数的首部(假设形参名为a )。 main()

{ int array[3][4]; int n; ……

func(array); …… }

答案:void func(int a[ ])

5. 编写函数,函数 int max (inta[],int n )计算最大

数、函数int min (inta[],int n )计算最小 数,函数int ave (inta[],int n )计算所有数的平均值。要求在主函数内,初始化一个数组 (10 个元素),调用上述函数后输出该数组的最大值、最小值和平均值。 答案:

#include "stdio.h" int a[10];

int max(int a[],int n){ int i,m=a[0]; for(i=1;i<10;i++) if (a[i]>m)

m=a[i];

return m; }

int min(int a[],int n){ int i,m=a[0]; for(i=1;i<10;i++) if (a[i]

int ave(int a[],int n){ int i,sum=0; for(i=0;i<10;i++) sum+=a[i];

return sum/10; }

6. 编写一个函数,输入一个整数,在函数中打印该整数对应的二进制字符串。 答案:

#include main(){ int a,i=1,x[30]; scanf("%d",&a); while(a>0){ x[i]=a%2; i++; a=a/2;

}

for (i=i-1;i>=1;i--) printf("%d",x[i]); }

7、【答案】:

#include main() { num(); }

int num(int x,int y) { int m; int t; int j; int n; int i;

int k;

scanf("%d",&m);

scanf("%d",&n);

if (m>n)

{

t=m;

n=m;

n=t;

}

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

{

k=sqrt(m);

for(j=2;j<=k;j=j+1)

if(i%j==0)break;

if(j>=k+1)

{

printf("%5d",i);

t=t+1;

if(t%10==0)printf("\n");

}

}

printf("\n");

}

10、【答案】:

main()

{

int a;

int b;

int x[10];

int i=0;

int j;

printf("\nplease input a number:"); scanf("%d",&b);

a=b;

while(b>7)

{

a=a % 8;

x[i]=a ;

i=i+1;

b=(int)b/8;

a=b;

if(b<8)x[i]=b;

}

for(j=i;j>=0;j--) printf("%d",x[j]);

}

11、【答案】:

#include "stdio.h"

#include "math.h"

int DecimalToOctor(int decimal,int count)

{

if (decimal<8)

{

return decimal*pow(10,count);

}

else

return

(decimal%8)*pow(10,count)+DecimalToOctor(decimal/ 8,++count);

}

main()

{

int inputDec imal;

int outputOctor;

printf("please input an integer number:");

scanf("%d",&inputDecimal);

outputOctor=DecimalToOctor(inputDecimal,0);

printf("the result is :%d\n",outputOctor);

}

12.用递归算法将一个整数x 转换成对应的字符串(例如:输入整数123,应输出字符串

"123")。x 可以是位数不超过5 且数值在-32768 到32767 之间的任意整数。

答案:

#include

char a[5]={'0'};

int j=0;

void change(int n)

{

a[j]=n%10+48;

j++;

if(n/10!=0)

change(n/10);

else

{

j--;

return;

}

}

main() {

int i,n,k;

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

for(i=j;i>=0;i--) printf("%c",a[i]); }__

第八章答案

1、【答案】:f 。提示:当*p=’e’的时候,结束while 循环;执行输出语句,*p++的结果是‘f ’。

2、【答案】:1,3,5。 提示:

main ( )

{ int a[]={1, 2, 3, 4, 5} ; int x, y, *p ;

/*指针p 指向数组a 的第一个元素*/ p=&a[0]; /* p+2 的值等于&a[2],即指向数组a 的第3 个元素,并将a[2]的值赋给x */

x=*(p+2); /* p+4 的值等于&a[4],即指向数组a 的第5 个元素,并将a[4]的值赋给x */ y=*(p+4);

printf("%d,%d,%d\n", *p, x, y); }

3、【答案】: 1) printf("%c\n",***(pp+1));/*输出结果是m ,pp+1 是数组pp[0][1]元素的地址,**(pp+1) 是指"mnopqr"的地址,即为字符串中第一个元素的地址,所以***(pp+1)是m */ 2) printf("%c\n",**pp[0]);/*输出结果是a ,pp[0]等于数组pp[0][0]元素的地址,*pp[0] 是指"abc"的地址,即为字符串中第一个元素的地址,所以**pp[0]是a */

3) printf("%c\n",(*(*(pp+1)+1))[4]);/*输出结果是w ,*(*(pp+1)+1)是数组pp[1][1]元 素的地址,即指"stuvw"的首地址,(*(*(pp+1)+1))[4]为字符串中第5 个元素的地址,所以输出 w */

4) printf("%c\n",*(pp[1][2]+2));/*输出结果是z ,pp[1][2]是指"xyz"的地址,pp[1][2]+2

即为字符串中第3 个元素的地址,所以输出是z */ 5)printf("%s\n",**(pp+1)); }/*输出结果是mnopqr ,pp+1 是数组pp[0][1]元素的地址, **(pp+1)是指字符串"mnopqr" */ 4、【答案】:

请说明以下函数定义的含义以及它们之间的区别。 1)int fi(int p)

{ return p++;}//将整型变量p 的值增加1 之后返回 2)int f2(int *p)

{ return *(p++); }//返回指针p 所指变量的下一个变量的值

3) int fi (int *p)

{ return (*p)++; }//将指针p 所指变量的值增加1 之后返回

4)int* f4(int *p)

{ return p++;}//返回指针p 所指的下一个变量 5、【答案】: #include main() {

int *pa,*pb,a,b;

pa=&a; pb=&b;

printf("输入两个整数:");

scanf("%d%d",pa,pb);

printf("a+b=%d\n",*pa+*pb); printf("a*b=%d\n",(*pa)*(*pb));

printf("a-b=%d\n",*pa-*pb);

if(b==0)printf("error!\n"); else printf("a/b=%d\n",(*pa)/(*pb)); }

6.用指针输入一行字符,最长为30,输出其中字母、空格、数字及其它字符的个数。 答案: #define N 30

#include main()

{ char a[N],*p=a; int i,j; int letter,digit,blank,other; letter=digit=blank=other=0; printf("please enter a string:\n"); for(i=0;i

{

scanf("%c",p); if(*p==10)break;

else if(*p>=65&&*p<=90||*p>=97&&*p<=122) letter++;

else if(*p>=48&&*p<=57) digit++; else if(*p==32) blank++; else other++; p++; }

printf("letter is %d\n digit is %d\n blank is %d\n other is %d\n ",letter,digit,blank,other);

} 7.用指针实现:从键盘输入5 个字符串,输出其中最大的字符串。 答案: #define N 100 #include #include main() {

char a[5][N],*p[5],*q; int i,t;

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

printf("please enter the string-%d:",i+1); p[i]=a[i];

scanf("%s",p[i]); printf("\n"); } q=p[0]; t=0;

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

if(strcmp(q,p[i])<0) {

q=p[i]; t=i; }

}

printf("the largest string is\n string-%d:%s\n",t+1,q); }

8.用指针实现:判断所输入的字符串是否为“回文串”。所谓“回文串”是指顺读和逆读都 一样的字符串(区分大小写)。 答案:

#include #include #include const long max=1000; char str[max],*p1,*p2; main()

{

printf("\n 请输入字符串,长度小于%ld\n",max); scanf("%s",str); p1=str;

p2=&str[strlen(str)-1];

for(;(p2-p1>0)&&((*p2)==(*p1));++p1,--p2); if (p2-p1>0) printf("\n 这不是回文\n"); else

printf("\n 这是回文\n"); system("pause"); return 0; }

9、【答案】: Aver(int n,float x[]); Aver(int n,float x[]) {

float max; float min; float aver; int i; int num=0; max=x[0]; min=x[0];

for(i=0;i

if (maxx[i])min=x[i]; num=num+x[i]; }

aver=num/n;

printf("max=%f\n",max); printf("min=%f\n",min); printf("aver=%f\n",aver); }

main()

{

float z[5]; int i;

printf("please input 10 numbers:"); for(i=0;i<5;i++) scanf("%f",&z[i]);

Aver(5,z); }

10.编写以下3 个函数:getdata 函数用于输入数据,reverse 函数用于将数据逆顺存放,showdata 函数用于输出数据。下面给出了这三个函数的定义形式,及主函数的调用形式,请完善函数。 答案:

void getdata(int *a, int num); void reverse(int *a, int num); void showdata(int *a, int num); void main() { int a[10]; getdata(a,10); reverse(a,10); showdata(a,10); }

答案:

void getdata(int *a, int num){ int i;

for(i=0;i

printf("the %d number is: ", i); fflush(stdin); scanf("%d", a+i); }

}

void reverse(int *a, int num){ int i, tmp;

for(i=0;i

tmp=a[i];

a[i]=a[num-1-i]; a[num-1-i]=tmp; }

}

void showdata(int *a, int num){ int i, tmp;

for(i=0;i

printf("%d\n", *(a+i)); } }

11.用指针实现加密程序,输入字符串,按照如下规律输出字符串,A ? Z ,B ? Y ,C ? X … M ?N ,小写也按照相同规律变化,其它字符不变。 答案:

#include #include main(){

char *str,p[81];

puts("input the string:"); scanf("%s",p);

str=p;

for (;*str!='\0';str++){ if ((*str>=65)&&(*str<=90)) *str=64+(27-(*str-64));

if ((*str>=97)&&(*str<=122)) *str=96+(27-(*str-96)); }

puts("the result should be:"); printf("%s\n",p); }

12、【答案】: #include #include

int StrCount(char str1[],char str2[]) {

int i; int j; int k;

int count=0;

for (i=0;str2[i];i++)

for (j=i,k=0;str2[j]==str1[k];j++,k++) if(!str1[k+1]) count++; return count; }

main() {

char *p1;

char *p2; int i;

p1="howareyouaref";

p2="are";

i=StrCount(p2,p1);

printf("sub_string is:%s\n",p2);

printf("string is:%s\n",p1);

printf("numbers is:%d\n",i);

}

13、【答案】:

StrMid(char str1[],int m,int n,char str2[]) {

int i;

int j=0;

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

{

str2[j]=str1[i];

j++;

}

}

main()

{

int m;

int n;

char s1[100];

char s2[100];

printf("please input string(<100):");

gets(s1);

printf("please input m:");

scanf("%d",&m);

printf("\nplease input n:");

scanf("%d",&n);

StrMid(s1,m,n,s2) ;

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

}__

C语言 数组 实验题目及答案

实验六数组程序设计 【实验目的】 1、掌握使用一维数组编程方法 2、掌握使用二维数组进行程序设计 【实验内容】 一、上机验证程序,并分析结果 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。1、#include int main() { int a[ ]={1,2,3,4,5} , i, j, s=0 ; j = 1; for ( i = 4 ; i>=0 ; i--) { s = s+ a[i] * j ; j = j * 10 ; } printf(" s= %d \n" , s ); return 0; } 二、程序改错题 1.下面程序的功能,是从键盘输入一个数组(数组长度为10),查找数组中正数的个数。源代码如下,程序中存在错误,请将其改正。 #include int main()

{ int a(10);/*定义数组*/ int count,i;/* i循环变量 count 正数个数*/ for(i=0;i<=10;i++) {/*循环输入*/ scanf("%d",a[i]); } count=1; for(i=0;i<=10;i++) {/*查找正数*/ if(a(i)>0) count++; } printf("数组中正数有:%d个\n",count); return 0; } 三编写程序 1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。#include #define N 30 int main() { float score[N],sum=0,aver; int i; for(i=0;i<30;i++) { scanf("%f",&score[i]); sum=sum+score[i]; } aver=sum/30; printf("平均分为:%.2f\n",aver); for(i=0;iaver) printf("%.2f ",score[i]); printf("\n");

大学物理实验课后习题答案

一牛顿环的各环是否等宽?密度是否均匀?解释原因? 因为环是由空气劈上下表面反射的两束光叠加干涉形成的。劈的上表面变化在横向是不均匀的,故光程差也不是均匀变化的。所以各环是不等宽的环的密度也不是均匀的。各环不等宽,半径小的环宽,越到外边越窄,密度是不均匀的,牛顿环的半径公式是:半径r等于根号下(m+1/2)λR,其中m为环的级数。从公式可以看出,半径和环数并不是线性关系,这样环自然不均匀。计算可以知道,越往外环越密。 二牛顿环的干涉圆环是由哪两束相干光干涉产生的? 半凸透镜下表面和下底面上表面的两束反射光 三电桥由哪几部分组成?电桥平衡的条件? 由电源、开关、检流计桥臂电阻组成。 平衡条件是Rx=(R1/R2)R3 四接通电源后,检流计指针始终向一边偏转,试分析出现这种情况的原因? 指针向一侧偏转就说明发生了电子的定向移动了,这个应该没问题。 指针不偏转,有2种情况吧,其1呢是整个电路发生了断路或其他故障,还1种情况则是流过的电流太小,不足于使电表发生偏转或其偏转的角度肉眼根本看不到。 无论如何调节,检流计指针都不动,电路中可能出现故障是调节臂电阻断路或短路。。无论如何调节,检流计指针始终像一边偏而无法平衡,电路中有可能出现故障是有一个臂(非调节臂)的电阻坏了。(断路或短路) 五什么叫铁磁材料的磁滞现象? 铁磁物质经外磁场磁化到饱和以后,把磁场去掉。这些物质仍保留有剩余磁化强度。需要反方向加磁场才能把这剩余磁化强度变为零。这种现象称为铁磁的磁滞现象。也是说,铁磁材料的磁状态,不仅要看它现在所处的磁场条件;而且还要看它过去的状态。 六如何判断铁磁材料属于软.硬材料? 软磁材料的特点是:磁导率大,矫顽力小,磁滞损耗小,磁滞回线呈长条状;硬磁材料的特点是:剩磁大,矫顽力也大 用光栅方程进行测量的条件是什么? 条件是一束平行光垂直射入光栅平面上,光波发生衍射,即可用光栅方程进行计算。如何实现:使用分光计,光线通过平行光管射入,当狭缝位于透镜的焦平面上时,就能使射在狭缝上的光经过透镜后成为平行光 用光栅方程进行测量,当狭缝太窄或者太宽会怎么样?为什么? 缝太窄,入射光的光强太弱,缝太宽,根据光的空间相干性可以知道,条纹的明暗对比度会下降! 区别是,太窄了,亮纹会越来越暗,暗纹不变,直到一片黑暗! 太宽,暗条纹会逐渐加强,明纹不变,直到一片光明!

c语言实验答案

c语言实验答案

//1.1编写一程序,在屏幕上输出如下内容:// X | X | X //---+---+--- // | | //---+---+--- // 0 | 0 | 0 #include void main() { printf(" X | X | X\n"); //注意转义字符\n的用法 printf("---+---+---\n "); printf(" | |\n"); printf("---+---+---\n "); printf(" 0 | 0 | 0\n"); } //1.2输出"Hello world!"语句 #include void main() { printf("Hello world!\n"); } //2.1编写一程序,接受用户输入的两个整数,并计算它们的和、差、积、商,程序运行结果应如下所示。 //注意,尖括号部分表示用户输入数据或要被替换的输出内容,尖括号本身并不需要输入或输出。 //多使用几组整数尝试一下,你发现了什么?//The program gets two integers,and

computes their sum,difference,produc t and quotient. //The first number:<第一个整数在此输入> //The second number:<第二个整数在此输入> //Results as follows: //<第一个整数>+<第二个整数>=<和> //<第一个整数>-<第二个整数>=<差> //<第一个整数>*<第二个整数>=<积> //<第一个整数>/<第二个整数>=<商> #include void main() { int a,b; printf("The program gets two integers,and computes their sum,difference,produc t and quotient.\n"); printf("The first number:"); scanf("%d",&a); printf("The second number"); scanf("%d",&b); printf("Results as follows:\n"); printf("%d+%d=% d\n",a,b,a+b); printf("%d-%d=% d\n",a,b,a-b); printf("%d*%d=% d\n",a,b,a*b); printf("%d+%d=% f\n",a,b,1.0*a/b); //做除法时要注意,除得的

计算机文化基础(第十版)实验教程习题答案

习题答案 第1章 一、单项选择题 1.A 2.A 3.A 4.A 5.C 6.D 7.C 8.B 9.C 10.B 11.B 12.D 13.A 14.C 15.C 16.C 17.A 18.A 19.A 20.C 21.D 22.B 23.A 24.B 25.D 26.C 27.A 28.B 29.B 30.A 31.A 32.C 33.D 34.D 35.B 36.A 37.C 38.A 39.B 40.B 41.B 42.B 43.C 44.A 45.C 46.A 47.A 48.C 二、多项选择题 1.BC 2.BCD 3.ABD 4.ABC 5.AD 6.ABC 7.ABD 8.AB 9.ABD 10.AC 三、判断题 1.T 2.F 3.F 4.T 5.T 6.F 7.T 8.F 9.F 10.T 11.T 12.T 13.F 14.T 15.T 16.T 17.F 18.F 19.T 20.F 21.T 22.F 23.F 四、填空题 1.地址码2.1024 3.总线4.显示卡 5.点阵码矢量码6.自动控制7.算术运算逻辑运算8.地址9.存储程序工作10.字11.应用软件12.二进制13.外部14.CD-ROM 15.非击打式 16.American Standard Code for Information Interchange 17.寄存器18.数据处理(信息管理) 19.CPU 20.3 第2章 一、单项选择题 1. D 2. D 3. D 4. D 5. C 6. B 7. C 8. C 9. B 10. A 11. C 12. D 13. D 14. B 15. A 16. B 17. D 18. B 19. D 20. A 21. A 22. A 23. C 24. B 25. C 26. D 27. C 28. D 29. B 30. A 31. C 32. D 33. C 34. D 35. C 36. B 37. D 38. C 39. C 40. D 二、多项选择题 1. ABCD 2. BCD 3. ABD 4. ABD 5. BCD 6. ACD 7. BC 8. ABC 9. ACD 10. ACD 11. BD 12. ABD 三、判断题

C语言程序设计实验与习题答案

2.程序填空 (1)以下程序的功能是计算1~50之间能被7整除的整数之和。 #include void main() {int i,sum=0; for(i=1;50;i++) if(i%7==0) sum+=i; printf("sum=%d\n",sum); } (2) 下面程序接收来自键盘的输入,直到输入+Z(值为-1)键为止。这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。请填空。 #include void main() {char cx; char front=’’; while ((cx=getchar())!=’\n’) {if (cx!=’’) putchar(cx); if (cx= =’’) if (front!=’’) putchar(cx);

front=cx; } } 3.程序改错 (1)下列程序的功能是求1+3+5+…99的和。 #include void main( ) { int s,i; ★//int s=0,i; i=1; while(i<=99)s=s+i;★//{s=s+i;i++;} printf("1+3+5+…99的和是:%d\n",s); } (2)下面程序的功能是输入一个正整数,判断是否是素数,若为素数输出1,否则输出0。 #include void main() { int i,x,y=0; ★//y=1 scanf("%d",&x); for(i=2;i<=x/2&&y;i++)

if ((x%i)!=0) y=0; ★//x%i==0 printf("%d\n",y); } 4.设计性实验 (1)题 /* 方法(1)精度控制*/ #include #include main() {int s; float n,t,pi; t=1;pi=0;n=1.0;s=1; while((fabs(t))>=1e-6) {pi=pi+t; n=n+2; s=-s; t=s/n; }

大学物理实验课后答案

实验一霍尔效应及其应用 【预习思考题】 1.列出计算霍尔系数、载流子浓度n、电导率σ及迁移率μ的计算公式,并注明单位。 霍尔系数,载流子浓度,电导率,迁移率。 2.如已知霍尔样品的工作电流及磁感应强度B的方向,如何判断样品的导电类型? 以根据右手螺旋定则,从工作电流旋到磁感应强度B确定的方向为正向,若测得的霍尔电压为正,则样品为P型,反之则为N型。 3.本实验为什么要用3个换向开关? 为了在测量时消除一些霍尔效应的副效应的影响,需要在测量时改变工作电 流及磁感应强度B的方向,因此就需要2个换向开关;除了测量霍尔电压,还要测量A、C间的电位差,这是两个不同的测量位置,又需要1个换向开关。总之,一共需要3个换向开关。 【分析讨论题】 1.若磁感应强度B和霍尔器件平面不完全正交,按式(5.2-5)测出的霍尔系数比实际值大还是小?要准确测定值应怎样进行? 若磁感应强度B和霍尔器件平面不完全正交,则测出的霍尔系数比实际值偏小。要想准确测定,就需要保证磁感应强度B和霍尔器件平面完全正交,或者设法测量出磁感应强度B和霍尔器件平面的夹角。 2.若已知霍尔器件的性能参数,采用霍尔效应法测量一个未知磁场时,测量误差有哪些来源? 误差来源有:测量工作电流的电流表的测量误差,测量霍尔器件厚度d的长度测量仪器的测量误差,测量霍尔电压的电压表的测量误差,磁场方向与霍尔器件平面的夹角影响等。 实验二声速的测量 【预习思考题】 1. 如何调节和判断测量系统是否处于共振状态?为什么要在系统处于共振的条件下进行声速测定? 答:缓慢调节声速测试仪信号源面板上的“信号频率”旋钮,使交流毫伏表指针指示达到最大(或晶体管电压表的示值达到最大),此时系统处于共振状态,显示共振发生的信号指示灯亮,信号源面板上频率显示窗口显示共振频率。在进行声速测定时需要测定驻波波节的位置,当发射换能器S1处于共振状态时,发射的超声波能量最大。若在这样一个最佳状态移动S1至每一个波节处,媒质压缩形变最大,则产生的声压最大,接收换能器S2接收到的声压为最大,转变成电信号,晶体管电压表会显示出最大值。由数显表头读出每一个电压最大值时的位置,即对应的波节位置。因此在系统处于共振的条件下进行声速测定,可以容易和准确地测定波节的位置,提高测量的准确度。 2. 压电陶瓷超声换能器是怎样实现机械信号和电信号之间的相互转换的? 答:压电陶瓷超声换能器的重要组成部分是压电陶瓷环。压电陶瓷环由多晶结构的压电材料制成。这种材料在受到机械应力,发生机械形变时,会发生极化,同时在极化方向产生电场,这种特性称为压电效应。反之,如果在压电材料上加交

C语言实验报告参考答案

《C语言程序设计》 实 验 手 册

《C语言程序设计》实验课程简介 课程名称:C语言程序设计实验 课程性质:专业必修课 课程属性:专业必修课 学时学分:学时32 学分1 开课实验室:软件实验室 面向专业:网络工程、软件工程、计算机科学与技术 一、课程的任务和基本要求 C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实验性教育环节。本课程的主要任务是让学生充分掌握C 语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。 二、实验项目 【实验一】最简单的C程序---顺序程序设计 【实验二】逻辑运算和判断选取控制 【实验三】循环结构程序设计(一) 【实验四】循环结构程序设计(二) 【实验五】函数 【实验六】数组(一) 【实验七】数组(二) 【实验八】指针 【实验九】结构体、共用体和文件 【实验十】C程序综合性实验 三、有关说明 1、与其它课程和教学环节的联系: 先修课程:计算机文化 后续课程:面向对象程序设计、Java程序设计、数据结构、软件工程 2、教材和主要参考书目: (1)教材: 《C程序设计习题解答与上机指导》,谭浩强吴伟民著,北京:清华大学出版社,2003年。(2)主要参考书目: 《C语言程序设计》谭浩强主编,清华大学出版社,2003年。

三、实验内容 实验一最简单的C程序---顺序程序设计 (验证性实验 2学时) (一)、实验目的 1.熟悉win-tc程序运行环境 2.掌握运行一个C程序的步骤,理解并学会C程序的编辑、编译、链接方法 3.掌握C语言中使用最多的一种语句——赋值语句 4.掌握数据的输入输出方法,能正确使用各种格式控制符 (二)、实验内容 1.写出下列程序的运行结果 (1)#include void main() { printf(“*****************\n”); printf(“This is a c program. \n”); printf(“****************\n”); } 运行结果及分析:运行结果为: Printf函数语句表示输出引号内的字符串,最后的\n表示换行, 将程序中的\n去掉后,运行结果及分析:运行结果为: 去掉\n后不换行连续显示 (2)#include void main() { int a=100,b=20,sum,sb; sum=a+b; sb=a/b; printf("sum=%d,sb=%d",sum,sb); } 运行结果及分析: sum=100+20=120;sb=100/20=5. (3)#include void main( )

JSP程序设计与项目实训教程_第2版_课后习题和参考答案

第1章Web技术简介 1.7 习题 1.7.1 选择题 1. Web技术的设想于哪一年提出()。 A.1954年 B.1969年 C.1989年 D.1990年 2. JSP页面在第一次运行时被JSP引擎转化为()。 A.HTML文件 B.CGI文件 C.CSS文件 D.Servlet文件 3. JavaEE体系中Web层技术是()。 A.HTML B.JavaBean C.EJB D.JSP 参考答案:1.C 2.D 3.D 1.7.2 填空题 1.当前主流的三大动态Web开发技术是:PHP、ASP/https://www.sodocs.net/doc/5512874870.html,和______________。 2. JSP的两种体系结构是:______________和______________。 3. JSP开发Web站点的主要方式有:直接JSP、JSP+JavaBean、______________、______________和SSH。 参考答案: 1.JSP 2.JSP Model1和JSP Model2 3.JSP+JavaBean+Servlet、J2EE/JavaEE 1.7.3 简答题 1. 简述JSP的工作原理。 答:所有的JSP应用程序在首次载入时都被翻译成Servlet文件,然后再运行,这个工作主要是由JSP引擎来完成。当第一次运行一个JSP页面时,JSP引擎要完成以下操作: ●将JSP文件翻译成Servlet文件,Servlet文件是Java应用程序。 ●JSP引擎调用Java编译器,编译Servlet文件得到可执行的代码文件(.class文件)。 ●JSP引擎调用Java虚拟机解释执行.class文件,并将运行结果返回给服务器。 ●服务器将运行结果以HTML形式作为响应返回给客户端的浏览器。 由于一个JSP页面在第一次被访问时要经过翻译、编译和执行这几个步骤,所以客户端得到响应所需要的时间比较长。当该页面再次被访问时,它对应的.class文件已经生成,不需要再次翻译和编译,JSP引擎可以直接执行.class文件,因此JSP页面的访问速度会大为提高。 2. 简述JSP两种体系结构。

C语言程序设计_上机实验指导与习题_第三版_(陈湘骥_编著_著)_华南农业大学_参考答案

C语言程序设计上机实验指导与习题 参考答案 (仅供教师内部参考) 华南农业大学

目录 上机实验 (1) 实验 1 C语言程序初步 (1) 一、实验目的 (1) 二、实验内容 (1) 实验2基本数据类型、运算和表达式 (3) 一、实验目的 (3) 二、实验内容 (3) 实验3基本输入与输出 (5) 一、实验目的 (5) 二、实验内容 (5) 实验4选择结构程序设计 (4) 一、实验目的 (4) 二、实验内容 (4) 实验5循环结构程序设计(一) (9) 一、实验目的 (9) 二、实验内容 (9) 实验6循环结构程序设计(二) (15) 一、实验目的 (15) 二、实验内容 (15) 实验7数组 (17) 一、实验目的 (17) 二、实验内容 (17) 实验8字符数组的应用 (22) 一、实验目的 (22) 二、实验内容 (22) 实验9函数的基本应用 (24) 一、实验目的 (24) 二、实验内容 (24) 实验10指针与结构体 (26) 一、实验目的 (26) 二、实验内容 (26) *实验11链表 (29) 一、实验目的 (29) 二、实验内容 (29) *实验12文件 (32) 一、实验目的 (32) 二、实验内容 (32)

上机实验 实验 1 C语言程序初步 一、实验目的 (1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。 (2)了解在该系统上如何编辑、编译、连接和运行一个C程序。 (3)通过运行简单的C程序,初步了解C程序的特点。 (4)在教师的指导下,学会使用JudgeOnline实验系统。 二、实验内容 1. 运行第一个 C 程序 [题目:The first C Program] 将下列程序输入 TC(或 VC++),编译、连接和运行该程序。 void main() { printf("The first C Program\n"); } [具体操作步骤] 以 Turbo C 上的操作为例 (1)Windows 进入后,按照第一章中介绍的方法,进入 Turbo C。 (2)在编辑窗口中输入程序。 (3)保存程序,取名为 a1.c。 (4)按照第一章中介绍的方法,编译、连接和运行程序。 2.在JudgeOnline系统中提交实现了计算a+b功能的程序 [题目 1001:计算 a+b] 由键盘输入两个整数,计算并输出两个整数的和。实现该功能的程序如下, void main() { int a, b; scanf("%d%d", &a, &b); 1

大学物理实验课后答案

(1)利用f=(D+d)(D-d)/4D 测量凸透镜焦距有什么优点? 答这种方法可以避免透镜光心位置得不确定而带来得测量物距与像距得误差。 (2)为什么在本实验中利用1/u+1/v=1/f 测焦距时,测量u与v都用毫米刻度得米尺就可以满足要求?设透镜由于色差与非近轴光线引起得误差就是1%。 答设物距为20cm,毫米刻度尺带来得最大误差为0、5mm,其相对误差为 0、25%,故没必要用更高精度得仪器。 (3)如果测得多组u,v值,然后以u+v为纵轴,以uv为横轴,作出实验得曲线属于什么类型,如何利用曲线求出透镜得焦距f。 答直线;1/f为直线得斜率。 (4)试证:在位移法中,为什么物屏与像屏得间距D要略大于4f? 由f=(D+d)(D-d)/4D →D2-4Df=d2→D(D-4f)=d2 因为d>0 and D>0 故 D>4f 1、避免测量u、ν得值时,难于找准透镜光心位置所造成得误差。 2、因为实验中,侧得值u、ν、f都相对较大,为十几厘米到几十厘米左右,而误差为1%,即一毫米到几毫米之间,所以可以满足要求。 3、曲线为曲线型曲线。透镜得焦距为基斜率得倒数。 ①当缝宽增加一倍时,衍射光样得光强与条纹宽度将会怎样变化?如缝宽减半,又怎样改变? 答: a增大一倍时, 光强度↑;由a=Lλ/b ,b减小一半 a减小一半时, 光强度↓;由a=Lλ/b ,b增大一倍。 ②激光输出得光强如有变动,对单缝衍射图象与光强分布曲线有无影响?有何影响? 答:由b=Lλ/a、无论光强如何变化,只要缝宽不变,L不变,则衍射图象得光强分布曲线不变(条纹间距b不变);整体光强度↑或者↓。

③用实验中所应用得方法就是否可测量细丝直径?其原理与方法如何? 答:可以,原理与方法与测单狭缝同。 ④本实验中,λ=632。8nm ,缝宽约为5*10^-3㎝,屏距L 为50㎝。试验证: 就是否满足夫朗与费衍射条件? 答:依题意: L λ=(50*10^-2)*(632、8*10^-9)=3、164*10^-7 a^2/8=(5*10^-5)^2/8=3、1*10^-10 所以L λ<20θ,(10θ人为控制在mv )03.050.3(±); 2)测量散热板在20θ附近得冷却速率。 4、试述稳态法测不良导体导热系数得基本原理。

C语言实验报告参考答案原

C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include<> main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.编写程序: (1) a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 (2)a=160,b=46,c=18,d=170, 编写求(a+b)/(b-c)*(c-d)的程序。 答案: (1) #include<> main() {

int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } (2) #include<> main() { int a,b,c,d; float x; a=160; b=46; c=18;

d=170; x=(a+b)/(b-c)*(c-d); printf("(a+b)/(b-c)*(c-d)=%f\n",x); } 3. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b 时,将0赋给c。(提示:用条件运算符) 答案: #include<> main() { int a,b,c; a=0; b=-10; c= (a>b) b:a; printf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 2、(1) 编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7

计算机文化基础(第十版)实验教程习题答案

精心整理 习题答案 第1章 一、单项选择题 1.A 2.A 3.A 4.A 5.C 6.D 7.C 8.B 9.C 10.B 11.B 12.D 13.A 14.C 15.C 16.C 17.A 18.A 19.A 20.C 21.D 22.B 23.A 24.B 25.D 26.C 27.A 28.B 29.B 30.A 31.A 32.C 33.D 34.D 35.B 36.A 37.C 38.A 39.B 40.B 41.B 42 46.A 47.A 48.C 二、多项选择题 1.BC 2.BCD 3.ABD 4. 7.ABD 8.AB 9.ABD 10. 三、判断题 1.T 2.F 3.F 4.T 7.T 8.F 9.F 10. 13.F 14.T 15 19.T 20.F 21 四、填空题 1.地址码23.总线4.显示卡 58.地址 912.二进制13.CD-ROM 15.非击打式 16. 17.数据处理(信息管理)19.CPU 20.3 第2章 一、单项选择题 1.D 2.D 3.D 4.D 5.C 6.B 7.C 8.C 9.B 10.A 11.C 12.D 13.D 14.B 15.A 16.B 17.D 18.B 19.D 20.A 21.A 22.A 23.C 24.B 25.C 26.D 27.C 28.D 29.B 30.A 31.C 32.D 33.C 34.D 35.C 36.B 37.D 38.C 39.C 40.D

二、多项选择题 1.ABCD 2.BCD 3.ABD 4.ABD 5.BCD 6.ACD 7.BC 8.ABC 9.ACD 10.ACD 11.BD 12.ABD 三、判断题 1.T 2.T 3.F 4.F 5.T 6.T 7.F 8.F 9.F 10.T 11.F 12.F 13.F 14.T 15.T 16.T 17.F 18.F 19.F 20.T 四、填空题 1.操作系统 2.setup.exe 5.Alt+PrintScreen 6.安全 9.分时10.实时 第3章 一、单项选择题 1.D 2.D 3.C 10.A 11.C 12.A 16.A 17.C 18.D 19.C 25.A 26.A 27.D 28.B 32.C 33.A 34.D 35.B 36.B 37.A 41.C 42.C 43.C 44.C 45.A 1.AB 2.AB 3.BD 4.AB 5.ABCD 6.ABC 7.ABC 8.ABCD 9.AD 10.AC 11.AC 12.ABC 13.AD 14.ABCD 15.ABD 16.ABCD 17.BD 18.BC 19.AB 20.ABCD 三、判断题: 1.F 2.T 3.T 4.F 5.T 6.T 7.T 8.T 9.T 10.T 11.F 12.F 13.F 14.F15.F 16.F 17.F 18.T

C语言程序设计实验与习题答案

2. 程序填空 (1) 以下程序的功能是计算1?50之间能被7整除的整数之和。 #in clude<> void mai n() {int i,sum= _____ 0______ ; for(i=1; 50 ______ ;i++) if( i%7==0 ) sum+=i; pri ntf("sum=%d\n",sum); } (2) 下面程序接收来自键盘的输入,直到输入+Z值直为-1) 键为止。这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。请填空。 #in clude <> void mai n() {char cx; char front=' '; while ((cx=getchar())!=' \n' ) {if (cx!=‘') putchar(cx); if (cx=—') if (front!='') putchar(cx); front=cx; } } 3. 程序改错 (1)下列程序的功能是求1+3+5+…99的和。

#in clude <> void main( ) { int s,i; ★ 10.6f10.6f10.6f10.6f 代表个数*/ for(i=1;i<=9;i++) for(j=0;j<=9;j++) for(k=0;k<=9;k++) if(i*i*i+j*j*j+k*k*k==1099) /* 在所有组合中找出满足指定条件的*/ { printf("%4d",100*i+10*j+k); n++; if(n%5==0) printf("\n"); /* 表示每行输出5 个数*/ } } #include<> #include<> main() { int i,j,k; for(i=1;i<=4;i++) /* 上三角形有4 行,每循环1 次输出1 行*/ { for(k=1;k<8-((2*i-1)/2);k++) /* 该循环输出每行的空格.8 用于调节偏离位置,可换成别的数( >=8) */ printf(" "); for(j=1;j<=2*i-1;j++) /* 该循环输出每行的 '*字'符*/ printf("*"); putchar( n''); /* 换行*/

c语言实验习题及答案详解

1.数据类型 a.输入一个小数点后有多位数字的小数,实现将其保留三位小数,并输出;, #include<> main() {double b,d; printf("请输入一个小数:"); scanf("%lf",&b); printf("输出原来的数:%f\n",b); b*=1000; b+=; b=(int)b; d=b/1000; printf("输出现在的数:%.3lf\n0",d); } b.输入一个4位整数,求其得各位数字的平方和;(1234 1+4+9+16=30) #include<> main() {int n,sum=0,i,t; printf("请输入一个四位整数:\n"); scanf("%d",&n); for(i=0;i<4;i++) {t=n%10; n/=10; sum+=t*t; } printf("%d\n",sum);

} c.定义字符型变量ch,写出六种给ch赋值字符’A’的代码; #include<> main() {char ch; ch='A'; ch=65; ch=0x41; ch=0101; ch='\101'; ch='\x41'; } d.编写程序输出26组大小写字母;(AaBbCc……….XxYyZz) #include<> main() {int i; for(i=65;i<91;i++) {printf("%c",i); printf("%c",i+32); } printf("\n"); } e.定义浮点型变量f1、f2,为f1赋值10的-30次,为f2赋值10的30次 #include<> main() { double f1,f2; f1=10e-30;

中国石油大学出版社第八版计算机文化基础实验教程习题答案

第一章 一、单项选择题 1.A 2.A 3.A 4.A 5.C 6.D 7.C 8.B 9.C 10.B 11.B 12.D 13.A 14.C 15.C 16.C 17.A 18.A 19.A 20 C 21.D 22.B 23.A 24.B 25.D 26.C 27.A 28.B 29.B 30.A 31.A 32.C 33.D 34.D 35.B 36.A 37.C 38.A 39.B 40.B 41.B 42.B 43.C 44.A 45.C 46.A 47.A 48.C 49.A 二、多项选择题 1.BC 2.BCD 3.ABD 4.ABC 5.AD 6.ABC 7.ABD 8.AB 9.ABD 10.AC 三、填空题 1.地址码2.1024 3.总线(Bus)4.显卡 5.点阵码矢量码6.过程控制7.算术运算逻辑运算8.地址 9.冯·诺依曼的存储程序工作10.字11.应用软件12.二进制13.输入/输出或者(I/O)14.CD-ROM 15.非击打式 16.American Standard Code for Information Interchange(美国标准信息交换代码)17.寄存器18.信息处理19.中央处理器20.3 四、判断题 1.T 2.F 3.F 4.T 5.T 6.F 7.T 8.F 9.F 10.T 11.T 12.T 13.F 14.T 15.T 16.T 17.F 18.F 19.T 20.F 21.T 22.F 23.F 第二章 一、单项选择题 1. A 2. D 3. C 4. D 5. B 6. B 7. C 8. B 9. D 10. D 11. A 12. B 13. C 14. B 15. C 16. D 17. C 18. D 19. D 20. A 21. D 22. C 23. C 24. D 25. B 26. D 27. B 28. B 29. D 30. A 31. D 32. D 33. B 34. D 35. B 36. B 37. C 38. D 39. B 40. A 41. A 42. A 43. C 44. A 45. B 46. D 47. C 48. C 49. D 50. B 二、多项选择题 1. ACD 2. ABCD 3. ABD 4. ABC 5. AB 6. BCD 7. ABC 8. AD 9. ABCD 10. ABD 11. ABC 12. ABCD 13. AC 14. ABCD 15. ABCD 16. ABCD 17. ABCD 18. ABC 19. AB 20. ABD 三、判断题 1. F 2. F 3. F 4. F 5. T 6. T 7. T 8. T 9. F 10. F 11. F 12. F 13. F 14. T 15. F 16. F 17. F 18. F 19. T 20. F 四、填空题

C语言程序设计练习题(含程序及参考答案)

1、定义一个函数int fun(int a,int b,int c) ,它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰返回2, —般三角形返回1,若不能构成三角形返回0。 #include int fun(int a,int b,int c) { if(a+b>c && b+c>a && a+c>b) { if(a==b && b==c ) return 3; else if(a==b||b==c||a==c) return 2; else return 1; } else return 0; } void main() { int a,b,c,shape; printf("\nl 叩ut a,b,c:"); scanf("%d%d%d", &a,&b,&c); printf("\na=%d, b=%d, c=%d\n",a,b,c); shape =fun(a,b,c); printf("\n\nThe shape : %d\n",shape); }

2、编写一个程序,将两个变量的值交换,例如变量a中的值原为 3 , b中的值原为8,程序运行后a中的值为8, b中的值为3。 #include void fun(int *x,int *y) { int t; t=*x;*x=*y;*y=t } void main() { int a=3,b=8; printf("%d %d\n",a,b); fun(&a,b); printf("%d %d\n",a,b); } 3、从键盘输入3个数,将最大值放在变量a中,最小值放在变量c 中。 例如,输入的数为:55 12 34 , 输出结果应当是:a=55.0,b=34.0,c=12.0 。 #include void fun(float *p,float *q,float *s) { float k; if (*p<*q) { k=*p;*p=*q;*q=k;} if (*q<*s) { k=*s;*s=*p;*p=k;}

大学物理实验课后答案

大学物理实验课后答案 Final revision by standardization team on December 10, 2020.

(1)利用f=(D+d)(D-d)/4D 测量凸透镜焦距有什么优点 答这种方法可以避免透镜光心位置的不确定而带来的测量物距和像距的误差。(2)为什么在本实验中利用1/u+1/v=1/f 测焦距时,测量u和v都用毫米刻度的米尺就可以满足要求设透镜由于色差和非近轴光线引起的误差是1%。 答设物距为20cm,毫米刻度尺带来的最大误差为,其相对误差为%,故没必要用更高精度的仪器。 (3)如果测得多组u,v值,然后以u+v为纵轴,以uv为横轴,作出实验的曲线属于什么类型,如何利用曲线求出透镜的焦距f。 答直线;1/f为直线的斜率。 (4)试证:在位移法中,为什么物屏与像屏的间距D要略大于4f 由f=(D+d)(D-d)/4D → D2-4Df=d2→ D(D-4f)=d2 因为d>0 and D>0 故D>4f 1.避免测量u、ν的值时,难于找准透镜光心位置所造成的误差。 2.因为实验中,侧的值u、ν、f都相对较大,为十几厘米到几十厘米左右,而误差为1%,即一毫米到几毫米之间,所以可以满足要求。 3.曲线为曲线型曲线。透镜的焦距为基斜率的倒数。 ①当缝宽增加一倍时,衍射光样的光强和条纹宽度将会怎样变化如缝宽减半,又怎样改变 答: a增大一倍时, 光强度↑;由a=Lλ/b ,b减小一半 a减小一半时, 光强度↓;由a=Lλ/b ,b增大一倍。 ②激光输出的光强如有变动,对单缝衍射图象和光强分布曲线有无影响有何影响 答:由b=Lλ/a.无论光强如何变化,只要缝宽不变,L不变,则衍射图象的光强分布曲线不变 (条纹间距b不变);整体光强度↑或者↓。 ③用实验中所应用的方法是否可测量细丝直径其原理和方法如何 答:可以,原理和方法与测单狭缝同。 ④本实验中,λ=632。8nm,缝宽约为5*10^-3㎝,屏距L为50㎝。试验证: 是否满足夫朗和费衍射条件 答:依题意: Lλ=(50*10^-2)*(*10^-9)=*10^-7 a^2/8=(5*10^-5)^2/8=*10^-10 所以Lλ<

《大学计算机基础实验教程》参考答案.

《大学计算机基础实验教程》参考答案第1章参考答案 一、单项选择题 1.B 2.B 3.C 4.D 5.D 6.B 7.A 8.B 9.D 10.B 11.A 12.C 13.B 14.A 15.C 16.C 17.B 18.D 19.A 20.B 21.D 22.B 23.A 24.B 25.A 26.C 27.B 28.A 29.D 30.B 31.C 32.A 33.C 34.A 35.D 二、判断题 1.× 2.√ 3.√ 4.× 5.× 6.√ 7.√ 8.× 9.×10.√ 三、填空题 1.二进制2.Shift 3.CBE 4.人工智能5.大规模集成电路6.微型化、网络化7.计算机技术、通信技术8.经济实力、科学水平9.逢二进一10.集成性 第2章参考答案 一、单项选择题 1.C 2.A 3.C 4.D 5.C 6.D 7.B 8.D 9.A 10.D 11.B 12.C 13.D14.B 15.B 16.A 17.A 18.B 19.A 20.A 21.C 22.A 23.B 24.C 25.B 26.B 27.C 28.C 29.D 30.B 31.D 32.B 33.C 34.D 35.C 二、判断题 1.√2.×3.×4.√5.×6.√7.√8.√9.× 10.√11.√12.×13.√14.×15.√16.×17.× 三、填空题 1.运算器控制器2.操作码操作数3.1024 1024*1024 4.机器语言

5.内存储器外存储器6.GHz 7.控制总线8.数字摄像头 9.3C 10.主板芯片组 第3章参考答案 一、单项选择题 1.D 2.A 3.D 4.B 5.D 6.B 7.B 8.B 9.B 10.A 11.D 12.C 13.C 14.D 15.D 16.C 17.B 18.C 19.D 20.B 21.B 22.A 23.B 24.A 25.A 二、判断题 1.×2.√3.×4.×5.×6.√7.√8.√9.√ 10.×11.√12.√13.√14.×15.√16.√17.×18.√19.√20.√ 三、填空题 1.处理器管理存储管理设备管理文件管理用户接口2.Alt+PrintScreeen 3.Ctrl键4.注册表5.regedit 6.任务7.程序并发性资源共享性不确定性虚拟性 第4章参考答案 一、单项选择题 1.D 2.B 3.C 4.C 5.D 6.A 7.B 8.C 9.C 10.B 11.D 12.B 13.C 14.B 15.B 16.A 17.A 18.B 19.D 20.A 21.C 22.B 23.D 24.C 25.B 26.B 27.C 28.B 29.C 30.C 31.D 32.B 33.B 34.C 35.C 36.A 37.B 38.A 39.D 40.D 41.C 42.C 43.B 44.A 45.A 46.D 47.D 48.C 49.B 50.D 51.C 52.D 53.B 54.B 55.D 56. B 57. C 58. D 59. C 60. C 61.A 62.D 63.C 64.C 65.D 66.B 67.A 68.B 69.D 70.A 71.C 72.A 73.C 74.D 75.B 76.B 77.C 78.C 79.B 80.A 81.A 82.A 83.D 84.B 85.D 86.B 87.B 88.D 89.D 90.B

相关主题