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
2.请按下列要求编程:(1)请编写函数int fun(int a[]),其功能是:在三位数(100至999)中寻找符合下列条件的整数并按从小到大的顺序存入a指向的数组中,条件为:它是一个完全平方数,且有两位数字相同(例如144、676是满足条件的数),函数返回满足条件的该类数的个数。(2)编写main函数,定义一个长度为100的整型数组a,用a作为实在参数调用函数fun,将满足条件的依次存入a数组中,输出在给定范围内满足条件的数及这类数的个数 #include
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
{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 6. 已知整型数组中的元素值在0~9范围内,编程统计每个整数的个数。 #include 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 9.编写函数void fun(char x[]),其功能是在x指向的字符串中所有的数字字符之前分别插入一个字符$。 #include 10.在m行n列的二维数组找出最小的元素,然后将该元素所在行与最后一行交换,将该元素所在列与最后一列交换。 #include {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;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();}
相关推荐: