计算机.docx

上传人:b****7 文档编号:10185196 上传时间:2023-02-09 格式:DOCX 页数:25 大小:143.41KB
下载 相关 举报
计算机.docx_第1页
第1页 / 共25页
计算机.docx_第2页
第2页 / 共25页
计算机.docx_第3页
第3页 / 共25页
计算机.docx_第4页
第4页 / 共25页
计算机.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

计算机.docx

《计算机.docx》由会员分享,可在线阅读,更多相关《计算机.docx(25页珍藏版)》请在冰豆网上搜索。

计算机.docx

计算机

第一章循环

1.1实验目的

(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法

(2)掌握字符数组和字符串函数的使用;

(3)掌握与数组有关的算法。

1.2实验要求

(1)在报告中记录建立、保存C程序实习过程。

(2)完成典型题目,分析遇到的困难和实验中的收获。

1.3实验基本内容

1.3.1题目一

打印出以下图案

*

***

*****

*******

*****

***

*

(1)题目分析:

本题主要是用for循环来实现,通过for循环的嵌套,分别控制行数,空格以及*,把图形分成上下两部分来处理。

(2)程序:

#include

main()

{

inti,j,k;

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

{

for(j=1;j<=8-2*i;j++)

printf("");

for(k=1;k<=2*i-1;k++)

printf("*");

printf("\n");

}

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

{

for(k=1;k<=2*i;k++)

printf("");

for(j=1;j<=7-2*i;j++)

printf("*");

printf("\n");

}

}

(3)运行结果:

 

1.3.2题目二

编写程序实现输入整数n,输出如下所示由数字组成的菱形。

(图中n=5)

1

121

12321

1234321

123454321

1234321

12321

121

1

(1)题目分析:

这个题也用到for循环的嵌套,通过逐项运算达到。

程序:

#include"stdio.h"

main()

{

inti,j,n;

scanf("%d",&n);

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

{

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

printf("%d",i);

for(i=j-1;i>=1;i--)

printf("%d",i);

printf("\n");

}

for(j=n-1;j>=1;j--)

{

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

printf("%d",i);

for(i=j-1;i>=1;i--)

printf("%d",i);

printf("\n");

}

return0;

}

}

(3)结果:

2思考题

1.以下不是死循环的语句是D。

A)for(y=1,x=9;x>++y;x=i++)i=x;

B)for(;;x++=i);

C)while

(1){x++;}

D)for(i=10;;i--)sum+=i;

2.下面程序段的运行结果是B。

x=y=0;

while(x<15)y++,x+=++y;

printf(“%d,%d”,y,x);

A)20,7B)6,12C)20,8D)8,20

3.以下for循环的执行次数是C。

for(x=0,y=0;(y=123)&&(x<4);x++);

A)无限循环B)循环次数不定C)4次D)3次

4.写出下面程序运行的结果。

2,0

main()

{inti,b,k=0;

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

b=i%2;

while(b--==0)k++;

}

printf(“%d,%d”,k,b);

 

5.写出下面程序运行的结果。

8

main()

{inta,b;

for(a=1,b=1;a<=100;a++){

if(b>=20)break;

if(b%3==1){b+=3;continue;}

b-=5;

}

printf(“%d\n”,a);

}

6.写出下面程序运行的结果。

36

main()

{intk=1,n=263;

do{k*=n%10;n/=10;}while(n);

printf(“%d\n”,k);

}

第二章数组

2.1实验目的

(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法

(2)掌握字符数组和字符串函数的使用;

(3)掌握与数组有关的算法。

2.2实验要求

(1)在报告中记录建立、保存C程序实习过程。

(2)完成典型题目,分析遇到的困难和实验中的收获。

2.3实验基本内容

第二次实验数组

1编程

1.1打印以下图案:

*****

*****

*****

*****

*****

(1)题目分析:

这个题与第一次实验的编程一题类似,只要用for控制行数·空格和*,就可以了。

(2)程序

#include

main()

{

inti,j,k;

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

{

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

printf("");

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

printf("*");

printf("\n");

}

}

实验结果:

1.2输入4×4的数组,编写程序实现:

(1)求出对角线上各元素的和;

(2)求出对角线上行、列下标均为偶数的各元素的积;

(3)找出对角线上其值最大的元素和它在数组中的位置。

程序

#include

voidmain()

{

inta[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

inti,j,m,n,Sum,Product,Max;

Sum=Max=m=n=0;

Product=1;

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

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

{

if(i==j)

{

Sum+=a[i][j];

if((i+1)%2==0&&(j+1)%2==0)

Product*=a[i][j];

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

{

Max=a[i][j];

m=i+1;

n=j+1;

}

}

}

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

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

{

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

if(j==3)

printf("\n");

}

printf("\n和:

%d\n积:

%d\n最大元素:

a[%d][%d]=%d\n",Sum,Product,m,n,Max);

}

实验结果:

2思考题

1.下面程序的输出结果是A。

main()

{charch[7]=”12ab56”;

inti,s=0;

for(i=0;ch[i]>’0’&&ch[i]<=’9’;i+=2)

s=10*s+ch[i]-‘0’;

printf(“%d\n”,s);

}

A)1B)1256C)12ab56D)ab

2.下面程序段的输出结果是B。

charc[5]={‘a’,’b’,’\0’,’c’,’\0’}

printf(“%s”,c);

A)’a’’b’B)abC)abcD)abc

3.mian()

{intm[][3]={1,4,7,2,5,8,3,6,9};

inti,j,k=2;

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

printf(“%d”,m[k][i]);

}

上程序输出的结果是:

C

A)456B)258C)369D)789

4.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为__C____.

(假设a[0][0]位于数组的第一个位置上。

a)i*m+jb)j*m+ic)i*m+j-1d)i*m+j+1

5.当运行下面程序时,从键盘上输入748915↙,则写出下面程序的运行结果。

main()

{inta[6],i,j,k,m;

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

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

for(i=5;i>=0;i--){

k=a[5];

for(j=4;j>=0;j--)

a[j+1]=a[j];

a[0]=k;

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

printf(“%d”,a[m]);

printf(“\n”);

}

}

第三章函数

3.1实验目的

(1)掌握定义函数的方法;

(2)掌握函数实参与形参的对应关系以及“值传递”的方式;

(3)掌握函数的嵌套调用和递归调用的方法;

(4)掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。

(5)学习对多文件程序的编译和运行。

3.2实验要求

(1)在报告中记录建立、保存C程序实习过程。

(2)完成典型题目,分析遇到的困难和实验中的收获。

3.3实验基本内容

1编程

1.1写一函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格。

如输入1990,应输出“1└┘9└┘9└┘0”。

(1)题目分析:

这个题主要是通过摸运算,除法运算把一个四位数各个位数分开。

(2)程序:

#include

main()

{

intx,i,j,k,l;

scanf("%d",&x);

if(x>999&&x<10000)

{

i=x/1000;

j=(x/100)%10;

k=(x%100)/10;

l=x%10;

printf("%d%d%d%d",i,j,k,l);

}

}

(3)运行结果:

输入1990后的截图为:

 

1.2用递归法将一个整数n转换成字符串。

例如,输入483,应输出字符串“483”。

n的位数不确定,可以是任意位数的整数。

(1)题目分析:

输入的数的范围在0~255,输出的是字符,超过这个就是原样输出了。

(2)程序:

#include

voidmain()

{

voidexchange(intn);

intn;

printf("输入一个整数\n\n");

scanf("%d",&n);

printf("输出是:

\n\n");

if(n<0)

{

putchar('-');

n=-n;

}

exchange(n);

printf("\n\n");

}

voidexchange(intn)

{

inti;

if((i=n/10)!

=0)exchange(i);

putchar(n%10+'0');

}

(3)运行结果

2思考题

1.fun(inta,intb)

{if(a>b)return(a);

elsereturn(b);

}

main()

{intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);

printf(“%\d\n”,r);

}

程序运行后的输出结果是D

A)3B)6C)8D)12

2.以下不正确的说法是D。

A)全局变量,静态变量的初值是在编译时指定的

B)静态变量如果没有指定初值,则其初值为0

C)局部变量如果没有指定初值,则其初值不确定

D)函数中的静态变量在函数每次调用时,都会重新设置初值

3.写出下面程序的运行结果。

#defineMAX10

inta[MAX],i;

sub1()

{for(i=0;i

}

sub2()

{inta[MAX],i,max;

max=5;

for(i=0;i

}

sub3(inta[])

{inti;

for(i=0;i

printf(“\n”);

}

main()

{sub1();sub3(a);sub2();sub3(a);

}

4.若输入的值是-125,写出下面程序的运行结果。

#include

fun(intn)

{intk,r;

for(k=2;k<=sqrt(n);k++){

r=n%k;

while(!

r){

printf(“%d”,k);n=n/k;

if(n>1)printf(“*”);

r=n%k;

}

}

if(n!

=1)printf(“%d\n”,n);

}

main()

{intn;

scanf(“%d”,&n);

printf(“%d=”,n);

if(n<0)printf(“-”);

n=fabs(n);fun(n);

}

5.写出下面程序的运行结果。

inti=0;

fun1(inti)

{i=(i%i)*(i*i)/(2*i)+4;

printf(“i=%d\n”,i);

return(i);

}

fun2(inti)

{i=i<=2?

5:

0;

return(i);

}

main()

{inti=5;

fun2(i/2);printf(“i=%d\n”,i);

fun2(i=i/2);printf(“i=%d\n”,i);

fun2(i/2);printf(“i=%d\n”,i);

fun1(i/2);printf(“i=%d\n”,i);

}

6.写出下面程序的功能。

func(intn)

{inti,j,k;

i=n/100;j=n/10-i*10;k=n%10;

if(i*100+j*10+k)==i*i*i+j*j*j+k*k*k)returnn;

return0;

}

main()

{intn,k;

for(n=100;n<1000;n++)

if(k=func(n))printf(“%d”,k);

}

功能是:

找出一个三位数,使它各位数的3次方的和等于这个数。

第四章指针

4.1实验目的

(1)掌握指针的概念,掌握定义和使用指针变量的方法。

(2)掌握使用数组的指针和指向数组的指针变量。

(3)掌握使用字符串的指针和指向字符串的指针变量。

(4)学习对多文件程序的编译和运行。

4.2实验要求

(1)在报告中记录建立、保存C程序实习过程。

(2)完成典型题目,分析遇到的困难和实验中的收获。

4.3实验基本内容

1编程

1.1编一程序,输入月份号,输出该月的英文月名。

例如,输入“3”,则输出“March”,要求用指针数组处理。

(1)题目分析:

这道题通过指针数组完成,把输入的月份对应的找到它的地址,然后输出。

(2)程序:

#include

voidmain(){

intn;

char*name[12]={"January","February","March","April","May","June","July","August","September","October","November","December"};

scanf("%d",&n);

printf("%s\n",name[n+1]);

}

 

(3)运行结果

 

1.2有一字符串,包含n个字符。

写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串

(1)程序:

#include

#include

#include

intstr(char*str1,char*str2,intn,intm)

{

char*p;

p=&str1[m-1];

if(m>n)

{

str2[0]='\0';

return1;

}

do

{

*str2++=*p++;

}

while(*p!

='\0');

*str2='\0';

return1;

}

intmain()

{

chara[9]="abcdefsf",b[80];

str(a,b,8,3);

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

system("pause");

return0;

}

(2)运行结果

2思考题

1.若要对a进行自减运算,则a应有下面说明A。

A)intp[3];B)intk;C)char*a[3]D)intb[10];

int*a=p;int*a=&k;int*a=b+1;

2.以下选项中,对指针变量p的不正确操作是C。

A)inta[3],*p;B)inta[5],*p;C)inta[5];D)inta[5]

p=&a;p=a;int*p=a=100;int*p1,*p2=a;

*p1=*p2;

3.下面程序段的输出是C。

inta[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k;

for(k=01k<4;k++)q[k]=&a[k*3];

printf(“%d\n”,q[3][0]);

A)8B)16C)20D)输出不合法

4.下面程序的运行结果是B。

main()

{intx[5]={2,4,6,8,10},*p,**pp;

p=x,pp=&p;

printf(“%d”,*(p++));

printf(“%3d”,**pp);

}

A)44B)24C)22D)465.写出下面程序的运行结果。

5

func(char*s,chara,intn)

{intj;

*s=a;j=n;

while(*s

returnj;

}

main()

{charc[6];

inti;

for(i=1;i<=5;i++)*(c+1)=’A’+i+1;

printf(“%d\n”,fun(c,’E’,5));

}

第五章综合练习

5.1实验目的

(1)掌握指针的概念,掌握定义和使用指针变量的方法。

(2)掌握使用数组的指针和指向数组的指针变量。

(3)掌握使用字符串的指针和指向字符串的指针变量。

(4)学习对多文件程序的编译和运行。

5.2实验要求

(1)在报告中记录建立、保存C程序实习过程。

(2)完成典型题目,分析遇到的困难和实验中的收获。

5.3实验基本内容

1编程

1.1编写一个程序计算下式之和。

1+(1+2)+(1+2+3)+(1+2+3+4)+…...+(1+2+3+4+5+6+7+8+9+10)

(1)题目分析:

(3)程序:

#include

main()

{

inti,j;

intsum=0;

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

{

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

sum+=j;

}

printf("%d",sum);

}

(3)运行结果

 

1.2在主函数中输入一个字符串,然后删除该字符串里面所有的空格,并打印删除空格后的字符串。

(用指针)

(1)程序:

#include

#include

#include

char*fun(char*str)

{

   inti=0;

   intj=0;

   for(;i

   {

        if(str[i]!

='')

        {

            str[j++]=str[i];

        }

   }

   str[j]='\0';

   returnstr;

}

voidmain()

{

   chars[81],*ds;

   printf("\nPleaseenterastring:

");

   gets(s);

   ds=fun(s);

   printf("\nResult:

%s\n",ds);

}

(3)运行结果

 

2.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是B。

A)c=*p1+*p2B)p2=cC)p1=p2D)c=*p1*(*p2)

3.若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是A。

A)(*p)max(a,b)B)*pmax(a,b);C)(*p)(a,b);D)*p(a,b);

4.写出下面程序的运行结果:

6

fun(char*s)

{char*p=s;

while(*p)p++;

return(p-s);

}

main()

{char*a=”abcdef”;

printf(“%d\n”,fun(a));

}

5.当运行以下程序时,写出输入6↙的程序运行结果。

976531

sub(char*a,charb)

{while(*(a++)!

=’\0’);

while(*(a-1)

*(a--)=*(a-1);

*(a--)=b;

}

main()

{chars[]=”97531”,c;

c=getchar();

fun(s,c);puts(s);

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1