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

C语言编程及上机题(2)

来源:网络收集 时间:2018-12-06 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

#include main ( )

{ static char s[20]=”abcdefghijk”; int i, j;

scanf (“%d%d”, i , j ); switch (delete (s, i, j )){ case -1:

printf (“No copy!\\n s=%s i=%d j=%d\\n”, s, i, j); break; case 0:

printf (“All right!\\n s=%s i=%d j=%d\\n”, s, i, j); break; case 1:

printf (“Local copy!\\n s=%s i=%d j=%d\\n”, s, i, j); } }

delete(char s, int i, int L) { int j, k; char *p;

while (*s&& i ) s++; i--; if (*s= =’\\0’) return (-1); p=s; j=L;

while (*p&& j ) p++; j--;

if (*p= =’\\0’) { *(s+1)=’\\0’; return(1); } while (*s= *s) s++; return 0; } 43. 改错题:将数组str中的若干个字符串按ASCII码的升序进行排序,将排序后的结果输

出。

#include #include main( )

{ int i, n=5;

static char str[ ]={“Follow Me”, “Basic Program”, “Great Wall”, “C Language”,“Computer System”};

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

printf(“%s\\n”, str[i]); sort(str, n);

for ( i=0; i

printf(“%s\\n”, str[i]); }

sort (char s[ ], int n) { int i, j, k; char *p;

for ( i=0; i

for (strlen(s[i])>0 && strlen(s[j]>0) if (strcmp(s[k], s[j])>0) k=j; if (k=j) { p=s[k];

s[k]=s[i]; s[i]=p; } )}

44. 下面程序的功能是:用选择法对7个学生的成绩按降序排序,并输出排序后的学生的姓

名和成绩。含有错误的源程序为: #include

struct student { char name[10]; float score; }; void sort(struct student *, int ); main()

{ static struct student stu[7]={{\

{\ int i;

sort(stu,7); for(i=0;i<7;i++)

printf(\}

void sort(struct student x[], int n) { int i,j,k; float t;

for(i=0;i

for(j=0;j

if(x[j].score>x[k].score) k=j;

if(k!=j){t=x[i]; x[i]=x[k]; x[k]=t;} } } 注意:

以下各题,每2题是历年等级考试的一份上机试卷,其中前一题是改错题,后一题为编程题。改错题的要求如下:

(1)把改错题所给的程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中错误进行修改。

(2)改错时,可以修改语句中的一部分,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。

(3)改正后的源程序(文件名myf1.c)必须放在考试盘的根目录上,供阅卷用。 编程题的要求如下:

(1)源程序名必须取为myf2.c,输出结果文件名必须取为myf2.out。 (2)数据文件的打开、使用、关闭均按TURBO C文件操作实现。

(3)源程序文件和运行结果文件,均需放在考试盘的根目录上,供阅卷用。 (4)不能将myf2.obj和myf2.exe保存到考试盘上。

45. 改错题:输入一行字符串,把该字符串中的每一个字母串的首字母都换成在写字母,并

输出转换后的字符串。如输入good mor23ning!,则输出为Good Mor23Ning!。注:字母串是以字母开头的字母序列(不区分大小写),即不同字母串这间用非字母隔开。 # include

int change (char *c, int flag)

{ if (flag= =0&&(*c<=?z?&&*c>=?a?||*c<=?Z?&&*c>=?A?)){ if (*c<=?z?&&*c>=?a?) c=c-?a?; return 1; }

else if (flag= =1&&(c<=?z?&&c>=?a?||c<=?Z?&&c>=?A?)) return 1; return flag; }

main ( )

{ int flag=0; char c;

for ( ; (c=gerchar( ))!=?\\n?;) { flag=change(c); putchar(c); }

putchar(?\\n?); }

46. 编程题:用筛选法求100以内的素数。算法为:(1)用一个一维数组a,其初值为:2,

3,4,5,6,7,8,9,?,100; (2)对每一元素a[i](i=1,2,?,99),若a[i]不等于0,则从该元素的后一个元素开始,凡是a[i]的倍数的数组元素均不是素数(置为0); (3)数组a中不为0的元素,均为素数。

47. 改错题:输入一行字符串,求出它所包含的字母串的个数及最长字母串的长度。注:以

字母开头的字母序列(不区分大小写)称为字母串,字母串之间用非字母作为分隔符。如:You are worker23too。其中字母串的个数为4,即:You、are、worker、too,其中最长字母串worker的长度为6。 # include # include main ( )

{ char s[300]; int i, j;

printf(“Input string :”); gets(s)

i=count(s, j);

if (i= =0) printf(“s=%s\\n No letter strings! \\n”, s);

else printf(“s=%s\\n max length is %d\\n number is %d\\n”, s, j, i ); }

count (char *p, int i ) { int j=0, k, m=0; char c;

while(p=) {

while (!((c=*p)>=?a? && c<=?z? || c>=?A? && c<=?Z?) && *p) p++; k=0;

if (*p!=?\\0?) m++; while (c=*p){ p++; k++; }

if (k>j) j=k; } *i=j; return m; } ?2244662n2n2?1?3?3?5?5?7?...?2n?1?2n?148. 编程题:求π的近似值:

-5

要求:先求出前2n项的π值,再求出2n+2项的π值,直至二者之差小于10为止。 49. 改错题:计算二维数组全部外侧元素之和及全部非外侧元素之和。含有错误的源程序为:

# include #define M 3

#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中删去。

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言编程及上机题(2)在线全文阅读。

C语言编程及上机题(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/346859.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: