扬州大学C语言上机作业1-9整理

更新时间:2023-10-08 23:21:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

答案仅供参考

实验一

4.设计main函数实现从键盘上输入两个整型变量a、b的值,交换它们的值并输出。 #include void main() { inta,b,c;

printf(\\scanf(\

printf(\\scanf(\c=a; a=b; b=c;

printf(\getch(); }

5.设计main函数实现从键盘上输入两个整型变量a、b的值,并将b的值加入到a中,输出a的值。 #include

void main() { inta,b,c;

printf(\\scanf(\

printf(\\scanf(\c=a+b; a=c;

printf(\getch(); }

6.从键盘输入整数x的值,根据公式y=x3+3x2+x-10求y的值,输出x和y的值。 #include void main() { intx,y;

printf(\\scanf(\y=x*x*x+3*x*x+x-10; printf(\

getch(); }

实验二

1.编写程序,从键盘上输入一个整数(例如560)表示分钟,将其换算成用小时和分钟表示,然后输出至屏幕。 #include void main() {

inta,b,hour,min;

printf(\\ scanf(\ b=60; hour=a/b; min=a%b;

printf(\ getch(); }

1.编写程序,输入两个整数(例如1500和350),求出它们的商和余数并进行输出。

#include void main() {

inta,b,c,d; a=1500,b=350; c=a/b; d=a%b;

printf(\ getch(); }

3.编写程序,读入3个整数给分别变量a,b,c,然后将a,b,c的值输出到屏幕,再交换它们中的数值,把a中原来的值给b,把b中原来的值赋给c,把c中原来的值赋给a,然后再次输出a,b,c的值到屏幕。 #include void main() { inta,b,c,d;

printf(\ \scanf(\

printf(\ \scanf(\

printf(\ \

scanf(\

printf(\d=c; c=b; b=a; a=d;

printf(\getch(); }

4.编写程序,读入3个双精度数,求它们的平均值输出到屏幕。 #include void main() {

double sum=0; double a,b,c,d;

printf(\\ scanf(\

printf(\\ scanf(\

printf(\\ scanf(\ sum=a+b+c;

b=b*4*n*n/(2*n-1)/(2*n+1); }

printf(\ getch(); }

5. 请编程序求出满足如下条件的四位数n:(1)n的范围为[5000,8000];(2)n千位上的数减百位上的数减十位上的数减个位上的数大于零。编程要求:以每行5个输出满足条件的数及该类数的个数。 #include void main() {intn,a,b,c,d,k=0; for(n=5000;n<=8000;n++) {a=n/1000; b=n/100; c=n/10; d=n; if((a-b-c-d)>0) {printf(\k++;

if(k%5==0) printf(\ } }

printf(\getch(); }

6.请编程序求出满足如下条件的一个四位整数,它的9倍恰好是其反序数(例如,1234与4321互为反序数)。 #include void main() {intn,e,a,b,c,d;

for(n=1000;n<=9999;n++) { a=n/1000; b=n/100; c=n/10; d=n;

e=d*1000+c*100+b*10+a; if(9*n==e) printf(\ getch(); }

7.请编程序求出从键盘上输入的两个正整数a和b的最大公约数和最小公倍数。 #include

void main() { intm,n,r,x;

scanf(\ x=m*n; while(n!=0) { r=m%n; m=n; n=r; }

printf(\getch(); }

8.请编程序计算1!+2!+3!+…+n!的前10项之和。 #include void main() {

longsum,k; inti,j; sum=0;

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

{

for(j=1,k=1;j<=i;j++) { k*=j; } sum+=k; }

printf(\ getch(); }

实验四

1. 反序数。例如,123的反序数是321。请设计程序,从键盘上输入一个整数,求其反序数并输出。 #include \main() { intn,k; printf(\scanf(\k=0; while(n!=0) {k=k*10+n; n/=10;}

printf(\

getch(); }

2. 完备数。完备数是一些特殊的自然数,它所有的真因子(即除了自身以外的约数)之和恰好等于该数本身。例如,6=1+2+3,故6是一个完备数。请设计程序,找出500以内的所有完备数。 #include \void main() { intn,i,k;

for(n=1;n<=500;n++) { k=0;

for(i=1;i<=n-1;i++) {if(n%i==0) k+=i;} if(n==k) printf(\ } getch(); }

3. 回文数。一个数如果正读和倒读(即反序数)相同,称该数是回文数。例如,121、1331均为回文数。请设计程序,找出200~300之间的所有回文数,并以每行8个数输出至屏幕。

#include \void main() { intn,k,i,m=0;

for(n=200;n<=300;n++) { k=0; i=n; while(i!=0) {k=k*10+i; i/=10;} if(n==k) {m++; printf(\ }

if(m%8==0) printf(\ } getch(); }

4. 回文质数。一个数如果是回文数,同时又是质数,则该数被称为回文质数。请设计程序,找出100~500之间的所有回文质数,并以每行5个输出至屏幕。

#include \#include \void main() { intn,k,i,m;

for(n=100;n<=500;n++) { k=0; i=n; while(i!=0) { k=k*10+i; i/=10;} if(n==k)

{ for(m=2;m<=sqrt(n);m++) { if(n%m==0) break; }

if(m>sqrt(n)) {

printf(\account++; if(account%5==0)

printf(“\\n”); }

} }

getch(); }

5. 绝对质数。如果一个数和其反序数均为质数,则该数被称为绝对质数。如,13是质数,其反序数31也为质数,则13和31是一对绝对质数。请设计程序,找出200以内的绝对质数。 #include \#include \void main() { intn,k,i,m,a; for(n=1;n<=200;n++) { for(a=2;a<=sqrt(n);a++) {if(n%a==0) break; } if(a>sqrt(n)) { i=n,k=0; while(i!=0) { k=k*10+i; i/=10;}

for(m=2;m<=sqrt(k);m++) {if(k%m==0) break;

} if(m>sqrt(k)) printf(\ } } getch();

}

6. 平方镜反数。如果一个数的平方数,是其反序数的平方数的反序数,则称该数和其反序数是一对平方镜反数。例如,12的平方数是144,其反序数为21,21的平方数是441,其反序数是12的平方数144,故12和21是一对平方镜反数。请设计程序找出200以内的所有平方镜反数对。 #include \#include \void main() { intn,k,i,a,b;

for(n=1;n<=200;n++) { k=0; i=n;

while(i!=0) { k=k*10+i; i/=10;} a=k*k; b=0; while(a!=0) {b=b*10+a; a/=10;} if(b==(n*n)) printf(\ } getch(); }

7.黑洞数。黑洞数又称陷阱数,是类具有奇特转换特性的整数。任何一个数字不全相同整数,经有限“重排求差”操作,总会得到某个数,这些数即为黑洞数。“重排求差”操作即把组成该数的数字重排后得到的最大数减去重排后得到的最小数。

随便造一个四位数,如a1=1231,先把组成部分1231的四个数字由大到小排列得到a2=3211,再把1231的四个数字由小到大排列得a3=1123,用大的减去小的a2-a1=3211-1123=2088。把2088按上面的方法再作一遍,由大到小排列得8820,由小到大排列得288,相减8820-288=8532。把8532按上面的方法再作一遍,由大

1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1

4.下列程序的功能是将字符串中的数字字符删除后输出。程序中有些错误,试改正使其完成所要求的功能。 【源程序】 #include voiddelnum(char s[80]) { inti,j;

for (i=0,j=0;s[i]!='\\0';i++)

if (s[i]>'0'&& s[i]<'9') /*s[i]>=’0’&&s[i]<=’9’*/ {s[j]=s[i]; j++} /*s[i]=s[i+1];--I;*/ s[i]='\\0'; }

void main() {

char item[80]=\delnum(item);

printf(\getch(); }

5.请按下列要求编写程序:

(1)编写函数void fun(char x[]),其功能是在x指向的字符串中的所有数字字符之前分别插入1个字符'$';

(2)编写main函数,定义一个字符数组a,用测试数据中的数据初始化字符数组a,用a作为实在参数调用函数fun,输出结果字符串。

测试数据:a1b34cdef5 运行结果:a$1b$3$4cdef$5 #include #include void fun(char x[]) {inti,k;

for(i=0;x[i]!='\\0';i++) {if(x[i]>='1'&&x[i]<='9') {k=strlen(x);

while(k>i) {x[k]=x[k-1];k--;} x[i]='$'; i++; }

else continue; } x[i]='\\0'; }

void main() {

char a[20]={\fun(a); puts(a); getchar(); }

{k*=(x*x); m=-m; a+=2; b*=(a*(a-1)); sum+=((m*k)/b); term=(m*k)/b; }

sum=(-1)*sum*cos(x)/x; sum+=3.14/2; printf(\ getch(); }

实验六

3.水仙花数是指一个3位数,其各位数字的立方和等于该数本身。请完善下列程序中的函数int daffodil(int n),其功能是判断整数n是否为水仙花数,如是,则该函数返回值1,否则返回值0。注意,不能更改main函数。 #include int daffodil(int n) { int k=0,m; m=n;

do

{k+=(m)*(m)*(m); m/=10;}while(m); if(n==k) return 1; else return 0; } main() { intm,i=0;

for(m=100;m<1000;m++) if(daffodil(m)==1) { printf(\i++;

if(i%5==0)printf(\ } getch(); }

4. 请编写程序,找出满足如下条件的整数m:(1)该数在[11,999]之内;(2) m、m2、m3均为回文数。例如m=11,m2=121,m3=1331,11、121、1331皆为回文数,故m=11是满足条件的一个数。请设计函数int value(long m),其功能是判断m是否是回文数,如是,该函数返回值

1,否则返回值0。编写main函数,求出[11,999]内满足条件的所有整数。

#include int value(long m) {longs,n; s=0; n=m; while(n) {s=s*10+n; n/=10;} if(s==m) return 1; else return 0; } main() { long m;

for(m=11;m<1000;m++)

if(value(m)==1&&value(m*m)==1&&value(m*m*m)==1) { printf(\}

getch(); }

5.设n0是一个给定的正整数。对于i=0,1,2,…,定义:若ni是偶

数,则ni+1=ni/2;若ni是奇数,则ni+1=3ni+1;若ni是1,则序列结束。用这种方法产生的数称为冰雹数。请编写一个函数void hailstones(int n),其功能是显示由n产生的所要求的序列,按每行6个数输出该数列中的所有数。编写main函数,在main函数中定义一个整型变量n,从键盘上输入值77赋给n,用n作为实参调用函数hailstones。 测试数据:77↙ 输出结果:

Hailstones generated by 77: 77 232 116 58 29 88 44 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 Number of hailstones generated:23

#include void hailstones(int n); void main()

{int n;

scanf(\hailstones(n); getch(); }

void hailstones(int n) { inti;

printf(\ generated by 77:\\n\i=0; while(n!=1) {printf(\i++; if(n%2==0) n=n/2; else n=3*n+1; if(i%6==0) printf(\ }

printf(\i++;

printf(\

本文来源:https://www.bwwdw.com/article/u4cf.html

Top