扬大C语言上机题

更新时间:2024-06-01 12:51:01 阅读量: 综合文库 文档下载

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

设n。是一个给定的正整数。对于i=0,1,2,6??,定义:若nI是偶数,则nI+1=nI/2; 若nI是奇数,则nI+1=3nI+1;若nI是1,则序列结束。编写一个void hailstones(int n),其功能是显示有n产生的所需要的序列。按每行6个数输出该数列中的所有数。编写main函数,在main函数中定义一个整型变量n,。

#include void hailstones(int n ) {int j,i=1;

printf(\while(n>1)

{for(j=0;j<6;j++) {printf(\if(n==1)break; if (n%2==0)n/=2 ; else n=3*n+1; i++ ;}

printf(\

}

printf(\} main()

{ int n;

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

编写程序,找出满足条件的整数 m 在(11,999)之间

m,m2,m3均为回文数。 设计函数int value(long m)判断m是否为回文数。若是,返回值为1,否则为0.编写main函数,求出(11,999)内满足的数。

void main()

{ long int m,i,j; for(m=11;m<=999;m++) {i=m*m;

j=m*m*m;

if(value(m)==1&&value(i)==1&&value(j)==1) printf(\getch(); }

int value(long m) { long a=0,k; k=m;

while(m)

{a=a*10+m; m=m/10;} if(a==k) return 1; else return 0; getch(); }

如果一个数及该数的反序数都是素数,则称该数为可逆素数。例如17是素数,17的反序数71也是素数,因此17便是一个可逆素数。编程要求:

(1)编写函数以下程序中,函数int f(int m,int n,int a[]),其功能是在[m,n]区间内查找所有可逆素数并将这些素数依次保存到a指向的数组中,函数返回a数组中可逆素数的数目。

(2)编写main函数,声明一个足够大的一维数组,并从键盘上输入2个正整数m和n(m

#include #include

int p(int n) { int i,j=sqrt(n); for(i=2;i<=j;i++) if(n%i==0) return 0; return 1; }

int convert(int n) { int m=0; while(n>0) { m=m*10+n; n=n/10; }

return m; }

int f(int m,int n,int a[]) { int i,j=0;

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

if(p(i)&&p(convert(i))) a[j++]=i; return j; } main()

{ int i,n,a[50]; n=f(50,150,a); for(i=0;i

整数145有一个奇怪的特性:145=1!+4!+5!。 编程要求:

(1) 编写函数int facsum(long x),其功能是判断长整型数x是否具有上述特性,如具有上述特性则返回值1,否则返回值0。

(2) 编写main(),在1~2000000内寻找具有此特性的数,并将满足该特性的数输出。

long fac(int x) { long int y=1; for(;x>0;x--)y*=x; return y;

}

int facsum(long x) { long sum=0; long y; y=x; while(y)

{ sum+=fac(y);y/=10;} if(sum==x)return 1; else return 0;} main() { long i;

for(i=1;i<=200000;i++) if(facsum(i))

printf(\getch(); }

1. 请编写函数int primecount(int a[],int m,int n),其功能是:找出[m,n]内的所有质数并依次将它们存储到a指向的一维数组中,函数返回[m,n]内质数的个数。编写main函数,声明一个长度为100的一维数组a,从键盘上输入m和n,用a、m、n作为实在参数调用函数primecount,将结果数组输出到屏幕,并输出[m,n]内质数的个数。

2. 编写函数int delnum(char s[]),其功能是:将s指向的字符串中的数字字符删除,函数返回被删除的数字字符的个数。编写main函数,声明一个长度为80的字符型数组item并用下列测试数据初始化,用item作为实在参数调用函数delnum,输出结果字符串及被删除的数字字符的个数。 测试数据为:my2009xy3com+ 输出结果为:myxycom+,5。

3. 请编写函数int palindrome(long *a,long m,long n),其功能是找出[m,n]内的所有回文数(回文数:顺读倒读其值都相同的数,例如12321),函数返回[m,n]内回文数的个数。编写main函数,声明一个长度为1000的长整型数组

a,从键盘输入长整型数m和n,用a、m、n作为实在参数调用函数palindrome,将结果数组输出至屏幕,并输出符合条件数的个数。例如,若m=100 n= 500,则输出结果为: 101 111 121 131 141 151 161 171 181 191 202 212 222 232 242 252 262 272 282 292 303 313 323 333 343 353 363 373 383 393 404 414 424 434 444 454 464 474 484 494 count=40

4.请按下列要求编写程序:(1)编写void change(int a[],int n),其功能是对a指向的长度为n的数组作如下调整:将所有的偶数调整到数组的前端;所有奇数调整到数组的后端。(2)设计main函数,声明一个长度为12的整型数组a,并用如下数据初始化:1,2,3,6,8,5,7,11,90,31,9,10,用a和12作为实在参数调用change函数,以便以分析数据的格式输出a数组变化前后的各元素的值。

5.请设计程序,将一字符串做压缩处理。编程要求如下:(1) 编写一个函数int compress(char s[]),将s中连续出现的多个相同字符压缩为一个字符,统计被删除的字符个数,返回被删除的字符个数;(2) 编写函数main,从键盘读入一行字符数据存入一个字符型数组中,调用compress函数对该字符数组中存储的字符做压缩处理,输出压缩后的字符串。

测试数据:

@@@@@@ I wwillll succesful &&&&&& and you too !!!!!!########## 运行结果:

@ I wil sucesful & and you to !# 30 /*1

#include #include int prime(int n) {

int i;

for(i=2;i<=n/2;i++) if(n%i==0)

return 0; return 1; }

int primecount(int a[],int m,int n) {

int k=0,i; for(i=m;i<=n;i++) if(prime(i)) a[k++]=i; return k; }

void main() {

int a[100],x,y,i,count; scanf(\count=primecount(a,x,y);

for(i=0;i

(i%5==0)?printf(\printf(\getch(); } */ /*2

#include #include int delnum(char s[80]) {

int i,j,n;

n=strlen(s);

for (i=0,j=0;s[i]!='\\0';i++) if (!(s[i]>='0'&& s[i]<='9')) { s[j]=s[i];j++;} s[j]='\\0';

return n-strlen(s); }

void main() {

char item[80]=\int n;

printf(\n=delnum(item); printf(\printf(\getch(); } */ /*3

#include #include void main()

{

long int a[1000],m,n; int i,count;

scanf(\count=palindrome(a,m,n); for(i=0;i

(i%5==0)?printf(\printf(\getch();

}

int palindrome(long *a,long m,long n) {

long x,y,i,k=0; for(i=m;i<=n;i++) { y=0; x=i; while(x) {

y=y*10+x; x/=10; } if(y==i) a[k++]=i; }

return k; } */ /*4

#include \

void change(int a[],int n) { int i=0,j=n-1,m; while(i

while(a[i]%2)i++; while(a[j]%2==0)j--; if(i

m=a[i],a[i]=a[j],a[j]=m; i++; j--; } } main()

{int i,n=12,a[12]={1,2,3,6,8,5,7,11,90,31,9,10}; for(i=0;i

#include \#include \int compress(char s[]) {int i,j,h=0; for(i=0;s[i];) if(s[i]==s[i+1]) { for(j=i;s[j];j++) s[j]=s[j+1];

s[j]='\\0'; h++; }

else i++; return h; } main()

{ char s[80]=\too !!!!!!##########\int i,m;

m=compress(s); printf(\printf(\printf(\getch(); } (2) */

#include \#include \int compress(char s[]) {char *p=s,*q; int h=0; while(*p)

{ q=p+1;

while(*q==*p)q++,h++; strcpy(p+1,q); p++; }

return h; }

main()

{ char s[80]=\too !!!!!!##########\int i,m; m=compress(s); printf(\printf(\

printf(\getch(); }

1. 请编写函数int twinborn(int a[][2],int m,int n),其功能是找出[m,n]中的所有孪生质数对(相差为2的两个质数称为孪生质数),并依次将每对孪生质数写到a指向的二维数组的每一行中。编写main函数,声明一个100×2的二维数组a,并从键盘上输入m和n的值,用a、m、n作为实在参数调用函数twinborn,将结果数组以行为单位输出至屏幕。例如,测试数据和运行结果如下:

input two numbers:10 100 11, 13 17, 19 29, 31 41, 43 59, 61 71, 73

2.请按下列要求编写程序:(1) 编写函数void fun(char x[]),其功能是在x指向的字符串中的所有数字字符之前分别插入1个字符'$';(2) 编写main函数,定义一个字符数组a,用测试数据中的数据初始化字符数组a,用a作为实在参数调用函数fun,输出结果字符串。 测试数据:a1b34cdef5

运行结果:a$1b$3$4cdef$5

3.要求40名学生对学生食堂的饭菜质量按照从1到10(1意味着非常不好,10表示非常好)进行打分,分别统计出打各分数的人数。请按下列要求编写程序:(1)编写void cont (int a[],int n, int b[]),其功能是对a指向的长度为n的整型数组中存储的分值作统计,统计结果依次存入b所指向的数组中;(2)设计main函数,声明一个长度为40的整型数组并用下列测试数据初始化,声明一个长度为11的数组b,用a、40和b作为实在参数调用cont函数,输出统计结果至屏幕。注意:b[1]中存放打分值1的人数,b[2]中存放打分值2的人数,依次类推。 测试数据:

1,2,6,4,8,9,10,2,3,4,2,3,4,5,4,6,7,8,6,9,1,6,7,8,7,6,9,10,8,6, 7,6,8,9,5,4,3,9,8,7

4. 请编写函数int twinborn(int a[][2],int m,int n),其功能是找出[m,n]中的所有孪生质数对(相差为2的两个质数称为孪生质数),并依次将每对孪生质数写到a指向的二维数组的每一行中。编写main函数,声明一个100×2的二维数组a,并从键盘上输入m和n的值,用a、m、n作为实在参数调用函数twinborn,将结果数组以行为单位输出至屏幕。例如,测试数据和运行结果如下:

input two numbers:10 100 11, 13 17, 19 29, 31 41, 43 59, 61 71, 73

5. 编程要求:(1)请编写函数int fun(int a[][3]),其功能是:找出符合下列命题的所有3位数:“若一个三位数是37的倍数,则将这个三位数的三个数字循环移位得到另两个三位数也是37的倍数”。例如,148是37的倍数,481和814也都是37的倍数。将满足条件的三位数及其循环移位后得到的另2个三位数依次写到形参a指向的二维数组中,函数返回三位数的组数(注意:尽量做到已经输出过的数,下次就不再输出。例如:148,481,841三个数算作一组)。(2)编写main函数,声明一个300×3的二维数组a,用a作为实在参数调用函数fun,输出所有满足上述条件的三位数。输出时,每组数据占一行。 /*1#include \int prime(int i) {int k;

for(k=2;k

}

int twinborn(int a[][2],int m,int n) { int k=0,i;

for(i=m;i<=n-2;i+=2) if(prime(i)&&prime(i+2)) a[k][0]=i,a[k][1]=i+2,k++;

return k; }

main()

{ int a[100][2],m,n,i; printf(\scanf(\if(!(m%2)) m+=1; if(m==1)

m+=2;

m=twinborn(a,m,n); for(i=0;i

printf(\getch(); }*/

/*2

#include \#include \void fun(char x[]) {int i,j; for(i=0;x[i];)

if(x[i]>='1'&&x[i]<='9')

{for(j=i;x[j]!=0;j++);j=j-1; {while(j>=i)

{x[j+1]=x[j];j--;} x[i]='$';i=i+2; } }

else i++; }

main()

{ char c[20]=\puts(c); fun(c);

printf(\getch(); } */

/*3

#include \

void cont (int a[],int n, int b[]) {

int i;

for(i=0;i<40;i++) b[a[i]]++; }

main()

{ int

a[40]={1,2,6,4,8,9,10,2,3,4,2,3,4,5,4,6,7,8,6,9,1,6,7,8,7,6,9,10,8,6, 7,6,8,9,5,4,3,9,8,7},b[11]={0},i,n=40; cont(a,n,b);

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

printf(\getch(); } */ /*5

(1)

#include #include int fun(int a[][3]) {

int n,y,k,m,q,b,c,i=0,x; for(n=100;n<1000;n++) {

if(n7==0) { k=n/100; m=n/10;

q=n;

if(k*m*q!=0&&((k==m)+(m==q)+(q==k)<3)) { b=100*m+10*q+k; c=100*q+10*k+m;

if(b7==0&&c7==0) {

a[i][0]=n; a[i][1]=b;

a[i][2]=c; i++; } } } }

return i; } main() {

int a[300][3],i,n; n=fun(a);

for(i=0;i

printf(\getch(); }*/

/*(2)*/

#include #include

int fun1(int n,int m,int a[][3]) { int i;

for(i=0;i

if(n==a[i][0]||n==a[i][1]||n==a[i][2]) return 0; return 1; }

int fun(int a[][3]) {

int n,y,k,m,q,b,c,i=0,x; for(n=100;n<1000;n++) {

if(n7==0) { k=n/100; m=n/10; q=n;

if(k*m*q!=0&&(k==m)+(m==q)+(q==k)<3&&fun1(n,i,a))

/*第1个条件去掉2位数,第2个条件去掉重复数字,第3个条件去掉前面出

现过的3位数*/ { b=100*m+10*q+k; c=100*q+10*k+m; if(b7==0&&c7==0) {

a[i][0]=n; a[i][1]=b; a[i][2]=c; i++; } } }

}

return i; } main() {

int a[300][3],i,n; n=fun(a);

for(i=0;i

printf(\getch(); }

4.任何各位数字不全相同的3位正整数经以下变换后均能变为495,称495为3位整数的黑洞数。变换步骤:对于任意一个各位数字不全相同的3位正整数,将组成该正整数的3个数字重新组合分别生成一个最大数和最小数,用最大数减去最小数得到一个新的3位数(不足3位时前面补0);再对新的3位数重复上述操作,最多重复7次。

编写程序,接收从键盘输入的一个3位正整数,判断各位数字是否不全相同,若不全相同,则实施上述变换,输出每步变换后得到的3位整数。

5.求1~100以内的“完备数”。一个数如果恰好等于除它本身之外的各个因子之和,则称该数为“完备数”。例如:6是完备数。因为6的因子为1,2,3,且6=1+2+3。

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

Top