全国计算机二级C上机 编程题(2)

2019-03-29 14:34

for(i=0;i

{ a[i][j]=rand( ); printf(\ fun(a);

printf(\ for(i=0;i

for(j=0;j

01a?245193592786174384951 21则返回主程序后s的值应为3.375。注意不能重复计算,第一个for循环求出第一列与最后一列的和,第二个for循环求出第一行与最后一行(已除去两头元素),要注意第二个for中起始为1,最后为N-2。

#include #include #include #define N 5 double fun (int w[][N]) { int i,t=0; double s=0; for(i=0;i

{ int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};int i,j;double s; printf(\ for(i=0;i

printf(\ s=fun(a);

printf(\ printf(\13.请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。该题用for(i=0;i

-6-

中都要用到多重循环(一般为二重)。

#include \ #include \ #define M 3 #define N 4 void fun(int tt[M][N],int pp[N]) { int i,j; for(i=0;i

{ int t[M][N]={{22,45,56,30},{19,33,45,38},{20,22,66,40}}; int p[N],i,j,k; printf(\ for(i=0;i

for(j=0;j

printf(\

for(k=0;k

1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 则函数值为61。

该题的第一个for循环是计算矩阵的最上一行和最下一行的总和,第二个for是计算除两头元素以外的最左一列和最右一列的元素的和,最后sum就是周边元素的和。

#include #include #define M 4 #define N 5 int fun(int a[M][N]) { int sum=0,i; for(i=0;i

{ int aa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}}; int i,j,y; printf(\ for(i=0;i

for(j=0;j

printf(\

-7-

15.请编写一个函数 unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求出w的后n-1位的数作为函数值返回。例如:w值为5923,则函数返回923;若w值为923,则函数返回23。由于unsigned型整数在0-65535这间,只要它大于10000则对10000求余即得出后面4位,否则如果大于1000则对1000求余得出后3位数,这样一层一层往小的判断。由于return的作用除了返回值以外,还有当执行到return时就跳出该程序,所以可以连续的用if语句。 #include #include unsigned fun( unsigned w ) { if(w>=10000) return w000; if(w>=1000) return w00; if(w>=100) return w0; return w;} main( )

{ unsigned x;

printf( \ scanf( \

if(x<10) printf(\

else printf (\16.请编一个函数float fun(double h),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)。例如:若h值为8.32433,则函数返回8.32;若h值为8.32533,则函数返回8.33。h乘以1000后正好是原小数点后第三位做了新数的个位数,然后再进行加5运算时。如原小数点后第三位为4及以下则加5后还是不能进一位(即四舍),如是5及以上则加5后该位就要向前进一位数(即五入)。进行加5运算后除10再赋给一个整型变量此时就只有原小数点第二位及以前各位保留在整型变量中,最后再对整型变量除100,这样又出现了两位小数。该题中,进行四舍五入后一定要赋给一个整型变量才能将不用部分彻底变成0。

#include #include float fun(float h) { long t; h=h*1000; t=(h+5)/10;

return (float)t/100; }

main( ) { float a;

printf(\ scanf(\

printf(\ printf(\

printf(\

17.请编一个函数fun(char *s),该函数的功能是把字符串中的内容逆置。例如:字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。该题的算法是先分别找出字符串的两头,然后同时逐一往中间移动,每移动一次都进行两字符的位置对换,直到中间字符(用s+i

#include

-8-

#include #include #define N 81 fun(char *s)

{ int i=0,t,n=strlen(s); for(;s+i

{ t=*(s+i);*(s+i)=*(s+n-1-i);*(s+n-1-i)=t;} }

main( ) { char a[N];

printf(\

printf(\fun(a);

printf(\

printf(\puts(a); }

18.编写程序,实现矩阵(3行3列)的转置(即行列互换)。例如,若输入下面的矩阵: 100 200 300 则程序输出 100 400 700

400 500 600 200 500 800 700 800 900 300 600 900

这题的关键在于进行行列下标转换的算法,由矩阵的对称性我们不难看出在进行行列互换时a[j]在好是与a[j][i]互换,因而只要我位让程序走完矩阵的左上角即可(用for(i=0;i<2;i++)再套for(j=i+1;j<3;j++)来完成左上角的走动。

#include #include int fun(int array[3][3]) { int i,j,t;

for(i=0;i<2;i++) for(j=i+1;j<3;j++)

{t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;} }

main( ) { int i,j;

int array[3][3]={{100,200,300},{400,500,600},{700,800,900}}; clrscr();

for(i=0;i<3;i++) {for(j=0;j<3;j++)

printf(\printf(\fun(array);

printf(\for(i=0;i<3;i++) {for(j=0;j<3;j++)

-9-

printf(\printf(\}

19.编写函数fun,该函数的功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。 例如:若程序执行时输入字符串为:turbo c and borland c++

从键盘上输入字符n,则输出后变为:turbo c ad borlad c++ 如果输入的字符在字符串中不存在,则字符串照原样输出。

注:该题的算法是让i控制一个一个字符往后走,在移动过程中如果s[i]不是要删的字符,则将其按顺序放到新串中(新串亦是用s来做,只是用k来控制新串的下标,由于要删除一些元素,因此新串的下标总是比原下标i要慢。因而可用此法即同一字符串变量的方法。 #include #include int fun(char s[],int c) {int i,k=0;

for(i=0;s[i];i++)

if(s[i]!=c) s[k++]=s[i]; s[k]='\\0'; }

main( )

{ static char str[]=\char ch; clrscr();

printf(\printf(\

scanf(\fun(str,ch);

printf(\}

20.编写函数int fun(int lim,int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。

注:循环for(i=2;i=k)用于判断在上一个for()循环中i能否走到k,如果能则表示在2到k-1的数都不能整除k,即k为素数。 #include #include #define MAX 100

int fun( int lim, int aa[MAX]) { int i,j=0,k;

for( k=2; k=k) aa[j++]=k;} return j;

-10-


全国计算机二级C上机 编程题(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:社会资本与永续社区发展 概念探讨与研究议题

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

马上注册会员

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