C语言编程及上机题 联系客服

发布时间 : 星期三 文章C语言编程及上机题更新完毕开始阅读75d743e55ef7ba0d4a733b4b

#define N 4 main ( )

{ static a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12}; int i, j, sum1=0, sum2=0; for (i=0; i

{ sum1+=a[i][j]; printf(“=”, a[i][j]);} printf (“\\n”); }

sum2=fun (M, N, a[0]); sum1-=sum2;

printf (“%d %d\\n”, &sum1, &sum2); }

int fun(int m, int n, int arr[ ]) { int i, j, sum=0

for (i=0; i

50. 编程题:A数组有20个正整数,编写函数实现将这20个数进行压缩存储。算法如下:

如果某数只出现一次,保留该数。如果某数连续出现多次,只保留一个,删除其余重复出现的数。同时要将每个数出现的次数依次保存在B数组中。例如,b[0]的值为a[0]在原数组a中出现的次数。压缩后的数据仍存储在A数组。 编程要求:A数组的20个数在数组说明时赋值,即:

static int A[ ]={1,2,2,2,3,3,5,5,5,5,2,2,7,7,7,9,9,9,9,9}; 输出压缩后A数组和B数组的有效值到结果文件。

例如:压缩前:A[ ]:1,2,2,2,3,3,5,5,5,5,2,2,7,7,7,9,9,9,9 压缩后:A[ ]:1,2,3,5,2,7,9 B[ ]:1,3,2,4,2,3,5

51. 改错题:以下程序中merge函数将两个已按升序存放在数组A,B中的数列合并为一个

升序数列存放到数组C中。算法提示:先将数组A中的各个元素依次拷贝到数组C中,然后,依次从数组B中取一个元素,按其值的大小插入到数组C中(保持C中的数据按升序排序)。含有错误的源程序为: # include

void merge (int *, int , int *, int , int *); main ( )

{ static int a[ ]={1,3,5,7}, b[ ]={0,2,4,6,8}, c[10]; int i;

merge(a, 4, b, 5, c);

for (i=0; i<9; i++) printf(“M”, *(c+i)); printf(“\\n”); }

void merge(int *a, int ma, int *b, int mb, int c) { int ib=0, ic=0, i, j;

for(ic=0; ic

for(ib=0; ib

{ if(b[ib]>c[ic]) c[ic++]=b[ib];

else

{ for (i=0; i<=ic; i++) if (b[ib]

for(j=ic; j<=i; j――) c[j+1]=c[j]; c[i]=b[ib]; ic++; } } }

52. 编程题:假定在一个整型数组中,每一个元素是都不超过两位的正整数。试编程统计该数

组全部元素中数字0,1,??,9各出现多少次。将统计结果输出到结果文件中。 编程要求:采用以下方法为整型数组赋予指定的测试数据: static int a[ ]={5,26,74,56,1,27}; 53. 改错题(20分):本程序读入数组a[3][n]的前两行元素值,并根据同列的前两行元素

是素数还是合数(合数即百素数)产生同列的第三行元素。方法是:若某列第一、第二行元素为合数合数、合数素数、素数合数、素数素数,则该列第三行元素分别为字母A、B、C、D的ASCII码值。最后把数组a的元素写到文件myf1.out中,每写完a的一行元素要换行。

# include “stdio.h” # define n 5 isp(int m); { int i,p=1;

for (i=2; i<=sqrt(m); i++) if (m%i= =0) p=0; return(p); }

main ( )

{ int a[3][n], i ,j, x , c; for (i=0; i<=2; i++)

for (j=0; j

c=isp(a[0][j])+isp(a[1][j]); switch (c);

case 0: a[2][j]=’A’; break; case 1: a[2][j]=’B’; break; case 2: a[2][j]=’C’; break; case 3: a[2][j]=’D’; }

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

{ for (j=0; j

注:调试程序时,可以随意输入测试数据。最后运行本程序时,必须从键盘输入下列数据:

第一行元素:27 11 6 7 8 第二行元素:16 12 19 23 5 54. 编程题(20分):建立十六个元素的数组a,方法是:先置a[0]=55,其余元素按公式:

a[i ]=(15*a[i-1]+97)% 256

生成,然后对数组a进行如下操作:

(1)求出数组a的元素平均值,把平均值(取两位小数)写到文件myf2.out中。 (2)找出与平均值之差的绝对值最大的元素,并将其从a中删去。

(3)最后把数组a的元素写到文件myf2.out中。 55. 改错题(20分):本程序将输入字符串中的单词作变换后输出到文件myf1.out中,变

换方法是:将第2、4、6??个单词中的字母换成其对称字母(a与z对称,A与Z对称,b与y对称,B与Y对称,??等等),第1、3、5??个单词原样不变地输出,串中其它字符不输出,单词与单词之间空一格。最后将作了变换的单词个数写到文件myf1.out中。假定由非字母字符隔开的字母串叫做单词,而不管它是否有意义。输入字符串以‘#’号作为结束符。 char exch(char c) { char ch;

if ((c>=’a’) || (c<=’z’)) ch=’a’+’z’-c; else ch=’A’+’Z’-c; ruturn ch ; }

main ( )

{ char ch; int j, k;

ch=getchar(); k=0; j=0; while (ch= =’#’) { if (!((char>=’a’)&&(ch<=’z’) || (ch>=’A’)&&(ch<=’Z’))) k=0; else {

if (k= =0) {printf(“ ”); k=1; j++; };

if (j%2= =1) putchar(ch); else putchar(exch (ch)); }

ch=getchar (); }

getchar ( ); printf (“M\\n”, j); }

注:调试程序时,可随意输入测试数据。最后运行本程序时,须从键盘输入下列数据: FORtran Apl C Pascal Program # 56. 编程题(20分):编程验证下列命题:“若一个三位数是37的倍数,则将这个三位数的

三个数字循环移位得到另两个三位数也是37的倍数”。例如,148是37的倍数,481和颜悦色14也都是37的倍数。 若命题不正确,则在文件MYF2.OUT中写入“False”。若命题正确,则将所有满足一述条件的三位数写到文件MYF2.OUT中。输出时,每组数据占一行(例如:148,481,841三个数算作一组:111单独算作一组),已经输出过的数,下次就不能再输出。 57. 改错题(20分):本程序将输入字符串中的单词作变换后输出到文件myf1.out中,变

换方法是:将第1、3、5??个单词中的字母进行大小写转换(大写变小写,小写变大写),第2、4、6??个单词原样不变地输出,串中其它字符不输出,单词与单词之间空一格。最后把串中出现的单词个数也写到文件myf1.out中。假定由非字母字符隔开的字母串叫做单词,而不管它是否有意义。 # include char excase (char c) { char ch1;

if ((c>=’a’)&&(c<=’z’)) ch1=c-‘a’+’A’; else ch1=c+’A’ -‘a’; return ch1; }

main ( )

{ char ch ; int j, k;

ch=getchar ( ); k=0; j=1; while (ch /=’#’)

{ if (! ((ch>=’a’) && (ch<=’z’) || (ch=’A’)&&(ch<=’Z’))) k=0; else {

if (k=0) {putchar(‘ ‘);k=1; j++; }

if (j%2/=0) putchar (excase (ch)); else putchar (ch); }

ch=getchar(); }

getchar();printf(“M”,j); }

注:调试程序时,可以随意输入测试数据。最后运行本程序时,必须从键盘输入下列数据: tHE c pRograMming LangUage cOUrse # 58. 编程题(20分):将下列字符串变换成整数序列写到文件MYF2.OUT中。变换方法是:把串中的数字串拼成一个正整数,每个非数字字符取其ASCII码作为一个整数。假定拼数过程中不会因数值过大而发生整数越界现象。编程时可以从键盘输入以下字符串,或将字符串作为字符数组的初值。 aA434 Y457&+# (注:“#”只作字符串的结束标记,不参加变换,434和Y之间空一格) 59. 改错题(20分):本程序将输出数值在3到360之间的所有由6个素数组成的等差数列

及其个数。比如,其中一个等差数列为: 7 37 67 97 127 157 已知这样的等差数列首项至少是7,公差在30与70之间。 #define max 360 #define first 7 #define d0 30 #define dt 70 isp(int n)

{ int k, b; b=1; k=2; while (b&& (k

if (n%k!=0) b=0; else k++; return b; }

main ( )

{ int n, d, i , c;

d=d0; c=0; putchar(‘\\n’); while (d<=dt) { n=first;

while (n

if (isp(n)&&isp(n+d)&&isp(n+2*d)&&

isp(n+3*d)&&isp(n+4*d)&&isp(n+5*d)) { c++;

for (i=1; i<=6; i++) printf (m”,n+i*d); printf (“\\n”); n+=2; } d+=2; }