第一范文网 - 专业文章范例文档资料分享平台

上机题总结

来源:用户分享 时间:2025/12/7 11:30:57 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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();}

搜索更多关于: 上机题总结 的文档
上机题总结.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2d7vb25h3n1emx12t1kk_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top