大学大一c语言程序设计实验室上机题全部代码答案实验报告.docx

上传人:b****5 文档编号:12216497 上传时间:2023-04-17 格式:DOCX 页数:49 大小:28.02KB
下载 相关 举报
大学大一c语言程序设计实验室上机题全部代码答案实验报告.docx_第1页
第1页 / 共49页
大学大一c语言程序设计实验室上机题全部代码答案实验报告.docx_第2页
第2页 / 共49页
大学大一c语言程序设计实验室上机题全部代码答案实验报告.docx_第3页
第3页 / 共49页
大学大一c语言程序设计实验室上机题全部代码答案实验报告.docx_第4页
第4页 / 共49页
大学大一c语言程序设计实验室上机题全部代码答案实验报告.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

大学大一c语言程序设计实验室上机题全部代码答案实验报告.docx

《大学大一c语言程序设计实验室上机题全部代码答案实验报告.docx》由会员分享,可在线阅读,更多相关《大学大一c语言程序设计实验室上机题全部代码答案实验报告.docx(49页珍藏版)》请在冰豆网上搜索。

大学大一c语言程序设计实验室上机题全部代码答案实验报告.docx

大学大一c语言程序设计实验室上机题全部代码答案实验报告

C语言实验报告

实验1-1:

helloworld程序:

源代码:

#include

main()

{

printf("helloworld!

\n");

system("pause");

}

实验1-2:

完成3个数据的输入、求和并输出计算结果的程序:

源代码:

#include

main()

{

inti,j,k,sum;

scanf("%d%d%d",&i,&j,&k);

sum=i+j+k;

printf("sum=%d",sum);

system("pause");

实验1-3:

在屏幕上输出如下图形:

A

BBB

CCCCC

源代码:

#include

main()

{

printf("A\n");

printf("BBB\n");

printf("CCCCC\n");

system("pause");

}

实验2-1:

计算由键盘输入的任何两个双精度数据的平均值

源代码:

#include

main()

{

doublea,b;

scanf("%lf%lf",&a,&b);

printf("%.1lf\n",(a+b)/2);

system("pause");

}

实验2-2:

写一个输入7个数据的程序,把输入的数据代入a+b*(c–d)/e*f–g表达式进行运算

源代码:

#include

main()

{

floata,b,c,d,e,f,g,x;

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

x=a+b*(c-d)/e*f-g;

printf("x=%f",x);

system("pause");

}

实验2-3:

编写一个C语言程序,测试下列各表达式:

i,j

i+1,j+1

i++,j++

++i,++j

i+++++j

源代码:

#include

main()

{

inti=1,j=1;

printf("%d%d\n",i+1,j+1);

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

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

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

system("pause");

}

实验2-4:

输入存款金额money,存期year和年利率rate,根据下列公式计算存款到期时的利息interest(税前),输出时保留2位小数。

interest=money(1+rate)year-money

源代码:

#include

#include

main()

{

intyear=2;

floatrate=0.1,money=1000;

floatfutureMoney;

futureMoney=money*pow((1+rate),year);

printf("%10.2f",futureMoney);

system("pause");

}

实验2-5:

输入华氏温度,输出对应的摄氏温度。

计算公式如下:

c=5*(f-32)/9

其中,c表示摄氏温度,f表示华氏温度

源代码:

#include

main()

{

intc,f;

scanf("%d",&f);

c=5*(f-32)/9;

printf("%d",c);

system("pause");

}

实验3-1:

编写一个程序完成输入一个整数,输出它的符号

源代码:

#include

main()

{

inti;

scanf("%d",&i);

if(i>0)

printf("+");

else

printf("-");

system("pause");

}

实验3-2:

请编写居民应交水费,并提供各种测试数据。

居民应交水费y(元)与月用水量x(吨)的函数关系式如下:

0x<0

y=f(x)=4x/30≤x≤15

2.5x–10.5x>15

源代码:

#include

main()

{

floatx,y;

scanf("%f",&x);

if(x<0)

printf("0");

elseif(x>=0&&x<=15)

{

y=4*x/3;

printf("%f",y);

}

elseif(x>15)

{

y=2.5*x-10.5;

printf("%f",y);

}

system("pause");

}

 

实验3-3:

请根据输入的学生成绩给出成绩等级的判断,判断规则如下:

如果输入的成绩大于等于90,则输出优秀;

如果输入的成绩小于90、大于等于80,则输出良好;

如果输入的成绩小于80、大于等于70,则输出中等;

如果输入的成绩小于70、大于等于60,则输出及格;

其他输出不及格

源代码:

#include

main()

{

intx;

scanf("%d",&x);

if(x>=90)

printf("优秀\n");

elseif(x>=80&&x<90)

printf("良好\n");

elseif(x>=70&&x<80)

printf("中等\n");

elseif(x>=60&&x<70)

printf("及格\n");

else

printf("不及格\n");

system("pause");

}

 

实验3-4:

运输公司对用户计算运费。

路程(s)越远,每公里运费越低。

标准如下:

s=250km没有折扣

250km≤s<500km2%折扣

500km≤s<1000km5%折扣

1000km≤s<2000km8%折扣

2000km≤s<3000km10%折扣

3000km≤s15%折扣

设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费的计算公式为:

f=p*w*s*(1–d)

请编程实现:

从键盘输入基本运费p,货物重w,距离s,计算输出用户最终需要支付的运费

源代码:

#include

main()

{

intp,w,s,f;

scanf("%d%d%d",&p,&w,&s);

floatd;

f=p*w*s*(1-d);

if(s=250)

{

d==0;

printf("%d",f);

}

elseif(s>=250&&s<500)

{

d==0.02;

printf("%d",f);

}

elseif(s>=500&&s<1000)

{

d==0.05;

printf("%d",f);

}

elseif(s>=1000&&s<2000)

{

d==0.08;

printf("%d",f);

}

elseif(s>=2000&&s<3000)

{

d==0.1;

printf("%d",f);

}

elseif(s>=3000)

{

d==0.15;

printf("%d",f);

}

system("pause");

}

实验4-1:

已知xyz+yzz=532,其中x、y、z都是数字(0~9),编写一个程序求出x、y、z分别代表什么数字

源代码:

#include

main()

{

intx,y,z;

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

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

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

if(100*x+10*y+z+100*y+10*z+z==532)

printf("%d%d%d",x,y,z);

system("pause");

}

实验4-2:

编写一个程序打印如下对称图形(行数由键盘输入1~9范围的值),例如下面是输入的数字4时的情形:

4444444

33333

222

1

222

33333

4444444

源代码:

#include

main()

{

inti,j,k,n;

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

scanf("%d",&n);

i=n;

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

{

k=i;

if(i>=n)

k=2*n-2-i;

for(j=0;j

printf("");

for(j=0;j<2*(n-k)-1;j++)

printf("%d",n-k);

printf("\n");

}

system("pause");

}

实验4-3:

学校有近千名学生,在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人,编写一个程序求该校的学生人数

源代码:

#include

main()

{

inti;

for(i=900;i<=1100;i++)

{

if(i%5==2&&i%7==3&&i%3==1)

{

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

break;

}

}

system("pause");

}

 

实验4-4:

学校某班A、B、C、D四位同学中的一位做了好事不留名,表扬信来了之后,班主任问这四位是谁做了好事,四位回答如下:

A说:

不是我。

B说:

是C。

C说:

是D。

D说:

他胡说。

已知三个人说的是真话,一个人说的是假话。

请根据这些信息,找出做了好事的人

源代码:

#include

main()

{

inti,j,a,b,c,d;

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

{

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

if(j==i)

switch(j)

{

case0:

a=1;b=0;c=0;d=0;

break;

case1:

a=0;b=1;c=0;d=0;

break;

case2:

a=0;b=0;c=1;d=0;

break;

case3:

a=0;b=0;c=0;d=1;

break;

default:

break;

}

if(a+b+c==1&&b+c==1&&c+d==1&&b+c+d==1)

printf("做好事的人是%c\n",i+'a');

}

system("pause");

}

 

实验5-1:

从键盘输入一个长度为N(比如10)的整型数组,而后将数组中小于零的元素移动到数组的前端,大于零的元素移到数组的后端,等于零的元素留在数组中间。

比如原来数组为:

2-5-89750-89093480,经过处理后的数组为:

-5-89-890007593482。

由于不要求数组有序,所以不允许用排序方法

源代码:

#include

#include

#defineN10

main()

{

inta[N]={2,-5,-89,75,0,-89,0,93,48,0};

inti,t,j;

for(i=0;i

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

printf("\n");

for(i=0;i

{

for(j=i+1;j

{

if(a[i]>0&&a[j]<0)

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

elseif(a[i]>0&&a[j]==0)

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

elseif(a[i]==0&&a[j]<0)

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

}

for(i=0;i

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

printf("\n");

system("pause");

}

 

实验5-2:

设数组a的定义如下:

inta[20]={2,4,6,8,10,12,14,16};已存入数组中的数据值已经按由小到大的顺序存放,现从键盘输入一个数据,把它插入到数组中,要求插入新数据以后,数组数据仍然保持有序。

请编写一个程序实现上述功能

源代码:

#include

main()

{

inta[9]={2,4,6,8,10,12,14,16};

inti,j,number;

printf("原数组\n");

for(i=0;i<=8;i++)//输出数组原有的元素

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

printf("\n");

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

scanf("%d",&number);

i=0;//以下三行找到插入位置

while(a[i]

i++;

for(j=7;j>=i;j--)//将插入点以后的元素顺序往后移一位

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

a[i]=number;//插入数据

printf("输出改变后的数组\n");

for(i=0;i<=8;i++)//输出插入后仍有序的数组

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

system("pause");

}

 

实验5-3:

写一个3x5矩阵的转置程序,输出其原矩阵的值和转置以后的结果

源代码:

#include

#include

main()

{

inti,j;

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

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

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

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

printf("\n");

}

printf("转置后的矩阵为\n");

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

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

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

printf("\n");

}

system("pause");

}

 

实验5-4:

编程实现随机产生10个位于区间[100200]互不相等的整数,并将其按降序排序和输出

源代码:

#include

#include

#include

#definerandom(x)(rand()%101+100)

main()

{

inti,j,k,n;//产生随机数

inta[10];

srand((int)time(0));

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

a[i]=random(200);

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

}

printf("\n");

for(i=0;i<=9;i++){//排序

k=i;

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

if(a[k]

n=a[i];

a[i]=a[k];

a[k]=n;

}

printf("排序后的数组为\n");

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

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

system("pause");

}

 

实验6-1:

写一个函数intdigit(intn,intk),它返回数n的从右向左的第k个十进数字值。

例如,函数调用digit(1234,2)将返回值3

源代码:

#include

#include

intdigit(intn,intk)

{

inti,j,a,b;

b=n%10;

a=(n/10)%10;

j=(n/100)%10;

i=(n/1000)%10;

n=1000*i+100*j+10*a+b;

if(k==1)

printf("%d",b);

elseif(k==2)

printf("%d",a);

elseif(k==3)

printf("%d",j);

elseif(k==4)

printf("%d",i);

}

main()

{

intx,y;

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

scanf("%d%d",&x,&y);

digit(x,y);

system("pause");

}

 

实验6-2:

写一个函数intisprime(intn),当n是质数时,函数返回非零值;当n是合数时,函数返回零值

源代码:

#include

#include

intisprime(intn)

{

inti;

for(i=2;i

if(n%i==0){//判断

return(0);

}

else{

return

(1);

}

}

main()

{

intx;

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

scanf("%d",&x);

printf("%d",isprime(x));

system("pause");

}

 

实验6-3:

写一个函数reverse(chars[]),将字符串s[]中的字符串倒序输出。

试分别用递归和非递归两种形式编写

源代码:

递归:

#include

#include

#include

voidres(chars[],intlen)

{

if(len>=0)

{

printf("%c",s[len-1]);

len--;

res(s,len);

getchar();

}

}

voidreverse(charb[])

{

res(b,strlen(b));

}

voidmain()

{

chara[100];

gets(a);

reverse(a);

system("pause");

}

 

源代码:

非递归:

#include

#include

voidreverse(chars[]);

voidmain()

{

chars[100];

gets(s);

reverse(s);

}

voidreverse(chars[])//非递归调用的reverse函数

{

intj,i=0;

do

{

i++;

}while(s[i]!

='\0');

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

printf("%c",s[j]);

printf("\n");

system("pause");

}

 

实验6-4:

写一个主函数输入测试数据(自己指定),并调用上述函数,检查函数功能的正确性

源代码:

#include

intmax(inta,intb)

{

if(a>b)

returna;

if(a

returnb;

}

main()

{

inta,b;

scanf("%d%d",&a,&b);

printf("%d\n",max(a,b));

}

 

实验6-5:

一个数如果从左到右和从右到左读,数字是相同的,则称这个数字为回文数,比如898、1221、15651都是回文数。

求:

既是回文数又是质数的5位十进制数有多少个?

要求:

回文判断和质数判断都需要通过子函数实现,输出的时候要求5个数字一行

源代码:

#include"stdio.h"

inthw(intn)

{

inta[5],i,k=n,j;

for(i=2;i

if(n%i==0)

return0;

else

{

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

{

a[i]=k%10;

k=k/10;

}

if(n==a[0]*10000+a[1]*1000+a[2]*100+a[3]*10+a[4])

return1;

else

return0;

}

}

intmain()

{

inti,s,j=0;

for(i=10000;i<=99999;i++)

{

s=hw(i);

if(s)

{

printf("%10d",i);

j++;

if(j%5==0)

printf("\n");

}

}

getchar();

system("pause");

}

 

实验6-6:

在n个已排好序(设为从小到大)的数据(数或字符串)中查找某一个数据,如果找到了,就指出其在n个数中的位置;否则给出无该数据的信息。

请用递归的方法实现二分查找来实现这一查找过程

源代码:

#include"stdio.h"

voidfound(ints[],intmax,intmin,intl)

{

intmid;

mid=(max+min)/2;

if(mid>max||mid

printf("此数不存在于此数列中!

");

else

{

if(s[mid]==l)

{

printf("该数在10个数中的位置是%d",mid+1);

}

elseif(s[mid]>l)

{

max--;

found(s,max,min,l);

}

else

{

min++;

found(s,max,min,l);

}

}

getchar();

}

intmain()

{

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

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

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

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