上机题总结

2018-12-19 22:38

C语言上机编程题总结

石寅斌

第一部分 前十次上机题汇总

1. 一个较大的偶数可分解为两个质数之和。编程要求:(1)编写函数int guess(int

a[][3],int m,int n),其功能是将[m,n]内任一偶数i分解成两个质数k和j之和(得到验证即可,如果有多个答案,只取一个),将i,j,k依次写到a指向的二维数组一行中的三个元素中,函数返回实际写入二维数组中的行数;(2)编写main函数,定义一个行数为100列数为3的二维数组a,用a作为实在参数,调用guess函数求出[6,20]内偶数的分解情况,并按行的形式输出a数组中的元素。 #include a[p][2]=j;p++;break;} #include } int prime(int p) } {int g,h; h=sqrt(p); } for(g=2;g<=h;g++) if(p%g==0) return 0; void main() if(g>h) return 1;} { int guess(int a[][3],int m,int n) int i,j,a[100][3]; { int i,k,j,p=0; guess(a,6,20); for(i=m;i<=n;i+=2) for(i=0;i<8;i++) { for(k=3;k<=i/2;k+=2) {for(j=0;j<3;j++) if(prime(k)) printf(\ {j=i-k;if(prime(j)) printf(\ {a[p][0]=i; getch(); a[p][1]=k; }

2.请按下列要求编程:(1)请编写函数int fun(int a[]),其功能是:在三位数(100至999)中寻找符合下列条件的整数并按从小到大的顺序存入a指向的数组中,条件为:它是一个完全平方数,且有两位数字相同(例如144、676是满足条件的数),函数返回满足条件的该类数的个数。(2)编写main函数,定义一个长度为100的整型数组a,用a作为实在参数调用函数fun,将满足条件的依次存入a数组中,输出在给定范围内满足条件的数及这类数的个数 #include return sum; #include } int fun(int a[]) main() { int i,d,b,c,m,sum=0,p=0; { for(i=101;i<999;i++) int a[100],t,i; {m=sqrt(i); t=fun(a); d=i/100;b=i/10;c=i; printf(\if((d==b)+(d==c)+(b==c)>=1&&i==for(i=0;a[i]!='\\0';i++) m*m) printf(\{sum++;a[p]=i;p++;} getch();}

3.设n0是一个给定的正整数。对于i=0,1,2,…,定义:若ni是偶数,则ni+1=ni/2;若ni是奇数,则ni+1=3ni+1;若ni是1,则序列结束。用这种方法产生的数称为冰雹数。请按下列要求编程:(1)编写一个函数int hailstones(int n,int a[]),其功能是将按公式生成的从n到1为止的序列中的数依次存放到a指向的数组中,函数返回符合条件的序列中数据的个数;(2) 编写main函数,定义一个长度为100的一维数组a,从键盘上输入任一种子n,用n和a作为实在参数调用函数hailstones,最后按每行6个数输出数组中的数。

#include

int hailstones(int n,int a[]) { int p=0,sum=0; while(n!=1) { a[p]=n; if(n%2==0) n=n/2;

else n=3*n+1; sum++;p++; } a[p]=1;

return sum+1;

}

void main() {

int a[100],n,t,i,m=0; scanf(\t=hailstones(n,a); printf(\for(i=0;a[i]!='\\0';i++) {printf(\

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

4.找出满足如下条件的整数m:(1)该数在[11,999]之内;(2) m、m2、m3均为回文数。例如m=11,m2=121,m3=1331,11、121、1331皆为回文数,故m=11是满足条件的一个数。请按下列要求编程:(1)请编写函数int plalindrome (long a[][3],int m,int n),其功能是将[m,n]内符合条件的数i,i2,i3依次写到a指向的二维数组的一行中,函数返回满足条件数的个数(即为所写二维数组的有效行数);(2) 编写main函数,声明一个行数为100列数为3的二维数组a,从键盘上输入区间[m,n]的端点值,用a、m和n作为实在参数调用函数plalindrome,并按行的形式输出所有满足条件的数及其平方数和立方数。

#include int value(long m) { long t=0,b; int a;b=m; while(m)

{a=m;m=m/10;t=t*10+a;} if(t==b) return 1; else

return 0; }

int plalindrome(long a[][3],int m,int n) {long i,sum=0; for(i=m;i<=n;i++)

if(value(i)+value(i*i)+value(i*i*i)==3) {

a[sum][0]=i;a[sum][1]=i*i;a[sum][2]=i*i*i;

sum++; } return sum;} main() {int t,i,j;

long a[100][3];

t=plalindrome(a,11,999); printf(\ for(i=0;i

printf(\ printf(\ getch(); }

5.请按下列要求编程:(1)编写函数int primecount(int a[],int m,int n),其功能是:找出[m,n]

内的所有质数并依次将它们存储到a指向的数组中,函数返回[m,n]内质数的个数。(2)编写main函数,声明一个长度为100的一维数组a,从键盘上输入m和n,用a、m、n作为实在参数调用函数primecount,将结果数组输出到屏幕,并输出[m,n]内质数的个数。调试程序时可在main函数中输入m、n的值分别为100和200。

#include } #include main() int primecount(int a[],int m,int n) { {int i,g,sum=0,p=0; int m,n,t,i,a[100];scanf(\ for(i=m;i<=n;i++) t=primecount(a,m,n); {for(g=2;gsqrt(i)) printf(\ {sum++;a[p]=i;p++;} getch(); } } return sum;

6. 已知整型数组中的元素值在0~9范围内,编程统计每个整数的个数。

#include #include void getdata(int *s) { int i;

for(i=0;i<50;i++) s[i]=rand(); }

void stat(int *a,int *c) { int i;

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

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

main()

{int i,a[50],c[10]={0}; getdata(a); stat(a,c);

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

printf(\getch(); }

7.下列程序的功能是将字符串中的数字字符删除后输出。

#include

void delnum(char s[80]) {

int i,j;

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

void main() {

char item[80]; gets(item); delnum(item); puts(item); getch(); }

8将一字符串做压缩处理。函数int compress(char s[])的功能是将s中连续出现的多个相同字符压缩为一个字符,统计被删除的字符个数,返回被删除的字符个数。

#include } int compress(char s[]) main() { { int i,j,sum=0,n=0; int n; for(i=j=0;s[i];i++) char str[100]; { while(s[i]==s[i+1]) gets(str); {i++;n++;} n=compress(str); sum+=n;n=0; printf(\ %s\\n\ s[j++]=s[i];} getch(); s[j]='\\0'; } return sum;

9.编写函数void fun(char x[]),其功能是在x指向的字符串中所有的数字字符之前分别插入一个字符$。 #include b[j+1]='\\0'; void fun(char x[]) puts(b); { } int i,j; main() char b[40]; { for(i=0,j=0;x[i]!='\\0';i++,j++) char a[100]; { gets(a); if(x[i]>='0'&&x[i]<='9') fun(a); { b[j]='$';j++;} getch(); b[j]=x[i]; }}

10.在m行n列的二维数组找出最小的元素,然后将该元素所在行与最后一行交换,将该元素所在列与最后一列交换。

#include #define M 3 #define N 4 main()

{int x,k,j,com,col,t; int

a[M][N]={12,1,56,34,10,2,45,3,9,7,4,65};

for(k=0;k

printf(\ printf(\printf(\

x=a[0][0];com=0;col=0; for(k=0;k

for(j=0;ja[k][j])

{com=k;col=j;x=a[k][j];} for(k=0;k

{t=a[k][col];a[k][col]=a[k][N-1];a[k][N-1]=t;} for(k=0;k

{t=a[com][k];a[com][k]=a[M-1][k];a[M-1][k]=t;} for(k=0;k

printf(\ printf(\ getch();}

11.打印杨辉三角形。

#include void main() {

int i,j; int a[6][6];

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

{a[i][0]=1 ;a[i][i]=1;} for(i=2;i<6;i++) for(j=1;j<=i-1;j++)

a[i][j]=(a[i-1][j-1]+a[i-1][j]); for(i=0;i<6;i++) {for(j=0;j<=i;j++) printf(\ printf(\ getch(); }

12.编写函数void find odd(int odd[],int n),其功能是找到n个连续奇数,满足n的立方等于这些连续奇数之和。并将这些奇数存放到数组odd中。

#include\

void find_odd(int odd[],int n) {int b;

odd[0]=n*n-n+1; for (b=1;b

main() { int n,i;

int a[100];

scanf(\ find_odd(a,n); printf(\ printf(\

for (i=0;i< n-1;i++) {printf(\ printf(\

printf(\ getch(); }

13.调用selsort函数实现将数组中的3~8个元素案升序排列。 #include void selsort(int a[],int n) } {int i,j,k,t; void main() for(i=2;ia[j]) k=j; selsort(a,10); t=a[i]; for(i=0;i<10;i++) a[i]=a[k]; printf(\ a[k]=t; getch(); } }

14.归并排序。 #include i=j=k=0; void main() while((a[i]!=max)||(b[j]!=max)) { int a[10]={1,2,5,8,9,10},an=5; if(a[i]


上机题总结.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:VBA常用函数

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: