文档库 最新最全的文档下载
当前位置:文档库 › 安徽大学C语言实验平台作业答案.docx

安徽大学C语言实验平台作业答案.docx

安徽大学C语言实验平台作业答案.docx
安徽大学C语言实验平台作业答案.docx

实验三 C基本数据类型及运算

1. 编程:根据需要定义相关变量,键盘输入、、三个实数分别赋给相关三个变量,输出该 3 个变量的和s、乘积 p 和平均值 a。

2.编程:输入球的半径,计算球体表面积和球体积。

3. 编程:定义 6 个变量,通过键盘将“ 10,- 10, 40000, a,, hello 这”六个值分别赋给相应变量,然

后在屏幕上输出变量的值(每行输出一个变量)。

4. 编程:从键盘接收 1 个字符给变量s1, 1 个字符串(允许带有空格)给字符数组s2,输出字符变量s1的ASCII码值及字符数组 s2 中的字符串。

5.编程:从键盘输入二个整数分别赋给整型变量a、b,将它们按由小到大的顺序输出。

6.编程:调用标准库函数 sin(x)计算 6800 的正弦值(此题为选做)。

7.编程:键盘输入一个实数赋给变量 x,计算 y=x*x*x+x*x+x 的值,分别输出 y 值、 y 值的整数部分和小数部分(此题为选做)。

8.编程:键盘输入四个整数分别赋给整型变量 a、 b、c、 d,用三目运算方法将它们按由大到小的顺序输出

(此题为选做)。

1. #include<>

main()

{float x,y,z,s,p,a;

scanf("x=%fy=%fz=%f",&x,&y,&z);

s=x+y+z;

p=x*y*z;

a=s/3;

printf("s=%f,p=%f,a=%f",s,p,a);

}

2. #include<>

main()

{float r,s,v;

printf("input r");

scanf("%f",&r);

s=4**r*r;

v=4/3**r*r*r;

printf("s=%f,v=%f",s,v);

}

3. #include<>

main()

{int a,b;long c;char d,st[6];float e;

scanf("%d%d%ld%c%f%s",&a,&b,&c,&d,&e,st);

printf("a=%d\n,b=%d\n,c=%d\n,d=%c\n,e=%f\n,ch=%s",a,b,c,d,e,st); }

4.#include<>

main()

{ char s1,s2[6];

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

printf("s1=%d,s2=%s",s1,s2);

}

5.#include<>

main()

{ int a,b;

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

if (a

printf("a=%db=%d",a,b);

else

printf("b=%da=%d",b,a);

}

6.#include<>

#include<>

main() {float

a,b;

scanf("%f",&a);

b=sin(a);

printf("%f",b);

}

7.#include<>

main()

{float x,y,b;int a;

scanf("%f",&x);

y=x*x*x+x*x+x; a=(int)y;

b=y-a;

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

}

实验四 C 分支结构程序设计

1.编程:从键盘输入一个字符,如是大写字母,则输出相应小写字母;如是小写字母,则原样输出;其它

字符输出“Not letter! 。”

2.编程:判断输入的正整数是否既是 3 又是 5 的整数倍。若是,输出 Yes,否则输出 No。

3.编程:从键盘输入三个整数,分别赋给变量a,b,c,输出其中的最大值(要求不改变a、b、c 的值)。

4.编程:用 scanf 输入任意两个数分别赋给变量 a、b,若 a 大于等于 b,则直接输出 a、 b,否则将 a、b

的值交换(即 a 的原值放入 b 中, b 的原值放入 a 中)后再输出。

5.编程:输入整数a和b,若a2+ b2大于 100,则输出 a2+ b2百位以上的数字,否则输出两数之和。

6.编程:从键盘输入三个整数,分别赋给变量a, b,c,请按从小到大的顺序依次输出a、b、 c(要求不改变 a、 b、c 的值)。

7.编程:从键盘输入三个整数,分别赋给变量a, b,c,请按从小到大的顺序依次将这三个数存放于a、

b、c 中,最后输出 a、 b、c。

8.编程:由系统生成一个 10 以内的随机整数,用户从键盘上输入一个10 以内的整数,如果两者相等输

出“OK”,否则输出“ERROR”。

srand((unsigned)time(NULL)); ,注:随机数的生成必须包含头文件 #include <>、#include <>,必须用初始化语

句表达式 rand()%a+1 的值为 1~a 内的随机整数

1.#include<>

main() {char x;

scanf("%c",&x);

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

printf("%c",x);

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

printf("%c",x+32);

else printf("Not letter!");

}

2.#include<>

main()

{int x;

scanf("%d",&x);

if (x>0)

{ if(x%3==0&&x%5==0)

printf("Yes\n");

else printf("No\n");}

else printf("Error!");

}

3.#include<>

main()

{int a,b,c,max; scanf("%d%d%d",&a,&b,&c);

max=a>ba:b; max=max>cmax:c;

printf("a=%d,b=%d,c=%d,max=%d",a,b,c,max);

}

4.#include<>

main() {float a,b;

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

if(a

{a=a+b;

b=a-b;

a=a-b;};

printf("a=%f,b=%f\n",a,b);

}

5.

#include<>

main()

{int a,b,t,r,s;

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

s=a+b;

r=a*a+b*b;

t=r/100;

if(r>100)

printf("%d",t);

else printf("%d",s);

}

6.

#include<>

int main()

{int a,b,c,d,max,min;

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

if(a>=b)

{max=a;

min=b;}

else

{max=b;

min=a;}

if(c>=max)

max=c;

if(c<=min)

min=c;

d=a+b+c-min-max;

printf("%d %d %d\n",min,d,max); }

7.

#include <>

main()

{ int a, b, c, d;

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

if(a>=b)

{d = a;

a = b;

b = d;}

else if(b>=c)

{d = b; b = c;

c = d; }

printf("a=%d b=%d c=%d",a,b,c); }

8.

#include<>

#include<>

#include<>

main()

{int a,b;

srand((unsigned)time(NULL));

b=rand()%10+1;

scanf("%d",&a);

printf("a=%d, 随机数 b=%d\n",a,b);

if(a==b)

printf("OK!\n");

else printf("ERROR!\n");

}

实验五 C 多分支结构程序设计* 1.编程:计算奖学金 ss 的值,已知奖学金 ss 与成绩 s 的关系为:

具体要求:

(1)用 if 语句实现分支结构的编程。

(2)s 为整型, ss 要求精确到小数点后二位。

(3)用 scanf 函数给 s 赋值,且输入前有相应提示。

(4)结果输出时采用以下形式:

成绩 s=具体值,奖学金ss=具体值

2. 设函数 f(x)如下,求函数函数法f(x)的值。

具体要求:

(1)用条件表达式编程。

(2)用 if 语句编程。

(3)用 scanf 函数给自变量赋值,且输入前有相应提示。

(4)结果输出时采用以下形式:

x=具体值, f(x)=具体值

(5)给出你所使用的测试用例。

提示:

f 或按 C 的语法规则,标识符由字母、数字、下划线组成,不能将f(x)作为变量名,本题中,函数名可起为

y 等。但作为非格式控制字符,f(x)完全可以出现在printf 函数的双引号内。

3. 编程:输入一个整数,判断它能否被3, 5, 7 整除,并输出以下信息之一:

(1)能同时被 3,5,7 整除。

(2)能被其中两数整除(指出是哪两个数)。

(3)能被其中一个数(指出是哪一个数)整除。

(4)不能被 3, 5, 7 任一个数整除。

4. 编程:用switch语句编写一个简单的计算器程序,输入格式为:data1 op data2 。其中data1和 data2为参加运算的两个数;op 为运算符,取值只能是+、 -、* 、/ 。

5.编程:计算你的出生日期是星期几。

(1)通过键盘输入你出生那一年的元旦是星期几

(2)通过键盘输入你的出生日期

(3)输出结果

1.

#include<>

main()

{int s; float ss;

printf("Please input s\n");

scanf("%d",&s);

if(s<0||s>100)

printf("ERROR!\n");

else {if(s>=0&&s<80)

ss=0;

else if(s>=80&&s<90)

ss=100+s;

else if(s>=90&&s<=100)

ss=200+s*3/2;

printf(" 成绩 s=%d,奖学金 ss=%\n",s,ss);

}

}

2.

#include<>

main()

{float x;int f;

printf("Please input x\n");

scanf("%f",&x);

if(x==0)

f=0;

else f=(x>0)1:-1;

printf("x=%f,f(x)=%d\n",x,f);

}

3.

#include<>

main()

{int x,a,b,c;

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

scanf("%d",&x);

a=x%3;

b=x%5;

c=x%7;

if(a==0&&b==0&&c==0)

printf("%d 能同时被 3,5,7 整除 \n",x);

else if(a==0 && b==0) printf("%d 能被 3,5 整除 \n" , x);

else if(a==0 && c==0) printf("%d 能被 3,7 整除 \n",x);

else if(b==0 && c==0) printf("%d 能被 5,7 整除 \n",x);

else if(a==0) printf("%d 能被 3 整除 \n",x);

else if(b==0) printf("%d 能被 5 整除 \n",x);

else if(c==0) printf("%d 能被 7 整除 \n" , x);

else printf("%d 不能被 3,5,7 任意一个数整除\n",x); }

4.

#include <>

main()

{char op;

float d1,d2;

printf(" 请输入算式 ");

scanf("%f%c%f",&d1,&op,&d2);

switch(op)

{case '+': printf("%g+%g=%g\n",d1,d2,d1+d2);break;

case'-': printf("%g-%g=%g\n",d1,d2,d1-d2);break;

case'*': printf("%g*%g=%g\n",d1,d2,d1*d2);break;

case '/': printf("%g/%g=%g\n",d1,d2,d1 /d2);break;

}

}

5.

#include<>

main()

{

int x,m,d;

printf(" 入你出生那年元旦的星期( 1 至 7): \n");

printf(" 入你的出生日期(mm/dd):\n");

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

switch ((m*30+d)/7)

{case 0:printf(" 你出生那天星期%d",x);break;

case 1:printf(" 你出生那天星期%d",x+1);break;

case 2:printf(" 你出生那天星期%d",x+2);break;

case 3:printf(" 你出生那天星期%d",x+3);break;

case 4:printf(" 你出生那天星期%d",x+4);break;

case 5:printf(" 你出生那天星期%d",x+5);break;

case 6:printf(" 你出生那天星期%d",x+6);break;

}

}

实验六 C 循环结构程序设计

1.程:出 200 以内所有能被 7 整除的数。

2.程:求出 1 ~ 1000 之能被 13 整除的最大的那个数。

3. 程:找出若干个非零数中的最小m 以及它的平均a。

要求:若干个数由入,每次入一个量x, x 零,束入。

4.程:求两个正整数 m、n 之所有奇数之和 x 与偶数之和 y。

要求:

(1)m、 n 的由入。

(2)入,允用随意先入大的或小的整数。

5. 程:算函数y 的。要求接收自量x 的,若 x 的不零,算函数y 的并出,再从

接收下一个x 的,??,直到 x 的零,示“Thank You,Bye!”,后束程序,已知函数y 与自量 x 的关系:

6. 程:算π的近似值,π的计算公式为:

要求:

(1)n 值由键盘输入。

(2)分别输出当 n 为 10、100、 1000 时的计算结果。

(3)输出时要求每行显示一组 n、π的值,每行形式如下:

n=具体值,π =具体值

7. 我国现有人口13 亿,设年增长率为1%,编写程序,计算多少年后增加到20 亿。

8.求解爱因斯坦数学题。有一条长阶梯,若每步跨2 阶,则最后剩余 1 阶;若每步跨 3 阶,则最后剩 2

阶;若每步跨 5 阶,则最后剩 4 阶;若每步跨 6 阶,则最后剩 5 阶;若每步跨7 阶,最后才正好一阶不剩。请问,这条阶梯最少共有多少阶

2 倍,直至购买的苹果个数达到不9. 每个苹果元,第一天买 2 个苹果,第二天开始,每天买前一天的

超过 100 的最大值。编程:求每天平均花多少钱(此题为选做)

1.

#include<>

main()

{int i;

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

{if(i%7!=0) continue;

printf("%d ",i);

}

}

2.

#include<>

main()

{int i,max=0;

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

{if(i%13!=0) continue;

if (max

max=i;

}

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

}

3.

#include<>

main()

{int i;float x,m,s,a;

scanf("%f",&x);

if(x!=0) {m=x;s=x;}

for(i=1;;i++)

{scanf("%f",&x);

if(x==0) break;

s=s+x;

if(m>x)

m=x;

}

a=s/i;

printf(" 最小值 m=%f,平均值 a=%f",m,a); }

4.

#include <>

void main()

{int i,m,n,t,x=0,y=0;

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

if(m>n){t=m;m=n;n=t;}

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

if(i%2)

x+=i;

else

y+=i;

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

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

}

5.

#include<>

main()

{

float x,y;

printf("input x:");

scanf("%f",&x);

for (;x>=0;)

{

if(x>0&&x<100)

{

y=3*x+1;

printf("%f",y);

}

else if(x>=100)

{

y=x*x-1;

printf("%f",y);

}

else

{printf("thank you bey !");break;} scanf("%f",&x);

}

}

6.

#include<>

main()

{

int n,i;

double t,sum;

printf(" 请输入 n 的值 \n"); scanf("%d",&n);

sum=2;

i=1;

t=2;

while(i

{

t=t*(2*i)*(2*i)/(2*i-1)/(2*i+1);

i=i+1;

}

printf("n=%d,π\n",n,t);=%f }

7.

#include<>

main()

{

double t=13,s=0;

while(t<=20)

{

t=t*(1+;

s++;

}

printf(" 需要经过 %lf 年 ",s);

}

8.

#include<>

main()

{

int x=7;

while( !(x%2==1&&x%3==2&&x%5==4&&x%6==5))

{

x=x+7;

}

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

}

9.

#include <>

main()

{float s=0;

int n=1,p=0,d=0;

do

{ d++;

n=n*2;

p=p+n;

}

while(p+n*2<=100);

s=p*d;

printf(" 每天平均花 %g 元钱 !\n",s);

}

实验七 C 多重循环结构程序设计

1.编程:输出 100 以内个位数为 6 且能被 3 整除的所有数。

2.编程:键盘输入 6 位学生的 5 门课成绩,分别统计出每个学生的平均成绩。

3.编程:输入一个正整数,统计该数的各位数字中零的个数,并求各位数字中的最大者。

4.编程:分别用 do while 、 while 、 for 三种循环结构求: 1!+2!+3!+...+n!,要求 n 的值由键盘输入。

5.编程:计算 100 至 1000 之间有多少个数其各位数字之和是5。

6.编程:从键盘输入的 10 个整数中,找出第一个能被 7 整除的数。若找到,输出此数后退出;若未找到,输出“not exist 。”

7.编程:输出 1 至 100 之间满足如下条件的数:各位数的乘积大于各位数的和。

8. 编程:将整数316 表示为两个加数的和,使这两个加数分别能被13 和 11 整除。

9.编程:打印出所有的 " 水仙花数 " 。所谓的 " 水仙花数 "是指一个 3 位数,其各位数字的立方和等于该数本身。例如, 153 是一个 "水仙花数 " ,因为有 153=1*1*1+5*5*5+3*3*3 。

10.编程:一条有 10 个车站的铁路线,共需要准备多少种车票

1.

#include<>

main()

{int i;

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

{if(i%10==6&&i%3==0)

printf("%d ",i);

}

}

2.

#include<>

main()

{int i,j,a[6][5];float s;

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

{s=0;

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

{printf(" 请输入第 %d 个学生的第 %d 门成绩 ",i+1,j+1); scanf("%d",&a[i][j]);

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

}

s=s/5;

printf(" 第 %d 个学生平均成绩为%f\n",i+1,s);

}

}

3.

#include<>

main()

{int x,i,max,t;

i=0;

max=0;

scanf("%d",&x);

do

{t=x%10;

if(t==0) ++i;

else if(max

x=x/10;

}

while(x);

printf("i=%d,max=%d",i,max);

}

4.

#include<>

main()

{int n,i,a,s=0;

printf(" 请输入 n:"); scanf("%d",&n);

a=1;

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

{a=a*i;

s=s+a;

}

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

}

#include<>

main()

{int n,i=1,a=1,s=0; printf(" 请输入 n:"); scanf("%d",&n); while(i<=n)

{a=a*i;

s=s+a;

i++;

}

print("s=%d",s);

}

#include<>

main()

{int n,i=1,a=1,s=0; printf(" 请输入 n:"); scanf("%d",&n);

do

{a=a*i;

s=s+a;

i++;

}

while(i<=n);

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

}

5.

void main()

{

int i,s,k,count=0;

for(i=100;i<1000;i++) {

s=0;

k=i;

while(k)

{

s=s+k%10;

k=k/10;

}

if(s!=5)

continue;

else

count++;

}

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

}

6.

#include <>

main()

{int x,i;

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

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

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

if(x%7==0)

{printf("first number is %d",x);break; }

}

if(i>10)

printf("not exist!");

}

7.

#include <>

main ( )

{int n,k=1,s=0,m ;

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

{k=1;s=0;m=n;

while (m>=1)

{k*=m%10;

s+=m%10;

m=m/10 ;

}

if(k>s)

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

}

}

8.

#include<>

main()

{int i=0,j,k;

do

{i++;

k=316-13*i;}

while(k%11);

j=k/11;

printf("316=13*%d+11*%d\n",i,j);

}

9.

#include<>

main()

{int i,j,k,n;

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

{ i=n/100; j=(n-

i*100)/10;

k=n%10;

if(i*i*i+j*j*j+k*k*k==n)

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

}

}

实验八 C 程序控制结构综合应用

1.编程计算:

s=1+12+123+1234+12345+123456+1234567。

2. 编程 : 找出 1 至 99 之间的全部同构数。所谓同构数是这样一组数:它出现在其平方数的右边。例如:5是25 右边的数, 25 是 625 右边的数, 5 和 25 都是同构数。

3.若用 0 至 9 之间不同的三个数构成一个三位数,编程统计共有多少种方法。

4.编程:键盘输入一个不多于 5 位的正整数,要求:(此题为选做)

(1)求它是几位数

(2)逆序打印出各位数字。如原数为123,输出则为321。

5.编程:找出以下疑案的作案人(此题为选做)

已知该案涉及 6 个嫌疑人 A、B、 C、D、E、F,并且:

(1)A、 B 至少有一人作案。

(2)A、 E、F 这 3 人中至少有 2 人参与作案。

(3)A、 D 不可能是同案犯。

(4)B、 C 或同作案,或与本案无关。

(5)C、D 中有且有一人作案。

(6)如果 D 没有作案, E 也不可能参与作案。

10 行(此做)6. 程:出下列形式的三角形的前

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

??

1.

#include<>

main()

{int s=0,i=1,t=0;

while(i<10)

{t=t*10+i;s+=t;i++;

}

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

}

2.

#include<>

main()

{int i;

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

if(i*i%10==i||i*i%100==i)

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

}

3.

#include <>

main()

{int i,j,k,count=0;

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

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

if(i==j) continue;

else for(k=0;k<=9;k++)

if(k!=i&&k!=j) count++;

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

}

实验九 C 的数组

1.编程实现:输入一个正整数 n(1

例如:输入 5,再输入三个数 8、 23、 1、7、19,则输出为: 19、7、 1、23、8。

2.编程实现:输入 10 个正整数,将它们中的最小值与第一个数交换,最大值与最后一个数交换,然后输

出交换后的 10 个数。

3. 编程实现:已知二次等差数列的前 4 项为2,5,10,17,请定义一维整型数组存储该数列的前20 项,并每5 个数为一行输出该数列的前20 项。

4.已知一组整型数据已按从小到大排列好,现任意输入一个整数,请按原来排序的规律将它插入到数组

中(例如:原来的一组整数为1,3,5,8,9,若输入的整数是7,则最终的结果为: 1,3,5,7,8,9),请编程实现。

5.编程:将一个 4×4的整型矩阵元素按副对角线(右上到左下)互换。

要求:

(1)键盘输入矩阵各元素的值。

(2)互换前,按矩阵形式输出矩阵。

(3)互换后,按矩阵形式输出矩阵。

6. 求一个 4×4的整数矩阵的副对角线(右上到左下)上所有奇数的和sum 及偶数的平均值ave。

要求:结果保留 2 位小数

7.通过循环按行顺序为一个 5×5的二维数组 a 赋 1 到 25 的自然数,然后输出该数组的左下半角元素的值和

它们之和。

8.定义一个实数型数组,将 10 个实数输入到数组中,编程实现任一块区间所有元素的平均值,即输入两

m 个元素 (若 n 值过大,即个数整数 m,n,计算出数组中第 m 个元素开始的后 n 个元素的平均值,包括第太多,

超过数组的最后一个元素,则统计到最后一个元素 )。

例如:数组元素为 ,,,,,,,,,,输入 3,5,则输出。

9. 一个整型数组有 10 个元素,编写程序删除所有值为n 的元素。如:数组中为1,3,2,4,2,7,9,0,2,5,n 的值为 2,删除后输出数组元素应该为1,3,4,7,9,0,5。(此题为选做)

10. 定义两个 N 行 N 列的二维数组 a、b,编写程序,将 a 数组最后一行放到中的第0 行放到 b 数组的最后一列中, b 所指二维数组中其他元素的数据不变。b 数组的第0 列中,把

(此题为选做)

a 数组

11. 试编程实现如下功能:先定义一个 4 行 5 列的数组(矩阵),调用库函数rand() 随机产生 20-50 之间的整数给数组元素赋值,再将矩阵中第二列与第四列的元素互换。要求先输出原数组,再输出交换后的数组

(rand 函数的使用请参阅教材259 页)。(此题为选做)

1.

#include<>

main()

{

int a[10],n,i;

scanf("%d",&n);

for(i=n-1;i>=0;i--)scanf("%d",&a[i]);

for(i=0;i

printf("\n");

}

2.

#include <>

main()

{

int n,i,a[10],max,min,t,r,p;

scanf("%d",&n);

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

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

min=a[1];

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

{

if (a[i]

{

min=a[i];

r=i;

}

}

t=a[1],a[1]=min,a[r]=t;

max=a[n];

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

{

if (a[i]>a[n])

{

max=a[i];

p=i;

}

}

t=a[n],a[n]=max,a[p]=t;

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

}

3.

#include <>

void main()

{int a[21],i;

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

{a[i]=i*i+1;

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

if(i%5==0)

printf("\n");

}

}

4.

#include <>

main()

{int a[10]={1,3,5,7,9,11,13,15,17},i,j,n; printf(" 请输入 1 个整数 ");

scanf("%d",&n);

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

if(a[i]>n)

{for(j=9;j>i;j--)a[j]=a[j-1];

a[i]=n;

break;

}

if(n>=a[8])a[9]=n;

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

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

printf("\n ");

}

6.

#include<>

main()

{int a[4][4],i,j,t=0;

float s1=0 ,s2=0,ave;

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

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

{printf("input 16 ints:");

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

}

}

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

{

相关文档